机器学习面试第2弹 交叉熵损失vs.平方损失+ 合页损失函数HingleLoss+ 梯度下降函数的比较GD,SGD,Momentum,Adam

 

1. 为什么要用交叉熵损失代替平方损失

为什么不用二次方代价函数

权值​和偏置​的偏导数为​

求导过程

机器学习面试第2弹 交叉熵损失vs.平方损失+ 合页损失函数HingleLoss+ 梯度下降函数的比较GD,SGD,Momentum,Adam_第1张图片

偏导数受激活函数的导数影响,sigmoid函数导数在输出接近0和1时非常小,会导致一些实例在刚开始训练时学习得非常慢。

 为什么要用交叉熵

机器学习面试第2弹 交叉熵损失vs.平方损失+ 合页损失函数HingleLoss+ 梯度下降函数的比较GD,SGD,Momentum,Adam_第2张图片

机器学习面试第2弹 交叉熵损失vs.平方损失+ 合页损失函数HingleLoss+ 梯度下降函数的比较GD,SGD,Momentum,Adam_第3张图片

求导结果

这个梯度公式与激活函数对z的偏导数无关,只与激活函数作用于z后的输出与期望的输出y有关,

从这个梯度公式可以看出输出和期待的输出相差越大,梯度就越大,因此学习速率就会加快。

这就是为什么交叉嫡损失函数可以解决二次损失函数带来的学习速率慢的问题。

2. 合页损失函数HingleLoss

机器学习面试第2弹 交叉熵损失vs.平方损失+ 合页损失函数HingleLoss+ 梯度下降函数的比较GD,SGD,Momentum,Adam_第4张图片

3. 梯度下降的比较

机器学习面试第2弹 交叉熵损失vs.平方损失+ 合页损失函数HingleLoss+ 梯度下降函数的比较GD,SGD,Momentum,Adam_第5张图片

机器学习面试第2弹 交叉熵损失vs.平方损失+ 合页损失函数HingleLoss+ 梯度下降函数的比较GD,SGD,Momentum,Adam_第6张图片

 机器学习面试第2弹 交叉熵损失vs.平方损失+ 合页损失函数HingleLoss+ 梯度下降函数的比较GD,SGD,Momentum,Adam_第7张图片

mini-batch gradient descent的挑战

  • 如何选择正确的学习率。学习率太小收敛太慢。学习率太大导致损失函数在极值点波动或发散。

  • 调整训练期间的学习速率。例如根据预定义的时间减少学习率,或者当epoch之间的目标的变化降到阈值以下时,即early stopping。 然而,这些时间计划和阈值必须提前定义,因此不能适应数据集的特性。

  • 对所有参数使用相同的学习率。 如果数据稀疏,并且每个特征具有不同的使用频率,我们不想将其全部更新到相同的程度,但是对使用频率较少的特征执行更大的更新。 
    (ps:数据稀疏,例如对于文本分类问题,通常使用bag-of-words作为特征,每个文档都用一个向量表示,向量的长度是词表的长度,并且有很多值是0,代表文档中没有这个词。那么这个数据就是稀疏数据。而对于图片来说,每个图片都有像素,且值不为0,这个数据就是稠密数据)

  • 对于神经网络通用的高度非凸的误差函数最小化的另一个关键挑战是避免陷入其众多次优局部最小值中。 Dauphin等人认为难度实际上不是来自局部最小值,而是来自鞍点, 这些鞍点通常被具有相同误差的平台包围,这使得SGD难以逃脱,因为梯度在所有维度上接近于零。 

机器学习面试第2弹 交叉熵损失vs.平方损失+ 合页损失函数HingleLoss+ 梯度下降函数的比较GD,SGD,Momentum,Adam_第8张图片 

 机器学习面试第2弹 交叉熵损失vs.平方损失+ 合页损失函数HingleLoss+ 梯度下降函数的比较GD,SGD,Momentum,Adam_第9张图片

 

机器学习面试第2弹 交叉熵损失vs.平方损失+ 合页损失函数HingleLoss+ 梯度下降函数的比较GD,SGD,Momentum,Adam_第10张图片 

 

 

 

你可能感兴趣的:(机器学习,算法)