机器学习中的数学——范数

分类目录:《算法设计与分析》总目录


有时我们需要衡量一个向量的大小。在机器学习中,我们经常使用被称为范数的函数衡量向量大小。形式上, L p L^p Lp范数定义如下:
∣ ∣ x ∣ ∣ = ( ∑ i ∣ x i ∣ p ) 1 p ||x||=(\sum_i|x_i|^p)^{\frac{1}{p}} x=(ixip)p1

其中 p ∈ R p\in R pR p ≥ 1 p\geq 1 p1

范数(包括 L p L^p Lp范数)是将向量映射到非负值的函数。直观上来说,向量 x x x的范数衡量从原点到点 x x x的距离。更严格地说,范数是满足下列性质的任意函数:

  • 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)
  • ∀ α ∈ R , f ( α x ) = ∣ α ∣ f ( x ) \forall\alpha\in R, f(\alpha x)=|\alpha|f(x) αR,f(αx)=αf(x)

p = 2 p=2 p=2时, L p L^p Lp范数被称为欧几里得范数。它表示从原点出发到向量x确定的点的欧几里得距离。 L 2 L^2 L2范数在机器学习中出现地十分频繁,经常简化表示为 ∣ ∣ x ∣ ∣ ||x|| x,略去了下标2。平方 L 2 L^2 L2范数也经常用来衡量向量的大小,可以简单地通过点积 x x T xx^T xxT计算:
∥ x ∥ 2 = ∑ i = 1 n x i 2 \|\mathbf{x}\|_2 = \sqrt{\sum_{i=1}^n x_i^2} x2=i=1nxi2

平方 L 2 L^2 L2范数在数学和计算上都比 L 2 L^2 L2范数本身更方便。例如,平方 L 2 L^2 L2范数对 x x x中每个元素的导数只取决于对应的元素,而 L 2 L^2 L2范数对每个元素的导数却和整个向量相关。但是在很多情况下,平方 L 2 L^2 L2范数也可能不受欢迎,因为它在原点附近增长得十分缓慢。在某些机器学习应用中,区分恰好是零的元素和非零但值很小的元素是很重要的。在这些情况下,我们转而使用在各个位置斜率相同,同时保持简单的数学形式的函数: 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 x x中某个元素从0增加 ϵ \epsilon ϵ,对应的 L 1 L^1 L1范数也会增加 ϵ \epsilon ϵ

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

import tensorflow as tf

x = tf.constant([3.0, 4.0])
L1 = tf.reduce_sum(tf.abs(u))    # L1范数
L2 = tf.norm(x)                  # L2范数

另外一个经常在机器学习中出现的范数是 L ∞ L^\infty L范数,也被称为最大范数。这个范数表示向量中具有最大幅值的元素的绝对值:
∣ ∣ x ∣ ∣ ∞ = max ⁡ i ∣ x i ∣ ||x||_\infty=\max_i|x_i| x=imaxxi

有时候我们可能也希望衡量矩阵的大小。在深度学习中,最常见的做法是使用Frobenius范数:
∣ ∣ x ∣ ∣ F = ∑ i , j A i , j 2 ||x||_F=\sqrt{\sum_{i, j}A_{i, j}^2} xF=i,jAi,j2

其类似于向量的 L 2 L^2 L2范数。两个向量的 点积可以用范数来表示。具体地:
x T y = ∣ ∣ x ∣ ∣ 2 ∣ ∣ y ∣ ∣ 2 cos ⁡ θ x^Ty=||x||_2||y||_2\cos\theta xTy=x2y2cosθ

其中 θ \theta θ表示 x x x y y y之间的夹角。

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

von Neumann

您的赞赏是我创作最大的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值