理论基础(5)归一化

归一化的作用:
  • 可解释性回归模型中自变量X的量纲不一致导致了回归系数无法直接解读或者错误解读;需要将X都处理到统一量纲下,这样才可比【可解释性】;取决于我们的逻辑回归是不是用了正则化。如果你不用正则,标准化并不是必须的,如果用正则,那么标准化是必须的。
  • 距离计算:机器学习任务和统计学任务中有很多地方要用到“距离”的计算,比如PCA,比如KNN,比如kmeans等等,假使算欧式距离,不同维度量纲不同可能会导致距离的计算依赖于量纲较大的那些特征而得到不合理的结果;
  • 加速收敛(BN):参数估计时使用梯度下降,在使用梯度下降的方法求解最优化问题时, 归一化/标准化后可以加快梯度下降的求解速度,即提升模型的收敛速度

一、归一化

概要

为了讲清楚Transformer中的归一化细节,我们首先需要了解下,什么是归一化,以及为什么要归一化。本文主要解决这两个问题:

  • 什么是归一化
  • 为什要归一化

1.1 从函数的等高线说起

函数的等高线是什么

讨论一个二元损失函数的情况,即损失函数只有两个参数: \(J\left(w_1, w_2\right)=w_1^2+w_2^2+5\)

  • 下图就是这个损失函数的图像, 等高线就是函数 \(J\) 在参数平面 \(\left(w_1, w_2\right)\) 上的投影;
  • 等高的理解:在投影面上的任意一个环中,所有点的函数值都一样;
  • 等高的理解:在函数曲面上存在一个环,环上所有点的函数值一样,即距离投影平面的距离都一样;

img

具体看这个参数平面的话,绘制等高线图是:

  • 任意一个环上的不同参数取值 \(\left(w_1, w_2\right)\), 其函数值都一样;
  • 可以看到, 当 \(\left(w_1=0, w_2=0\right)\) 时, 函数值 \(=5\), 即全局最小点;

img

1.2 梯度与等高线的关系

假设存在一个损失函数 \(z=f(x, y)\), 在空间中是一个曲面, 当其被一个平面 \(z=c\), c为常数所截后, 得到的曲线方程是: \[ \left\{\begin{array}{l} z=f(x, y) \\ z=c \end{array}\right. \] 曲线在xoy平面上的投影是一个平面曲线, 即 \(f(x, y)=c\), 即损失函数在xoy平面的某一条等高线, 在这条等高线上, 所有函数值均为 \(c\)

在这条等高线上,任意一点的切线斜率为 \(\frac{d y}{d x}\) 。由隐函数存在定理: \[ f^{\prime}(x)=-\frac{F_x(x, y)}{F_y(x, y)} \] 可知: \(\frac{d y}{d x}=-\frac{f_x}{f_y}\)

任意一点的法线由于和切线垂直, 所以斜率相乘为-1, 则法线斜率为: \[ -1 /\left(\frac{d y}{d x}\right)=-\frac{1}{-\frac{f_x}{f_y}}=\frac{f_y}{f_x} \] 又由梯度的定义: \[ \operatorname{gradf}(x, y)=\nabla f(x, y)=\left(\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}\right)=\left(f_x, f_y\right) \] 梯度向量的斜率, 即正切值= \(\frac{f_y}{f_x}\) ,可以看到恰好等于法线的斜率, 因此:梯度的方向和等高线上的切线时时垂 直。

1.3 从等高线看为什么特征需要归一化

采用梯度下降算法时,因为梯度的方向和等高线的切线是垂直的,所以沿着梯度反方向迭代时,实际就是垂直于等高线一步步迭代。如下图所示,这是两种不同的等高线采用梯度下降算法时的迭代情况。 很明显,左图也就是等高线呈现正圆形时能够有最少的迭代步数,因此收敛速度更快。然而在有些情况下,等高线是椭圆形的,会有更多的迭代步数才能到达函数最低点,收敛变慢。

img

那么,什么时候会出现这种椭圆形的等高线情况呢?我们对线性回归和逻辑回归分别进行分析。

以线性回归为例,假设某线性回归模型为 \(\hat{y}=w_1 x_1+w_2 x_2, x_1 \in[0,1], x_2 \in[10,100]\) 。目标函数为(忽略偏 置): \[ J\left(w_1, w_2\right)=\frac{1}{2} \sum_{i=1}^m\left(y^{(i)}-\left(w_1 x_1^{(i)}+w_2 x_2^{(i)}\right)\right)^2 \] 从上式可以看出, 由于 \(x_2>>x_1\), 那么当 \(w_1, w_2\) 产生相同的增量时, 后者能产生更大的函数变化值, 从而产 生椭圆形的环状等高线。本质上, 这是因为输入的特征的尺度(即取值范围)不一样!

因此,在线性回归中若各个特征变量之间的取值范围差异较大,则会导致目标函数收敛速度慢等问题,需要对输入特征进行归一化,尽量避免形成椭圆形的等高线。

以逻辑回归为例,由于逻辑回归中特征组合的加权和还会作用上sigmoid函数,影响收敛的因素,除了梯度下降算法的效率外,更重要的是最后的输出\(z\)的大小的影响。

img

从上图可以看出,当z的值小于-5左右时,函数值约等于0,当z的值大于5左右时,函数值约等于1。这两种情况下面,梯度趋近于0,使得参数无法得到更新。因此,对于逻辑回归来说,主要影响的是特征组合加权和后的sigmoid输出,而特征的输入范围又会影响最终的sigmoid输出,影响模型的收敛性,所以要对输入特征进行归一化,避免最后的输出处于梯度饱和区。

1.4 总结

总结来说,输入特征的尺度会影响梯度下降算法的迭代步数以及梯度更新的难度,从而影响训练的收敛性。

因此,我们需要对特征进行归一化,即使得各个特征有相似的尺度。

参考文献

  • Transformer中的归一化(一):什么是归一化&为什么要归一化 - Gordon Lee的文章 - 知乎 https://zhuanlan.zhihu.com/p/476102712