矩阵/向量的范数

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

# 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范数)是最常见的范数,即欧几里得距离。

L p L^p Lpnorm

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

更加严谨的定义:

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

  • f ( x ) = 0 ⇒ x = 0 f(x)=0\Rightarrow x=0 f(x)=0x=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 L 2 n o r m L^2 norm L2norm

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

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

L 1 L_1 L1 norm

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

L 0 L_0 L0 norm

有时候我们会统计向量中非零元素的个数来衡量向量的大小。有些作者将这种函数称为" L 0 L_0 L0 范数",但是这个术语在数学意义上是不对的。向量的非零元素的数目不是范数,因为对向量缩放 α \alpha α倍不会改变该向量非零元素的数目。因此, L 1 L_1 L1 范数经常作为表示非零元素数目的替代函数。

L ∞ L_\infty L

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

Frobenius norm

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

点积使用范数来表示

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

参考资料

http://www.deeplearningbook.org/

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值