深度学习优化技巧汇总

一、batch-nrom和layer norm

  1. norm的作用
    出发点:让每一层的参数稳定下来,避免梯度消失和爆炸,方便后续的学习;也在一定程度上防止了过拟合。
    怎么避免的呢:经过归一化再输入激活函数,得到的值大部分会落入非线性函数的线性区,从而远离导数饱和区,避免了梯度消失,这样一来可以使用较大的学习率来加速训练收敛过程。
  2. batch norm 和layer norm 的定义区别
    Batch Normalization 的处理对象是对一批样本, Layer Normalization 的处理对象是单个样本。Batch Normalization 是对这批样本的同一维度特征做归一化, Layer Normalization 是对这单个样本的所有维度特征做归一化。
    如下图所示,来源于知乎1
    深度学习优化技巧汇总_第1张图片
  3. 应用场景区别
    BatchNorm就是通过对batch size这个维度归一化来让分布稳定下来;LayerNorm则是通过对Hidden size这个维度归一。
    一般来说,如果你的特征依赖于不同样本间的统计参数,那BN更有效。因为它抹杀了不同特征之间的大小关系,但是保留了不同样本间的大小关系。(CV领域)
    而在NLP领域,LN就更加合适。因为它抹杀了不同样本间的大小关系,但是保留了一个样本内不同特征之间的大小关系。对于NLP或者序列任务来说,一条样本的不同特征,其实就是时序上字符取值的变化,样本内的特征关系是非常紧密的。
  4. 架构中 batch norm 的用法
    深度学习优化技巧汇总_第2张图片
    具体内容见链接2,这位大哥在里面进行了详细的计算

二、dropout

text CNN的论文《Convolutional Neural Networks for Sentence Classification》里面讲:使用大模型+dropout 是一个很不错的方式。
主要内容来源于知乎链接3

  1. 定义
    Dropout可以作为训练深度神经网络的一种trick供选择。在每个训练批次中,通过忽略一半的特征检测器(让一半的隐层节点值为0),可以明显地减少过拟合现象。这种方式可以减少特征检测器(隐层节点)间的相互作用,检测器相互作用是指某些检测器依赖其他检测器才能发挥作用。

  2. 实现方式
    训练阶段:深度学习优化技巧汇总_第3张图片

  3. 测试阶段:
    因为我们训练的时候会随机的丢弃一些神经元,但是预测的时候就没办法随机丢弃了。如果丢弃一些神经元,这会带来结果不稳定的问题,也就是给定一个测试数据,有时候输出a有时候输出b,结果不稳定,这是实际系统不能接受的,用户可能认为模型预测不准。那么一种”补偿“的方案就是每个神经元的权重都乘以一个p,这样在“总体上”使得测试数据和训练数据是大致一样的。比如一个神经元的输出是x,那么在训练的时候它有p的概率参与训练,(1-p)的概率丢弃,那么它输出的期望是px+(1-p)0=px。因此测试的时候把这个神经元的权重乘以p可以得到同样的期望。

  4. 为什么说Dropout可以解决过拟合?
    (1)取平均的作用:
    dropout掉不同的隐藏神经元就类似在训练不同的网络,随机删掉一半隐藏神经元导致网络结构已经不同,整个dropout过程就相当于对很多个不同的神经网络取平均。
    (2)减少神经元之间复杂的共适应关系
    换句话说假如我们的神经网络是在做出某种预测,它不应该对一些特定的线索片段太过敏感,即使丢失特定的线索,它也应该可以从众多其它线索中学习一些鲁棒性更强的共同特征。
    (3)Dropout类似于性别在生物进化中的角色
    性别的出现可以快速繁衍出适应新环境的变种,有效的阻止过拟合,即避免环境改变时物种可能面临的灭绝。

三、分类算法中为什么使用的是交叉熵损失函数

  1. 分类问题,都用 onehot + cross entropy
  2. 为什么不能用 classification error
    在这里插入图片描述
    classification error 很难精确描述模型与理想模型之间的距离。
    cross-entropy 更清晰的描述了模型与理想模型的距离。
  3. 为什么不用 Mean Squared Error (平方和)
    MSE 可以度量 模型与理想模型的距离,但如果用 MSE 计算 loss, 输出的曲线是波动的,有很多局部的极值点。 即,非凸优化问题 (non-convex)
    深度学习优化技巧汇总_第4张图片
    cross entropy 计算 loss,一般情况下可以收敛到更好的局部极小值点处,即一般情况下在精度上更好一些。
    深度学习优化技巧汇总_第5张图片
  4. 公式理解 mse 和交叉熵
    参考知乎4
    深度学习优化技巧汇总_第6张图片
    我们知道 sigmoid的求导结果是y’(1-y’),也就是对应着A(1-A). 平方损失中的平方提供了一个预测,即提供了一个A;而交叉熵的log提供的是 1/预测 ,即提供了一个1/A,起到了中和作用。
    A2(1-A)的图像如下:
    深度学习优化技巧汇总_第7张图片
    从上可知:
    (1)随着绝对误差的增大,权值需要调整的幅度先变大后变小,这就导致当绝对误差很大时,模型显得“自暴自弃”不肯学习。
    (2)使用交叉熵之后,绝对误差和需要调整的幅度成正比。

四、ROC和AUC曲线

详情见《百面机器学习》

你可能感兴趣的:(python,深度学习)