范数
在深度学习领域,我们经常会看见范数这个词语,但是对于像我一样刚接触深度学习的初学者来说,其实难以理解什么是范数,常常会选择直接跳过。同时,现有博客中常常会解释常见的范数,如最常见的2范数以及其公式。不过,这不足以让我们去理解范数。
什么是范数
在现实生活中,我们会用路程来描述A点到B点之间的距离。那么在向量的世界里,我们要如何去描述两个向量之间的距离呢?这就引出了范数的概念。
- 范数的定义:用于衡量向量大小的函数,将向量映射到非负值的函数。这个定义就揭示了范数的本质是函数,目的是衡量向量大小和映射到非负值
- \(L^p\)范数的公式定义:\(\|x\|_p = (\sum_i \lvert x_i \rvert ^p)^{\frac{1}{p}}\)
- 由于2范数太常见,所以\(\| x \|\)默认是\(L^2\)范数
范数是满足以下性质的任意函数:
- \(f(x) = 0 \Rightarrow x = 0\)
- \(f(x + y) \leq f(x) + f(y)\) 三角不等式。类似于三角形中的两边之和大于第三边。
- \(\forall \alpha \in R, f(\alpha x) = \lvert \alpha \rvert f(x)\)
在深度学习中,我们通常通过两个向量相减,然后计算\(L^2\)范数,作为两个向量之间的距离。
常见范数
- \(L^1\)范数:绝对值之和 $|x|_1 = \sum_i \lvert x_i \rvert $
- \(L^2\)范数:欧几里得范数(计算方式与直角坐标系中的欧几里得距离相同)\(\|x\|_2 = (\sum_i \lvert x_i \rvert ^2)^{\frac{1}{2}}\)
- 平方\(L^2\)范数:即\(L^2\)范数再平方。它可以简单地通过 \(x^\mathsf{T} x\) 实现
- \(L^{\infty}\)最大范数:表示该向量中最大值元素的绝对值。\(\| x \|_\infty = max_i \lvert x_i \rvert\)
- Frobenius范数(F范数):衡量矩阵的大小。\(\|A \|_F = \sqrt{\sum_{i,j}A_{i,j}^2}\),即矩阵中的每一个元素的平方和再开方,与\(L^2\)范数格外相似,只是应用到了矩阵中。
参考文献
- Deep Leaning (深度学习)花书

浙公网安备 33010602011771号