假设存在函数 f : R → R f: \mathbb{R} \rightarrow \mathbb{R} f:R→R,其输入和输出均为标量。设 y = f ( x ) y = f(x) y=f(x),若其导数存在,则:
f ′ ( x ) = d y d x = d f ( x ) d x = lim h → 0 f ( x + h ) − f ( x ) h f'(x)=\frac{d y}{d x}=\frac{d f(x)}{d x}=\lim_{h \rightarrow 0} \frac{f(x+h)-f(x)}{h} f′(x)=dxdy=dxdf(x)=h→0limhf(x+h)−f(x)
若 f ′ ( a ) f'(a) f′(a)存在,则称f在a处可微(differentiable)
6.1.3 偏导数
偏导数:多元函数在某一点上针对某个变量所求的导数。
对于函数 f ( x 1 , x 2 , ... , x n ) f(x_1, x_2,\dots,x_n) f(x1,x2,...,xn),它的偏导数可以表示为 ∂ f ∂ x i \frac{\partial f}{\partial x_i} ∂xi∂f,其中 ∂ \partial ∂表示偏导符号, f f f表示函数, x i x_i xi表示自变量。
假设存在函数 f : R n → R f: \mathbb{R}^n \rightarrow \mathbb{R} f:Rn→R,其输入是一个 n n n维向量 x ⃗ = [ x 1 x 2 ⋮ x n ] \vec{x}=\begin{bmatrix}x_1\\x_2\\ \vdots \\x_n\end{bmatrix} x = x1x2⋮xn ,其输出是一个标量。
设 y = f ( x 1 , x 2 , ⋯ , x n ) y = f(x_1,x_2,\cdots,x_n) y=f(x1,x2,⋯,xn),则y关于第i个参数 x i x_i xi的偏导数(Partial Derivative)为:
∂ y ∂ x i = lim h → 0 f ( x 1 , ⋯ , x i − 1 , x i + h , x i + 1 , ⋯ , x n ) − f ( x 1 , ⋯ , x i , ⋯ , x n ) h \frac{\partial y}{\partial x_i}=\lim_{h→0} \frac{f(x_1, \cdots, x_{i-1}, x_i+h,x_{i+1},\cdots, x_n)-f(x_1,\cdots,x_i,\cdots,x_n)}{h} ∂xi∂y=h→0limhf(x1,⋯,xi−1,xi+h,xi+1,⋯,xn)−f(x1,⋯,xi,⋯,xn)
6.1.4 Jacobian矩阵
Jacobian矩阵,中文译名为雅可比矩阵。
假设存在函数 f : R n → R m \boldsymbol{f}:\mathbb{R^n}→\mathbb{R^m} f:Rn→Rm,其由多个函数组成:
f = [ f 1 ( x 1 , x 2 , ⋯ , x n ) f 2 ( x 1 , x 2 , ⋯ , x n ) ⋮ f m ( x 1 , x 2 , ⋯ , x n ) ] \boldsymbol{f} = \begin{bmatrix} f_{1}(x_1, x_2, \cdots, x_n)\\ f_{2}(x_1, x_2, \cdots, x_n)\\ \vdots \\ f_{m}(x_1, x_2, \cdots, x_n)\\ \end{bmatrix} f= f1(x1,x2,⋯,xn)f2(x1,x2,⋯,xn)⋮fm(x1,x2,⋯,xn)
其雅可比矩阵定义为:
J ( f ) = [ ∂ f 1 ∂ x 1 ∂ f 1 ∂ x 2 ⋯ ∂ f 1 ∂ x n ∂ f 2 ∂ x 1 ∂ f 2 ∂ x 2 ⋯ ∂ f 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ f n ∂ x 1 ∂ f n ∂ x 2 ⋯ ∂ f n ∂ x n ] J(\boldsymbol{f}) = \begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \frac{\partial f_1}{\partial x_2} & \cdots & \frac{\partial f_1}{\partial x_n} \\ \frac{\partial f_2}{\partial x_1} & \frac{\partial f_2}{\partial x_2} & \cdots & \frac{\partial f_2}{\partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial f_n}{\partial x_1} & \frac{\partial f_n}{\partial x_2} & \cdots & \frac{\partial f_n}{\partial x_n} \end{bmatrix} J(f)= ∂x1∂f1∂x1∂f2⋮∂x1∂fn∂x2∂f1∂x2∂f2⋮∂x2∂fn⋯⋯⋱⋯∂xn∂f1∂xn∂f2⋮∂xn∂fn
6.1.5 梯度 & 梯度下降法
假设存在函数 f : R n → R f: \mathbb{R}^n \rightarrow \mathbb{R} f:Rn→R,其输入是一个 n n n维向量 x ⃗ = [ x 1 x 2 ⋮ x n ] \vec{x}=\begin{bmatrix}x_1\\x_2\\ \vdots \\x_n\end{bmatrix} x = x1x2⋮xn ,其输出是一个标量。
函数 f ( x ⃗ ) f(\vec{x}) f(x )相对于 x ⃗ \vec{x} x 的梯度是一个包含 n n n个偏导数的向量:
g x = ∇ x f ( x ⃗ ) = [ ∂ f ( x ⃗ ) ∂ x 1 , ∂ f ( x ⃗ ) ∂ x 2 , ⋯ , ∂ f ( x ⃗ ) ∂ x n ] g_x=\nabla_x f(\vec{x})=[\frac{\partial f(\vec{x})}{\partial x_1},\frac{\partial f(\vec{x})}{\partial x_2},\cdots,\frac{\partial f(\vec{x})}{\partial x_n}] gx=∇xf(x )=[∂x1∂f(x ),∂x2∂f(x ),⋯,∂xn∂f(x )]
假设存在函数 f : R → R f: \mathbb{R} \rightarrow \mathbb{R} f:R→R,其输入和输出均为标量,则梯度坍缩为导数。
∇ x f ( x ) = d f ( x ) d x \nabla_x f(x)=\frac{d f(x)}{d x} ∇xf(x)=dxdf(x)
根据图像可判断梯度(导数)正负,也可根据梯度下降法核心思想求得该函数最小值:
二维情况
假设存在函数 f : R 2 → R f: \mathbb{R}^2 \rightarrow \mathbb{R} f:R2→R,其输入是一个 2 2 2维向量 x ⃗ = [ x 1 x 2 ] \vec{x}=\begin{bmatrix}x_1\\x_2\end{bmatrix} x =[x1x2],其输出是一个标量。
对于函数 f ( x 1 , x 2 , ... , x n ) f(x_1, x_2,\dots,x_n) f(x1,x2,...,xn),它的方向导数可以表示为 ∇ f ⋅ u \nabla f \cdot u ∇f⋅u,其中 ∇ f \nabla f ∇f表示函数 f f f的梯度, u u u表示方向向量。
方向导数的计算方法:通过梯度向量和方向向量的点积实现。梯度向量 ∇ f \nabla f ∇f表示函数在某一点上变化率最大的方向。
方向导数可做参考,仅作补充内容。
标准梯度下降法缺点:
计算量大
梯度爆炸 / 梯度消失
对标准梯度下降法的优化思路如下所示:
调整神经网络结构:池化层、Dropout
更换反向传播算法
减少每次训练计算量
随机梯度下降法
小批量梯度下降法
优化下降路径(更少步数 更快抵达极值点)
梯度方向优化
二阶梯度:牛顿法 → 拟牛顿法
一阶梯度:动量法、Nesterov法
梯度截断:按值截断、按模截断(解决 梯度爆炸)
学习率衰减
固定:逆时衰减、指数衰减、自然指数衰减
自适应:AdaGrad → RMSprop、AdaDelta
二者结合
Adam、Nadam
随机梯度下降法
核心思想:随机抽取 一个数据 代表整体,用以计算优化网络参数值
期望:摆脱样本具体数据,代表样本总体的值
抽样思想:抽样以获取平均数据,抽样越多越准确
凸问题: f ( x ( k ) ) − f ∗ = o ( 1 k ) f(x(k))-f^*=o(\frac{1}{\sqrt{k}}) f(x(k))−f∗=o(k 1),其中 f ∗ f^* f∗为凸问题极值点, k k k为迭代次数, o o o表示时间复杂度渐近符, o ( 1 k ) o(\frac{1}{\sqrt{k}}) o(k 1)表示误差量级 1 k \frac{1}{\sqrt{k}} k 1。
强凸问题: f ( x ( k ) ) − f ∗ = o ( 1 k ) f(x(k))-f^*=o(\frac{1}{k}) f(x(k))−f∗=o(k1),强凸问题比凸问题 收敛更快
过程 :假设存在多元函数 f ( x ⃗ ) f(\vec{x}) f(x ),对 f ( x ⃗ ) f(\vec{x}) f(x )泰勒展开,保留到二阶导数(下面简化为 x x x):
f ( x ) ≈ f ( x ( t ) ) + g k ⊤ ( x ( t ) ) ( x − x ( t ) ) + 1 2 H ( x ( t ) ) ( x − x ( t ) ) 2 f(x)\approx f(x^{(t)})+g^\top_k(x^{(t)})(x-x^{(t)})+\frac{1}{2}H(x^{(t)})(x-x^{(t)})^2 f(x)≈f(x(t))+gk⊤(x(t))(x−x(t))+21H(x(t))(x−x(t))2
其中: g k = g ( x ( t ) ) = ∇ f ( x ( t ) ) g_k=g(x^{(t)})=\nabla f(x^{(t)}) gk=g(x(t))=∇f(x(t))是 f ( x ) f(x) f(x)的梯度向量在点 x ( t ) x^{(t)} x(t)的值, H ( x ( t ) ) H(x^{(t)}) H(x(t))是 f ( x ) f(x) f(x)的Hessian矩阵在点 x ( t ) x^{(t)} x(t)。
极小值必要条件:
∇ f ( x ) = 0 \nabla f(x)=0 ∇f(x)=0
假设从点xk开始,求目标函数的极小点,假设xk+1满足:
∇ f ( x ( t + 1 ) ) = 0 \nabla f(x^{(t+1)})=0 ∇f(x(t+1))=0
由泰勒展开可得:
∇ f ( x ) = g k + h k ( x − x ( t ) ) \nabla f(x)=g_k+h_k(x-x^{(t)}) ∇f(x)=gk+hk(x−x(t))
其中 H k = H ( x ( k ) ) H_k=H(x^{(k)}) Hk=H(x(k)),则:
g k + H k ( x ( t + 1 ) − x ( t ) ) = 0 g_k+H_k(x^{(t+1)}-x^{(t)})=0 gk+Hk(x(t+1)−x(t))=0
因此:
x ( t + 1 ) = x ( t ) − H k − 1 g k x^{(t+1)}=x^{(t)}-H^{-1}_kg_k x(t+1)=x(t)−Hk−1gk
从一元函数看: f ( x ) f(x) f(x)泰勒展开保留到二阶导:
f ( x ) ≈ f ( x ( t ) ) + f ′ ( x ( t ) ) ( x − x ( t ) ) + 1 2 f ′ ′ ( x ( t ) ) ( x − x ( t ) ) 2 f(x)\approx f(x^{(t)})+f'(x^{(t)})(x-x^{(t)})+\frac{1}{2}f''(x^{(t)})(x-x^{(t)})^2 f(x)≈f(x(t))+f′(x(t))(x−x(t))+21f′′(x(t))(x−x(t))2
f ( x ) f(x) f(x)求极值,令 f ′ ( x ) = 0 f'(x)=0 f′(x)=0
f ′ ( x ) = f ′ ( x ( t ) ) + f ′ ′ ( x ( t ) ) ( x − x ( t ) ) = 0 x ( t + 1 ) = x ( t ) − f ′ ( x ( t ) ) f ′ ′ ( x ( t ) ) f'(x)=f'(x^{(t)})+f''(x^{(t)})(x-x^{(t)})=0 \\ x^{(t+1)}=x^{(t)}-\frac{f'(x^{(t)})}{f''(x^{(t)})} f′(x)=f′(x(t))+f′′(x(t))(x−x(t))=0x(t+1)=x(t)−f′′(x(t))f′(x(t))
由此可得,牛顿法权重更新迭代公式为:
W t ← W t − 1 − α H − 1 g = W t − 1 − α H − 1 ∇ x f ( x ) W_t \leftarrow W_{t-1} - \alpha H^{-1} g = W_{t-1} - \alpha H^{-1} \nabla_x f(x) Wt←Wt−1−αH−1g=Wt−1−αH−1∇xf(x)
迭代过程中,记 y t = g ( t + 1 ) − g ( t ) y_t=g^{(t+1)}-g^{(t)} yt=g(t+1)−g(t), δ t = x ( t + 1 ) x ( t ) \delta_t=x^{(t+1)}x^{(t)} δt=x(t+1)x(t),则
y t = H t δ t y_t=H_t\delta_t yt=Htδt
或
H − 1 y t = δ t H^{-1}y_t=\delta_t H−1yt=δt
拟牛顿法将 G t G_t Gt或 B t B_t Bt作为 H t − 1 H^{-1}_t Ht−1或 H t H_t Ht的近似,要求矩阵 G t G_t Gt或 B t B_t Bt满足同样的条件。
6.3.1 DFP算法
核心思想 :拟牛顿条件 + 正定对称矩阵 G G G 近似 H − 1 H^{-1} H−1
用 G t G_t Gt近似Hessian矩阵,此时拟牛顿条件:
G t + 1 y t = δ t G_{t+1}y_t=\delta_t Gt+1yt=δt
引入附加矩阵:
G t + 1 = G t + P t + Q t G_{t+1}=G_t+P_t+Q_t Gt+1=Gt+Pt+Qt
其中 P t P_t Pt和 Q t Q_t Qt为待定矩阵,此时:
G t + 1 y t = G t y t + P t y t + Q t y t G_{t+1}y_t=G_t y_t+P_t y_t+Q_t y_t Gt+1yt=Gtyt+Ptyt+Qtyt
为满足拟牛顿条件,当 P t P_t Pt和 Q t Q_t Qt取值满足如下式子时,才可配平公式:
P t y t = δ t Q t y t = − G k y t P_t y_t=\delta_t \\ Q_t y_t=-G_ky_t Ptyt=δtQtyt=−Gkyt
可找到满足以上条件的取值:
P t = δ t δ t ⊤ δ t ⊤ y t P_t=\frac{\delta_t\delta_t^{\top}}{\delta_t^{\top}y_t} Pt=δt⊤ytδtδt⊤
Q t = − G t y t y t ⊤ G t y t ⊤ G t y t Q_t=-\frac{G_t y_t y_t^\top G_t}{y_t^\top G_t y_t} Qt=−yt⊤GtytGtytyt⊤Gt
这样就得到矩阵 G t + 1 G_{t+1} Gt+1的迭代公式:
G t + 1 = G + δ t δ t ⊤ δ t ⊤ y t − G t y t y t ⊤ G t y t ⊤ G t y t G_{t+1}=G+\frac{\delta_t\delta_t^{\top}}{\delta_t^\top y_t}-\frac{G_t y_t y_t^\top G_t}{y_t^\top G_t y_t} Gt+1=G+δt⊤ytδtδt⊤−yt⊤GtytGtytyt⊤Gt
可以证明,若初始矩阵 G 0 G_0 G0正定,则迭代过程中 G t G_t Gt均正定。
6.3.2 BFGS算法
核心思想 :拟牛顿条件 + 正定对称矩阵 B B B 近似 H H H
用 B t B_t Bt近似Hessian矩阵,此时拟牛顿条件:
B t + 1 δ k = y t B_{t+1}\delta_k=y_t Bt+1δk=yt
引入附加矩阵:
B t + 1 = G t + P t + Q t B_{t+1}=G_t+P_t+Q_t Bt+1=Gt+Pt+Qt
其中 P t P_t Pt和 Q t Q_t Qt为待定矩阵,此时:
B t + 1 δ t = B t δ t + P t δ t + Q t δ t B_{t+1}\delta_t=B_t\delta_t+P_t\delta_t+Q_t\delta_t Bt+1δt=Btδt+Ptδt+Qtδt
为满足拟牛顿条件,当 P t P_t Pt和 Q t Q_t Qt取值满足如下式子时,才可配平公式:
P t δ t = y t Q t δ t = − G t δ t P_t\delta_t=y_t \\ Q_t\delta_t=-G_t\delta_t Ptδt=ytQtδt=−Gtδt
可找到满足以上条件的取值:
P t = y t y t ⊤ y t ⊤ δ t P_t=\frac{y_t y_t^{\top}}{y_t^{\top}\delta_t} Pt=yt⊤δtytyt⊤
Q t = − B t δ t δ t ⊤ B t δ t ⊤ B t δ t Q_t=-\frac{B_t\delta_t\delta_t^\top B_t}{\delta_t^\top B_t \delta_t} Qt=−δt⊤BtδtBtδtδt⊤Bt
这样就得到矩阵 B t + 1 B_{t+1} Bt+1的迭代公式:
B t + 1 = B + y t y t ⊤ y t ⊤ y t − B t δ t δ t ⊤ B t δ t ⊤ B t δ t B_{t+1}=B+\frac{y_t y_t^{\top}}{y_t^\top y_t}-\frac{B_t \delta_t \delta_t^\top B_t}{\delta_t^\top B_t \delta_t} Bt+1=B+yt⊤ytytyt⊤−δt⊤BtδtBtδtδt⊤Bt
可以证明,若初始矩阵 B 0 B_0 B0正定,则迭代过程中 B t B_t Bt均正定。
此外,L-BGFS 算法也是一种拟牛顿法,其通过保存有限的历史迭代信息来近似Hessian矩阵。
6.3.3 Broyden族方法
根据BDFS算法,由 Sherman-Morrison公式推导得到。
Sherman-Morrison公式:
( A + u ⃗ v ⃗ ⊤ ) − 1 = A − 1 − A − 1 u ⃗ v ⃗ ⊤ A − 1 1 + v ⃗ ⊤ A − 1 u ⃗ (A+\vec{u}\vec{v}^{\top})^{-1}=A^{-1}-\frac{A^{-1}\vec{u}\vec{v}^{\top}A^{-1}}{1+\vec{v}^{\top}A^{-1}\vec{u}} (A+u v ⊤)−1=A−1−1+v ⊤A−1u A−1u v ⊤A−1
由DFP算法和BFGS算法 G t G_t Gt各自迭代公式得到的 G t + 1 G_{t+1} Gt+1分别记作 G D F P G^{DFP} GDFP和 G B F G S G^{BFGS} GBFGS,其均满足拟牛顿条件,故其线性组合
G k + 1 = α G D F P + ( 1 − α ) G B F G S G_{k+1}=\alpha G^{DFP}+(1-\alpha)G^{BFGS} Gk+1=αGDFP+(1−α)GBFGS
动量更新:
v t = β v t − 1 + ( 1 − β ) ∇ w J ( w ) v_t=\beta v_{t-1}+(1-\beta) \nabla_w J(w) vt=βvt−1+(1−β)∇wJ(w)
其中: v t v_t vt为第 t t t次迭代的动量项; β ∈ [ 0 , 1 ] \beta \in [0,1] β∈[0,1]为动量超参数,控制历史梯度的修正影响程度; ∇ w J ( w ) \nabla_w J(w) ∇wJ(w)为损失函数 J ( w ) J(w) J(w)对参数 w w w的梯度。
参数更新:
w t ← w t − 1 − α v t w_t \leftarrow w_{t-1}-\alpha v_t wt←wt−1−αvt
Nesterov动量法公式:
v t = β v t − 1 + ( 1 − β ) ∇ w J ( w + γ v t − 1 ) w t ← w t − 1 − α v t v_t=\beta v_{t-1}+(1-\beta) \nabla_w J(w+\gamma v_{t-1}) \\ w_t \leftarrow w_{t-1}-\alpha v_t vt=βvt−1+(1−β)∇wJ(w+γvt−1)wt←wt−1−αvt
AdaGrad方法公式:
W t ← W t − 1 − α S t + ε ⋅ ∇ w J ( w ) S t = S t − 1 + ∇ w J ( w ) ⋅ ∇ w J ( w ) W_t \leftarrow W_{t-1} - \frac{\alpha}{\sqrt{S_t}+\varepsilon} \cdot \nabla_w J(w) \\ S_t=S_{t-1}+\nabla_w J(w)\cdot\nabla_w J(w) Wt←Wt−1−St +εα⋅∇wJ(w)St=St−1+∇wJ(w)⋅∇wJ(w)
其中: S t S_t St为第 t t t次迭代影响因子; ε \varepsilon ε为非常小的正数,如 1 0 − 6 10^{-6} 10−6; ∇ w J ( w ) \nabla_w J(w) ∇wJ(w)为损失函数 J ( w ) J(w) J(w)对参数 w w w的梯度。
AdaGrad方法具有 延迟满足特性
Ada自适应 + Grad梯度
在稀疏数据训练效果好
考虑维度 → 考虑特征
靠近末端的感知机代表各种人类不能直接理解的特征
学习率调整大小 → 对某一特征调整的大小
学习率调整大→对这一特征调整比较大
稀疏数据:依赖特征本身不同,而非特征程度不同
稀疏数据:某一维度/某一特征提供数据不够充分 → 梯度下降 → 震荡
AdaGrad可以减少这样的震荡
随着维度增加,遇到稀疏数据的可能性越来越高
AdaGrad还需进行优化
AdaGrad遇到这种情况 → 存在问题:考虑了所有历史上数据(红线)
所以,出现了RMSprop算法。
6.6.2 RMSprop算法
RMSprop (Root Mean Square Propagation):一种常用的优化算法,它是对AdaGrad优化器的一种改进,旨在解决AdaGrad中学习率过快下降的问题。
对AdaGrad的改进,学习率修正 S t S_t St的计算 由累积方式 改用 指数加权移动平均法。
核心思想:利用历史梯度的指数加权移动平均来自适应地调整学习率。
自适应调整学习率:迭代过程中,每个参数的学习率并不是呈衰减趋势,即可增大也可减小。
效果:距当前越远,对当前影响越小(与动量法类似)
RMSprop方法公式:
W t ← W t − 1 − α S t + ε ⋅ ∇ w J ( w ) S t = β S t − 1 + ( 1 − β ) ∇ w J ( w ) ⋅ ∇ w J ( w ) W_t \leftarrow W_{t-1} - \frac{\alpha}{\sqrt{S_t}+\varepsilon} \cdot \nabla_wJ(w) \\ S_t=\beta S_{t-1}+(1-\beta)\nabla_wJ(w) \cdot \nabla_wJ(w) Wt←Wt−1−St +εα⋅∇wJ(w)St=βSt−1+(1−β)∇wJ(w)⋅∇wJ(w)
其中: S t S_t St为第 t t t次迭代影响因子; β ∈ [ 0 , 1 ] \beta \in [0,1] β∈[0,1]为学习率超参数,控制历史梯度的修正影响程度; ε \varepsilon ε为非常小的正数,如 1 0 − 6 10^{-6} 10−6; ∇ w J ( w ) \nabla_w J(w) ∇wJ(w)为损失函数 J ( w ) J(w) J(w)对参数 w w w的梯度。
Adam方法公式:
W t ← W t − 1 − α S t + ε V t = β 1 v t − 1 + ( 1 − β 1 ) ∇ w J ( w ) S t = β 2 S t − 1 + ( 1 − β 2 ) ∇ w J ( w ) ⋅ ∇ w J ( w ) W_t \leftarrow W_{t-1} - \frac{\alpha}{\sqrt{S_t}+\varepsilon} \\ V_t=\beta_1 v_{t-1}+(1-\beta_1) \nabla_w J(w) \\ S_t=\beta_2 S_{t-1}+(1-\beta_2)\nabla_wJ(w) \cdot \nabla_wJ(w) Wt←Wt−1−St +εαVt=β1vt−1+(1−β1)∇wJ(w)St=β2St−1+(1−β2)∇wJ(w)⋅∇wJ(w)
其中: S t S_t St为第 t t t次迭代影响因子; β 1 ∈ [ 0 , 1 ] \beta_1 \in [0,1] β1∈[0,1]为动量超参数,控制历史梯度的修正影响程度; β ∈ [ 0 , 1 ] \beta \in [0,1] β∈[0,1]为学习率超参数,控制历史梯度的修正影响程度; ∇ w J ( w ) \nabla_w J(w) ∇wJ(w)为损失函数 J ( w ) J(w) J(w)对参数 w w w的梯度。
补充:AdamW 算法
AdamW 是一种改进的 Adam 优化算法,它对 Adam 的权重衰减组件进行了修改,使得权重衰减不再是添加到梯度上而是直接对参数进行更新。这种方法与 L2 正则化的原理更为接近,通常可以带来更好的训练稳定性和泛化性能。
每经过 T 1 , T 2 , ... , T m T_1, T_2, \dots, T_m T1,T2,...,Tm次迭代将学习率衰减为原来的 β 1 , β 2 , ... , β m \beta_1, \beta_2, \dots, \beta_m β1,β2,...,βm,其中KaTeX parse error: Undefined control sequence: \textless at position 5: T_m \̲t̲e̲x̲t̲l̲e̲s̲s̲ ̲1和KaTeX parse error: Undefined control sequence: \textless at position 9: \beta_m \̲t̲e̲x̲t̲l̲e̲s̲s̲ ̲1为根据经验设置的超参数。
别称:阶梯衰减 (Step Decay)
逆时衰减 (Inverse Time Decay)
α t = α 0 1 1 + β ⋅ t \alpha_t=\alpha_0\frac{1}{1+\beta \cdot t} αt=α01+β⋅t1
其中: α 0 \alpha_0 α0为初始学习率, β \beta β为衰减率
指数衰减 (Exponential Decay)
α t = α 0 β t \alpha_t=\alpha_0\beta^t αt=α0βt
其中: α 0 \alpha_0 α0为初始学习率,KaTeX parse error: Undefined control sequence: \textless at position 7: \beta \̲t̲e̲x̲t̲l̲e̲s̲s̲ ̲1为衰减率
自然指数衰减 (Natural Exponential Decay)
α t = α 0 exp ( − β ⋅ t ) = α 0 e − β ⋅ t \alpha_t=\alpha_0\exp(-\beta \cdot t)=\alpha_0 e^{-\beta \cdot t} αt=α0exp(−β⋅t)=α0e−β⋅t
其中: α 0 \alpha_0 α0为初始学习率, β \beta β为衰减率
余弦衰减 (Cosine Decay)
别称:余弦退火衰减
α t = 1 2 α 0 ( 1 + cos ( t ⋅ π T ) ) \alpha_t=\frac{1}{2} \alpha_0 (1+\cos(\frac{t \cdot \pi}{T})) αt=21α0(1+cos(Tt⋅π))
其中: α 0 \alpha_0 α0为初始学习率, T T T为总迭代次数
6.7.3 周期性学习率调整
目的:梯度下降时逃离鞍点或尖锐最小值。
思想:短期优化效率降低,长期找到更好地最优解。
循环学习率 (Cyclic Learning Rate)
学习率在一个区间内周期性增大与减小。
线性缩放 → 三角循环学习率 (Triangle Cyclic Learning Rate)
假设循环周期 2 ⋅ Δ t 2\cdot \Delta t 2⋅Δt
前 Δ t \Delta t Δt:学习率线性增大
后 Δ t \Delta t Δt:学习率线性减小
第 t t t次迭代时,其所在的循环周期数 m m m为:
m = ⌊ 1 + t 2 ⋅ Δ t ⌋ m=\lfloor 1+\frac{t}{2 \cdot \Delta t} \rfloor m=⌊1+2⋅Δtt⌋
其中: ⌊ ⋅ ⌋ \lfloor \cdot \rfloor ⌊⋅⌋表示向下取整函数。
第 t t t次迭代的学习率为:
α t = α m i n m + ( α m a x m − α m i n m ) [ max ( 0 , 1 − b ) ] \alpha_t=\alpha^m_{min}+(\alpha^m_{max}-\alpha^m_{min})[\max{(0, 1-b)}] αt=αminm+(αmaxm−αminm)[max(0,1−b)]
其中: α m a x m \alpha^m_{max} αmaxm为第 m m m个周期学习率的上界与初始学习率, α m i n m \alpha^m_{min} αminm为第 m m m个周期学习率的下界,上下边界可随 m m m增大逐步降低。
参数 b b b非人为设定,其计算公式如下:
b = ∣ t Δ T − 2 m + 1 ∣ , b ∈ [ 0 , 1 ] b=|\frac{t}{\Delta T}-2m+1| \space \space , \space b\in[0,1] b=∣ΔTt−2m+1∣ , b∈[0,1]
6.7.4 带热重启的随机梯度下降 (Stochastic Gradient Descent with Warm Restart)
用热重启方式替代学习率衰减的方法,其形式及过程类似于循环学习率,均具有"周期性"。
学习率每间隔一个周期重新初始化为某个预先设定值,随后逐渐衰减,该操作重复进行。
每次重启后模型参数从重启前的参数基础上继续优化,即新学习率基于"半成品"参数继续探索优值。
假设在梯度下降过程中重启 M M M次, T m T_m Tm称为重启周期(第 m m m次重启在上次重启迭代 T m T_m Tm个回合后进行)。
带热重启的余弦衰减
第 t t t次迭代学习率:
α t = α m i n m + 1 2 ( α m a x m − α m i n m ) ( 1 + cos ( T c u r T m π ) ) \alpha_t = \alpha^{m}{min}+\frac{1}{2}(\alpha^m{max}-\alpha^m_{min})(1+\cos(\frac{T_{cur}}{T_m}\pi)) αt=αminm+21(αmaxm−αminm)(1+cos(TmTcurπ))
其中: α m a x m \alpha^m_{max} αmaxm为第 m m m个周期学习率的上界与初始学习率, α m i n m \alpha^m_{min} αminm为第 m m m个周期学习率的下界,上下边界可随 m m m增大逐步降低; T m T_m Tm为重启周期, T c u r T_{cur} Tcur为当前重启时的迭代次数(epoch)。
当 T c u r = T m T_{cur}=T_m Tcur=Tm时,学习率为 α m i n m \alpha^m_{min} αminm
当 T c u r = 0 T_{cur}=0 Tcur=0时 (重启后),学习率为 α m m a x \alpha^m_max αmmax
模型在k个不同的训练集上进行k次训练和验证,首次抽取其中 1 1 1 折作为验证集,其余 k − 1 k-1 k−1 个折作为训练集,后续循环选择不同验证集与训练集,反复验证产生评估指标(如准确率、精确度、召回率等),直到每个子集都充当一次验证集,从而产生了 k k k 个评估指标,对 k k k 个评估指标取平均值作为最终的模型性能评估指标。
这里以 k = 10 k=10 k=10 为例,一般取值范围 k ∈ [ 5 , 12 ] k\in[5,12] k∈[5,12],过大的 k k k 值将使得训练模型次数过多致使计算效率降低。
l1正则化模型的最优化问题等价于:
m i n w L ( w ) = m i n W ( J ( w ) + λ ∑ i = 1 n ∣ w i ∣ ) min_w\space L(w) = min_W(J(w) + \lambda\sum^{n}_{i=1}|w_i|) minw L(w)=minW(J(w)+λi=1∑n∣wi∣)
等价为凸优化问题:
m i n w J ( w ) ∑ i = 1 n ∣ w i ∣ ≤ C , 其中 C 与正则化参数 λ 成反比 min_w \space J(w) \\ \sum^n_{i=1}|w_i| \le C, 其中C与正则化参数\lambda成反比 minw J(w)i=1∑n∣wi∣≤C,其中C与正则化参数λ成反比
在限定区域内,找到使J(w)最小的值。
切向量始终指向 w 2 w2 w2轴,故L1正则化易使参数为0,实现特征稀疏化。
结论:l1正则化易使参数为0,使特征稀疏化
7.4.2 L2正则化(权重衰减)
L2正则化策略通过向目标函数添加一个正则化项 Ω ( θ ) = 1 2 ∣ ∣ w ⃗ ∣ ∣ 2 2 \Omega(\theta)=\frac{1}{2}||\vec{w}||^2_2 Ω(θ)=21∣∣w ∣∣22,使权重更接近原点,其又称岭回归、Tikhonov正则。
J ~ ( w ⃗ ; X , y ⃗ ) = α 2 w ⃗ ⊤ w ⃗ + J ( w ⃗ ; X , y ⃗ ) \tilde{J}(\vec{w};X,\vec{y})=\frac{\alpha}{2}\vec{w}^{\top}\vec{w}+J(\vec{w};X,\vec{y}) J~(w ;X,y )=2αw ⊤w +J(w ;X,y )
∇ w J ~ ( w ⃗ ; X , y ⃗ ) = α w ⃗ + ∇ w J ( w ⃗ ; X , y ⃗ ) \nabla_w\tilde{J}(\vec{w};X,\vec{y})=\alpha\vec{w}+\nabla_wJ(\vec{w};X,\vec{y}) ∇wJ~(w ;X,y )=αw +∇wJ(w ;X,y )
经正则化后,梯度更新权重前先收缩权重向量(乘以常数因子 1 − ε α 1-\varepsilon\alpha 1−εα):
w ⃗ ← w ⃗ − ε [ α w ⃗ + ∇ w J ( w ⃗ ; X , y ⃗ ) ] ← ( 1 − ε α ) w ⃗ − ε ∇ w J ( w ⃗ ; X , y ⃗ ) \begin{equation} \begin{aligned} \vec{w}&\leftarrow\vec{w}-\varepsilon[\alpha\vec{w}+\nabla_wJ(\vec{w};X,\vec{y})] \\ &\leftarrow(1-\varepsilon\alpha)\vec{w}-\varepsilon\nabla_wJ(\vec{w};X,\vec{y}) \end{aligned} \end{equation} w ←w −ε[αw +∇wJ(w ;X,y )]←(1−εα)w −ε∇wJ(w ;X,y )
训练过程:
令 w ⃗ ∗ \vec{w}^{*} w ∗ 为 未正则化的目标函数 取得最小训练误差时的权重向量(令 w ⃗ ∗ \vec{w}^{*} w ∗ 为 未正则化时最优训练权重)
w ⃗ ∗ = a r g m i n w J ( w ⃗ ) \vec{w}^{*}=argmin_w J(\vec{w}) w ∗=argminwJ(w )
并在 w ⃗ ∗ \vec{w}^{*} w ∗的邻域对目标函数做二次近似 (损失为MSE则完美近似),即泰勒展开至二次项。
J ^ ( θ ) = J ( w ⃗ ∗ ) + 1 2 ( w ⃗ − w ⃗ ∗ ) ⊤ H ( w ⃗ − w ⃗ ∗ ) \hat{J}(\theta)=J(\vec{w}^{*})+\frac{1}{2}(\vec{w}-\vec{w}^{*})^{\top}H(\vec{w}-\vec{w}^{*}) J^(θ)=J(w ∗)+21(w −w ∗)⊤H(w −w ∗)
由于 w ⃗ ∗ \vec{w}^{*} w ∗最优; ∇ w ∗ J ( w ⃗ ∗ ) = 0 \nabla_{{w}^{*}}J(\vec{w}^{*})=0 ∇w∗J(w ∗)=0,故式中无一次项,且 H e s s i a n Hessian Hessian矩阵 H H H半正定。
这里对 H e s s i a n Hessian Hessian矩阵的正定性判定做出补充 (一般方阵也适用) ,主要根据其特征值 Λ \Lambda Λ (由 λ i \lambda_i λi组成对角阵) 判断:
当 Λ > 0 \Lambda \gt 0 Λ>0, H e s s i a n Hessian Hessian矩阵 正定
当 Λ ≥ 0 \Lambda \ge 0 Λ≥0, H e s s i a n Hessian Hessian矩阵 半正定
当 Λ < 0 \Lambda \lt 0 Λ<0, H e s s i a n Hessian Hessian矩阵 负定
当 Λ ≤ 0 \Lambda \le 0 Λ≤0, H e s s i a n Hessian Hessian矩阵 半负定
当 Λ \Lambda Λ中正负 λ i \lambda_i λi均存在时, H e s s i a n Hessian Hessian矩阵 不定
判断 H H H半正定(简单理解 不严谨 仅供参考):
假设 w ⃗ ∗ = [ w 1 w 2 ] \vec{w}^{*}=\begin{bmatrix} w_1 \\ w_2 \end{bmatrix} w ∗=[w1w2],已知 ∇ w ∗ J ( w ⃗ ∗ ) = 0 \nabla_{{w}^{*}}J(\vec{w}^{*})=0 ∇w∗J(w ∗)=0,即 ∂ J ∂ w 1 = ∂ J ∂ w 2 = 0 \frac{\partial J}{\partial w_1}=\frac{\partial J}{\partial w_2}=0 ∂w1∂J=∂w2∂J=0,可得 \\frac{\\partial\^2J}{\\partial w_1\\partial w_2}= \\frac{\\partial\^2J}{\\partial w_2\\partial w_1}=0
因 Δ ≥ 0 \Delta\ge0 Δ≥0 且 方程中二次项为正数1,故方程 ∣ λ I − H ∣ = 0 |\lambda I-H|=0 ∣λI−H∣=0,至少有1个非负根。
从而得出Hessian矩阵的特征值大于等于0,为半正定矩阵。
先前,在 w ⃗ ∗ \vec{w}^{*} w ∗的邻域对目标函数做二次近似 (损失为MSE则完美近似),即泰勒展开至二次项。
J ^ ( w ⃗ ) = J ( w ⃗ ∗ ) + 1 2 ( w ⃗ − w ⃗ ∗ ) ⊤ H ( w ⃗ − w ⃗ ∗ ) \hat{J}(\vec{w})=J(\vec{w}^{*})+\frac{1}{2}(\vec{w}-\vec{w}^{*})^{\top}H(\vec{w}-\vec{w}^{*}) J^(w )=J(w ∗)+21(w −w ∗)⊤H(w −w ∗)
当 J ^ \hat{J} J^取最小时,梯度为0:
∇ w J ^ ( w ⃗ ) = H ( w ⃗ − w ⃗ ∗ ) = 0 \nabla_{w} \hat{J}(\vec{w})=H(\vec{w}-\vec{w}^*)=0 ∇wJ^(w )=H(w −w ∗)=0
在上式中引入L2正则化的梯度 α w ~ \alpha \tilde{w} αw~,假设 α \alpha α为较小值 且此时 w ~ \tilde{w} w~最优, w ~ \tilde{w} w~在 w ⃗ ∗ \vec{w}^{*} w ∗的邻域内 ( α → 0 \alpha \rightarrow 0 α→0 正则化最优解解 w ~ \tilde{w} w~会趋向 w ⃗ ∗ \vec{w}^* w ∗):
α w ~ + H ( w ~ − w ⃗ ∗ ) = 0 ( H + α I ) w ~ = H w ⃗ ∗ w ~ = ( H + α I ) − 1 H w ⃗ ∗ \alpha \tilde{w} + H(\tilde{w}-\vec{w}^*)=0 \\ (H+\alpha I)\tilde{w}=H\vec{w}^* \\ \tilde{w}=(H+\alpha I)^{-1}H\vec{w}^* αw~+H(w~−w ∗)=0(H+αI)w~=Hw ∗w~=(H+αI)−1Hw ∗
由于 Q Q Q是标准正交基,其基向量两两正交且模长为1,可视作新的坐标系, Q A Q ⊤ = B QAQ^\top=B QAQ⊤=B 为空间表达转换式。
故L2正则化或权重衰减的效果沿着由 H H H的特征向量所定义的轴缩放 w ⃗ ∗ \vec{w}^* w ∗,即根据 λ i λ i + α \frac{\lambda_i}{\lambda_i+\alpha} λi+αλi因子缩放与 H H H第 i i i个特征向量对齐 w ⃗ ∗ \vec{w}^* w ∗的分量。
图形表示为:
上图所示,红色实线是正则项区域的边界,蓝色实线是J(w)的等高线,越靠里的等高圆,J(W)越小,负梯度的方向是J(W)减小最快的方向,用 w ⃗ \vec{w} w 表示,正则项边界的法向量用实黑色箭头表示。
最初,介绍L2正则化时,所列举公式如下:
J ~ ( w ⃗ ; X , y ⃗ ) = α 2 w ⃗ ⊤ w ⃗ + J ( w ⃗ ; X , y ⃗ ) \tilde{J}(\vec{w};X,\vec{y})=\frac{\alpha}{2}\vec{w}^{\top}\vec{w}+J(\vec{w};X,\vec{y}) J~(w ;X,y )=2αw ⊤w +J(w ;X,y )
这里将以KKT条件的视角,可以将参数范数惩罚视作对权重强加约束的原因,即利用L2范数规范模型参数。
J ~ ( w ⃗ ; X , y ⃗ ) = α ∗ w ⃗ ⊤ w ⃗ + J ( w ⃗ ; X , y ⃗ ) \tilde{J}(\vec{w};X,\vec{y})=\alpha^*\vec{w}^{\top}\vec{w}+J(\vec{w};X,\vec{y}) J~(w ;X,y )=α∗w ⊤w +J(w ;X,y )
训练神经网络时,得到的w和b不是唯一确定的值,相同的损失函数值可能对应很多不同的w和b。
初始值不同==> 若都能收敛至相同的损失函数最值,其对应权重绝对值大小也不一定不同。
新的数据与大参数相乘,噪声误差随着数值一同放大,判断结果容易出错。
控制参数,使其数值不要那么大。
"框框"→可行域范围内求最值→拉格朗日乘数法→约束w,而b常数项随w变化不考虑,以控制拟合程度。
问题转化:在可行域内,找到使 L o s s ( w ) Loss(w) Loss(w)最小的值。由于L2正则化范围是凸集,该问题等价于凸优化问题。
m i n w J ( w ⃗ ) w ⃗ ⊤ w ⃗ ≤ C , 其中 C 与正则化参数 α ∗ 成反比 min_w \space J(\vec{w}) \\\vec{w}^{\top}\vec{w} \le C, 其中C与正则化参数\alpha^*成反比 minw J(w )w ⊤w ≤C,其中C与正则化参数α∗成反比
与上小节相同,这里将问题简化为二维双轴问题,以解释拉格朗日乘数法与正则化间的关系。
定义拉格朗日乘数法目标函数:
L 0 ( w ⃗ , α ∗ ) = J ( w ⃗ ) + α ∗ ( w ⊤ w − C ) = J ( w ⃗ ) + α ∗ w ⊤ w − α ∗ C \begin{equation} \begin{aligned} L_0(\vec{w},\alpha^*) &=J(\vec{w})+\alpha^*(w^\top w-C) \\ &=J(\vec{w})+\alpha^* w^\top w-\alpha^* C \end{aligned} \end{equation} L0(w ,α∗)=J(w )+α∗(w⊤w−C)=J(w )+α∗w⊤w−α∗C
由于常数项 − α ∗ C -\alpha^* C −α∗C梯度为0,故消去常数项后与原式等价,由此得出L2正则化表达式:
L ( w ⃗ , α ∗ ) = L 0 ( w ⃗ , α ∗ ) + α ∗ C = J ( w ⃗ ) + α ∗ w ⊤ w \begin{equation} \begin{aligned} L(\vec{w},\alpha^*) &=L_0(\vec{w},\alpha^*)+\alpha^* C \\ &=J(\vec{w})+\alpha^*w^\top w \end{aligned} \end{equation} L(w ,α∗)=L0(w ,α∗)+α∗C=J(w )+α∗w⊤w
两目标函数等价,并分别对两目标函数求梯度:
a r g m i n w m a x α , α ≥ 0 L ( w ⃗ , α ∗ ) = a r g m i n w m a x α , α ≥ 0 L 0 ( w ⃗ , α ∗ ) argmin_w \space max_{\alpha, \alpha\ge0} \space L(\vec{w},\alpha^*)=argmin_w \space max_{\alpha, \alpha\ge0} \space L_0(\vec{w},\alpha^*) argminw maxα,α≥0 L(w ,α∗)=argminw maxα,α≥0 L0(w ,α∗)
∇ w L ( w ⃗ , α ∗ ) = ∇ w L 0 ( w ⃗ , α ∗ ) \nabla_w \space L(\vec{w},\alpha^*) = \nabla_w L_0(\vec{w},\alpha^*) ∇w L(w ,α∗)=∇wL0(w ,α∗)
该问题中:
参数 C C C确定圆半径: C C C↑ 可行域圆半径↑ 正则化力度↓
参数 α ∗ \alpha^* α∗控制正则化力度 (确定 w ~ \tilde{w} w~远离 w ⃗ ∗ \vec{w}^* w ∗的程度): α ∗ \alpha^* α∗↑ 正则化力度↑
故参数 C C C与参数 α ∗ \alpha^* α∗成反比
α ∗ \alpha^* α∗乘子负责调节两方梯度大小
损失函数梯度与约束条件梯度方向相反,只有方向相反相加才能为0。
α ∗ \alpha^* α∗稀疏对应损失函数的梯度大小初一约束条件对应函数的梯度大小
不同切点数值不同→确定不同的 α ∗ \alpha^* α∗
反之,确定不同的 α ∗ \alpha^* α∗→确定切点的位置
只有在恰当的位置,损失函数和约束条件的梯度乘以 α ∗ \alpha^* α∗后,相加才能等于0。
只确定了一个超参数 C C C,确定了 C C C则 α ∗ \alpha^* α∗可由它计算出来。
α ∗ \alpha^* α∗不是超参数,无需无需人为确定,只有 C C C能够人为确定,之后计算出 α ∗ \alpha^* α∗来。
在 L L L中,将 α ∗ \alpha^* α∗作为一个超参数,利用两者反比关系整合 C C C的功能,人为确定 α ∗ \alpha^* α∗(即选择哪个点作为问题的最值点)
7.4.3 弹性网络正则化
由于 ℓ1 和 ℓ2 正则化各具特点,可整合二者为一种正则化方式,称为弹性网络正则化 (Elastic Net Regularization)。
θ ∗ = arg min x 1 N ∑ n = 1 N L ( y ( n ) , f ( x ( n ) ; θ ) ) + α 1 l 1 ( θ ) + α 2 l 2 ( θ ) \theta^*={ \underset {x} { \operatorname {arg\,min} } \, \frac{1}{N}\sum^N_{n=1}\mathcal{L}(y^{(n)},f(\boldsymbol{x^{(n)}};\theta))+\alpha_1\mathscr{l}_1(\theta)+\alpha_2\mathscr{l}_2(\theta)} θ∗=xargminN1n=1∑NL(y(n),f(x(n);θ))+α1l1(θ)+α2l2(θ)
训练阶段判定神经元是否丢弃;测试阶段不丢弃神经元,导致训练和测试时输出不一致,所以在测试时需要将每个神经元的输出乘以 p p p,也相当于对应用Dropout的神经元层做出补偿。
对于一个神经层 y = f ( W x + b ) \bold{y}=f(W\bold{x}+\bold{b}) y=f(Wx+b),可引入一个丢弃函数 d ( ⋅ ) d(\cdot) d(⋅) 使得 y = f ( W d ( x ) + b ) \bold{y}=f(Wd(\bold{x})+\bold{b}) y=f(Wd(x)+b)。
丢弃函数 d ( ⋅ ) d(\cdot) d(⋅)定义为:
d ( ⋅ ) = { m ⊙ x , 训练阶段 p x , 测试阶段 d(\cdot)=\left\{ \begin{aligned} \begin{matrix} \bold{m} \odot \bold{x} &, \space 训练阶段 \\ p \bold{x} &, \space 测试阶段 \\ \end{matrix} \end{aligned} \right. d(⋅)={m⊙xpx, 训练阶段, 测试阶段
其中 m d \bold{m}^d md是丢弃掩码(dropout mask),通过以概率为 p p p的伯努利分布随机生成,即以 p p p为概率随机将部分神经元置为0,从直观上可理解为丢弃部分神经元,其结果可看作是一个只包含原始神经元子集的网络。