3.1 局部极小值与鞍点
3.1.1 临界点及其种类
我们所关注的梯度为零的点:局部最小值,局部最大值,鞍点
而:
局部极小值:一段邻域内是让因变量值最小的自变量选取点
鞍点:一段邻域内仍有可继续优化的点可选择。
3.1.2 判断临界值种类的方法
泰勒级数近似:
使用梯度和海森矩阵(Hessian matrix)判断损失函数形状。
在二次型与正负定的矩阵中,可知:
∀x⃗≠0⃗,∃A∈MR(n,n),x⃗TAx⃗>0,则称矩阵A为正定矩阵∀x⃗≠0⃗,∃A∈MR(n,n),x⃗TAx⃗<0,则称矩阵A为负定矩阵
\forall \vec{x} \neq \vec{0},\exist A \in MR(n,n),\vec{x}^T A \vec{x} > 0,则称矩阵A为正定矩阵
\\
\forall \vec{x} \neq \vec{0},\exist A \in MR(n,n),\vec{x}^T A \vec{x} < 0,则称矩阵A为负定矩阵
∀x=0,∃A∈MR(n,n),xTAx>0,则称矩阵A为正定矩阵∀x=0,∃A∈MR(n,n),xTAx<0,则称矩阵A为负定矩阵
其中MR(n,n)MR(n,n)MR(n,n)为n×nn \times nn×n大小矩阵组成的矩阵环。
正定矩阵与负定矩阵的判断还有顺序主子式,特征值判断等方法。下面对于临界点的判断,括号内即特征值判断法。
判断标准:
正定矩阵(所有特征值为正)表示局部极小值。
负定矩阵(所有特征值为负)表示局部极大值。
混合特征值(特征值有正有负)表示鞍点。
3.1.3 逃离鞍点的方法
说个是废话的废话:鞍点不常见,局部极小值少见。在我目前的学习与编程过程中,于智能优化算法上,matlab得到的局部最小值是经常有的事情,鞍点反倒是难以判断的。
书里有说实际遇到的多为鞍点而非局部极小值,这倒是让我对鞍点更为谨慎了。
另:高维空间(三维以上)中常有路径逃离鞍点。
海森矩阵的作用:
其特征向量可指引参数更新方向。而实际计算往往复杂,举个例子,不然牛顿迭代法也不会有许多简化运算的延伸。
3.2 批量和动量
批量(Batch):
实际计算梯度并非对所有数据一次性计算,而是将数据分成小批量进行梯度计算。像这样每个批量的处理称为一个回合(epoch)。
注意:
1.计算出梯度所花费的时间会随着批量大小的增加而逐渐增长。
2.梯度下降法有:
批量梯度下降法(Batch Gradient Descent,BGD)
随机梯度下降法(Stochastic Gradient Descent,SGD)
前者全批量,无批量之分,使用整个数据集计算梯度;后者可以选择批量数,也会引入随机噪声,从而更容易脱离局部最小值。这是好理解的,用个不数学严谨的说法,随机噪声可以帮助陷入局部最小值的点更能随机移动,跑出局部最小值。
而综合上述两个方法有小批量梯度下降(Mini-Batch GD),它结合了两者的优点。
动量法(Momentum Method)是除梯度下降法外,另外一个可以对抗鞍点或局部最小值的方法,它通过引入动量项来加速梯度下降,模拟物理中的惯性,从而帮助优化,更有效地突破鞍点和局部极小值。
两个公式:
- 基本梯度下降公式:
θt=θt−1−η∇L(θt−1) \theta_t = \theta_{t-1} - \eta \nabla L(\theta_{t-1}) θt=θt−1−η∇L(θt−1) - 动量法公式:
vt=λvt−1−η∇L(θt−1) v_t = \lambda v_{t-1} - \eta \nabla L(\theta_{t-1}) vt=λvt−1−η∇L(θt−1)
θt=θt−1+vt \theta_t = \theta_{t-1} + v_t θt=θt−1+vt
vtv_tvt是移动量,从参数θt−1\theta_{t-1}θt−1到θt\theta_{t}θt的向量。
λ\lambdaλ 是动量系数(前一个方向的学习参数)
η\etaη 是学习率。
这种可以累积的动量,在积累了过去的梯度基础上,形成了惯性,可能帮助跨越诸如局部最小值的小障碍。