Datawhale x李宏毅苹果书 AI夏令营|神经网络训练不起来怎么办(1):局部最小值(:Loacl Minima)与鞍点(Saddle Point)

148 阅读5分钟

深度学习中的loss function

深度学习中的损失函数(Loss Function)是用来估量模型的预测值与真实值之间的不一致程度的一个函数。它是一个非负实值函数,通常使用 L(Y,f(X)) 来表示,其中 Y 代表真实值,f(X) 代表模型的预测值。损失函数越小,说明模型的预测值越接近真实值,即模型的性能越好。

深度学习中有许多不同类型的损失函数,以下是一些常见的损失函数:

  1. 均方误差损失(Mean Squared Error Loss,MSE)

    MSE=n1​i=1∑n​(yi​−y^​i​)2

    其中 yi​ 是真实值,y^​i​ 是预测值,n 是样本数量。MSE常用于回归问题。

  2. 交叉熵损失(Cross-Entropy Loss)

    H(p,q)=−x∑​p(x)logq(x)

    其中 p(x) 是真实值的概率分布,q(x) 是预测值的概率分布。交叉熵损失常用于分类问题。

  3. 对数似然损失(Log Likelihood Loss)

    L(Y,P(Y∣X))=−logP(Y∣X)

    对数似然损失也常用于分类问题,特别是在输出层使用softmax函数的神经网络中。

  4. Hinge损失

    L(y)=max(0,1−t⋅y)

    其中 t 是目标值(+1或-1),y 是预测值。Hinge损失常用于支持向量机(SVM)中。

  5. 0-1损失函数

    L(Y,f(X))={1,0,​if Y=f(X)if Y=f(X)​

    0-1损失函数直接衡量预测值是否与真实值相等,但在实际应用中由于其非凸、不连续等性质,很少直接使用。

选择合适的损失函数对于训练一个有效的深度学习模型至关重要。不同的任务和数据集可能需要不同的损失函数。例如,对于回归问题,通常使用MSE;对于分类问题,则常使用交叉熵损失。在实际应用中,还可以根据任务的具体需求设计自定义的损失函数。

local minima和saddle point

在深度学习中,local minima(局部最小值点)和saddle point(鞍点)是优化过程中常见的两种critical point(临界点),即梯度为零的点。下面分别解释这两种点的特性及区别:

Local Minima(局部最小值点)

  • 定义:在函数的某个局部区域内,该点的函数值小于或等于其邻域内所有其他点的函数值,且在该点的梯度为零。

  • 特性

    • 局部最优性:在局部最小值点附近,函数值不会比该点更低。
    • 梯度为零:在该点的梯度向量(即所有偏导数组成的向量)为零,表示在该方向上没有进一步下降的空间。
    • 可能存在的问题:在深度学习中,如果模型参数陷入局部最小值点,可能会导致训练过程提前停止,因为从该点出发,无论沿哪个方向移动,损失函数值都不会进一步减小。然而,对于复杂的深度神经网络来说,由于其高度非凸的特性,实际中遇到真正的局部最小值点的概率相对较低。

Saddle Point(鞍点)

  • 定义:一个既不是局部最大值也不是局部最小值的临界点,其函数值在某个方向上比周围点高,在另一个方向上比周围点低,形似马鞍,故得名鞍点。

  • 特性

    • 梯度为零:与局部最小值点相同,鞍点的梯度也为零。
    • 不稳定性:鞍点周围存在多个方向,其中一些方向可能导致函数值增加,而另一些方向则可能导致函数值减小。因此,鞍点是不稳定的平衡点。
    • 在深度学习中的重要性:虽然鞍点不是最优解,但由于其梯度为零的特性,模型参数在优化过程中容易陷入鞍点。与局部最小值点不同,从鞍点出发,有可能通过调整参数找到更低的损失函数值。

区分Local Minima和Saddle Point

在深度学习中,区分局部最小值点和鞍点对于理解模型优化过程具有重要意义。一种常用的方法是分析Hessian矩阵(二阶导数矩阵)的特征值:

  • 如果Hessian矩阵的所有特征值都是正的,则该点为局部最小值点。
  • 如果Hessian矩阵的所有特征值都是负的,则该点为局部最大值点(尽管在优化过程中较少关注)。
  • 如果Hessian矩阵的特征值有正有负,则该点为鞍点。

然而,由于计算Hessian矩阵及其特征值的计算量较大,在实际应用中很少直接采用这种方法来区分局部最小值点和鞍点。相反,研究者们更倾向于采用启发式的方法(如动量法、自适应学习率调整等)来帮助模型参数逃离鞍点或局部最小值点,以找到更好的解。

综上所述,local minima和saddle point是深度学习中优化过程中常见的两种临界点,它们各自具有不同的特性和重要性。在实际应用中,了解这两种点的区别有助于更好地理解模型的优化过程并采取相应的策略来改进模型的性能。