前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >矩阵/向量的范数

矩阵/向量的范数

作者头像
Steve Wang
发布2019-05-26 15:04:30
7490
发布2019-05-26 15:04:30
举报
文章被收录于专栏:从流域到海域从流域到海域

来自吴恩达 深度学习 第二周作业第一部分和三位图灵奖获得者的著作花书《Deep Learning》。

代码语言:javascript
复制
# GRADED FUNCTION: normalizeRows
import numpy as np

def normalizeRows(x):
    """
    Implement a function that normalizes each row of the matrix x (to have unit length).
    
    Argument:
    x -- A numpy matrix of shape (n, m)
    
    Returns:
    x -- The normalized (by row) numpy matrix. You are allowed to modify x.
    """
    
    ### START CODE HERE ### (≈ 2 lines of code)
    # Compute x_norm as the norm 2 of x. Use np.linalg.norm(..., ord = 2, axis = ..., keepdims = True)
    x_norm = np.linalg.norm(x, axis=1, keepdims = True)

    x = x / x_norm

    return x

其中ord指定范数的阶数。

范数简述

我们知道距离的定义是一个宽泛的概念,只要满足非负、自反、三角不等式就可以称之为距离。

范数是一种强化了的距离概念,它在定义上比距离多了一条数乘的运算法则。有时候为了便于理解,我们可以把范数当作距离来理解。

即表示一种到坐标原点距离的度量。

例如:二阶范数(也称L2范数)是最常见的范数,即欧几里得距离。

LpL^pLpnorm

∣∣x∣∣p=(∑i(xi)p)1p||x||_p=(\sum_i(x_i)^p)^{\frac{1}{p}}∣∣x∣∣p​=(i∑​(xi​)p)p1​

更加严谨的定义:

范数即为满足以下三个性质的函数:

  • f(x)=0⇒x=0f(x)=0\Rightarrow x=0f(x)=0⇒x=0
  • f(x+y)≤f(x)+f(y)f(x+y) \leq f(x)+f(y)f(x+y)≤f(x)+f(y) (the triangle inequality)
  • ∀α∈R,f(αx)=∣α∣f(x)\forall \alpha \in \mathbb{R},f(\alpha x)=|\alpha|f(x)∀α∈R,f(αx)=∣α∣f(x)
Euclidean norm L2normL^2 normL2norm

∣∣x∣∣2=(∑i(xi)2)||x||_2=\sqrt{(\sum_i(x_i)^2)}∣∣x∣∣2​=(i∑​(xi​)2)​

当p=2p = 2p=2时,L2L_2L2​范数被称为欧几里得范数(Euclidean norm)。它表示从原点出发到向量x 确定的点的欧几里得距离。L2L_2L2​范数在机器学习中出现地十分频繁,经常简化表示为∥x∥∥x∥∥x∥,略去了下标2。平方L2L_2L2​范数也经常用来衡量向量的大小,可以简单地通过点积x⊤xx^⊤xx⊤x 计算。 平方L2L_2L2​ 范数在数学和计算上都比L2L_2L2​范数本身更方便。例如,平方L2L_2L2​范数对x 中每个元素的导数只取决于对应的元素,而L2L_2L2​范数对每个元素的导数却和整个向量相关。但是在很多情况下,平方L2L_2L2​ 范数也可能不受欢迎,因为它在原点附近增长得十分缓慢。

L1L_1L1​ norm

在某些机器学习应用中,区分恰好是零的元素和非零但值很小的元素是很重要的。在这些情况下,我们转而使用在各个位置斜率相同,同时保持简单的数学形式的函数:L1L_1L1​ 范数。L1L_1L1​范数可以简化如下: ∣∣x1∣∣=∑ixi||x_1||=\sum_i{x_i}∣∣x1​∣∣=i∑​xi​ 当机器学习问题中零和非零元素之间的差异非常重要时,通常会使用L1L_1L1​范数。每当x 中某个元素从0 增加ϵ,对应的L1L_1L1​范数也会增加ϵ。

L0L_0L0​ norm

有时候我们会统计向量中非零元素的个数来衡量向量的大小。有些作者将这种函数称为“L0L_0L0​ 范数’’,但是这个术语在数学意义上是不对的。向量的非零元素的数目不是范数,因为对向量缩放 倍不会改变该向量非零元素的数目。因此,L1L_1L1​ 范数经常作为表示非零元素数目的替代函数。

L∞L_\inftyL∞​

另外一个经常在机器学习中出现的范数是 L∞L_\inftyL∞​范数,也被称为最大范数(maxnorm)。这个范数表示向量中具有最大幅值的元素的绝对值: ∣∣x∞∣∣=maxi∣xi∣||x_{\infty}||=max_i|x_i|∣∣x∞​∣∣=maxi​∣xi​∣

Frobenius norm

有时候我们可能也希望衡量矩阵的大小。在深度学习中,最常见的做法是使用Frobenius 范数(Frobenius norm), ∣∣A∣∣F=∑i,jAi,j2||A||_F=\sqrt{\sum_{i,j}A^2_{i,j}}∣∣A∣∣F​=i,j∑​Ai,j2​​ 其类似于向量的L2L_2L2​范数。

点积使用范数来表示

两个向量的点积(dot product)可以用范数来表示。具体地, x⊤y=∣∣x∣∣2∣∣y∣∣2cosθx^⊤y=||x||_2||y||_2cos\thetax⊤y=∣∣x∣∣2​∣∣y∣∣2​cosθ 其中θ\thetaθ表示x和y之间的夹角。

参考资料

http://www.deeplearningbook.org/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年11月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 范数简述
    • LpL^pLpnorm
      • Euclidean norm L2normL^2 normL2norm
        • L1L_1L1​ norm
          • L0L_0L0​ norm
            • L∞L_\inftyL∞​
              • Frobenius norm
                • 点积使用范数来表示
                • 参考资料
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档