您的位置:首页 > 职场人生

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

2019-03-21 20:31 344 查看

 

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

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

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

求导过程

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

 为什么要用交叉熵

求导结果

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

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

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

2. 合页损失函数HingleLoss

3. 梯度下降的比较

 

mini-batch gradient descent的挑战

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

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

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

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

 

 

 

 

 

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐