#|李宏毅机器学习笔记4 -- DNN训练

李宏毅课程中关于 Tips of deep learning这部分讲的知识点比较多而且很细节。其中的dropout、ReLU等等很早就使用了,但是其中的细节却一直没有注意,这里总结一下课程中的知识,趁机巩固一下基础。
开篇 #|李宏毅机器学习笔记4 -- DNN训练
文章图片

作者主要介绍了五部分,针对的是训练集表现不好即以测试集(验证集)表现不好(过拟合)两个问题。
训练集表现不好 当模型在训练集表现不好时,有可能是模型复杂度不够,但是在Deep Learning中这种情况并不多见,所以问题更多集中在激活函数、learning rate不合适等Network本身结构问题。
测试集表现不好 训练集表现良好测试集表现不好,这是明显的过拟合现象,说明模型过于复杂,便要想办法降低模型的复杂度。
无论是dropout、regularization还是早停机制都是降低模型的复杂度,从而克服过拟合问题。
New Activation Function Sigmoid的局限 因为Sigmoid函数本身特征,其会将差距很大的多个input映射到取值为0~1的output中。
#|李宏毅机器学习笔记4 -- DNN训练
文章图片

这一特征会使得很多在input上很明显的变化在output上可以忽略不记,而深层神经网络更加加剧了这一问题,这一问题被称为Vanishing Gradient Problem。#|李宏毅机器学习笔记4 -- DNN训练
文章图片

ReLU激活函数 为克服Sigmoid的这一问题,引入了ReLU激活函数。#|李宏毅机器学习笔记4 -- DNN训练
文章图片

这里还有其变形:#|李宏毅机器学习笔记4 -- DNN训练
文章图片

最后作者介绍了Maxout,ReLU可以算作它的特殊化。#|李宏毅机器学习笔记4 -- DNN训练
文章图片

在原论文 Maxout Network 中作者证明Maxout可以拟合任意一个convex function(凸函数?):
#|李宏毅机器学习笔记4 -- DNN训练
文章图片

在网上查找Maxout时很多人都提到虽然Maxout表现好但参数较多……我总觉得和Max Pooling有点神似……
附一篇对于激活函数的总结文章。
Adaptive Learning Rate 训练的效率和 learning rate 的设置密切相关,learning rate过大过小都不好,所以最好的方式就是使learning rate根据当前梯度变化趋势调整大小。
现在用的比较多的是Adam:
#|李宏毅机器学习笔记4 -- DNN训练
文章图片

其中 momentum变量是应用动量原理,使得在梯度下降到局部最优时有惯性尝试去跳出局部最优点;RMSprop使得learning rate大小根据梯度的变化缓急进行调整(和之前总结过的Adgrad相类似)。
至于作者在 compute bias-corrected first/second estimate时除以定值,作者也有相应的解释,以first moment extimate为例:
m t m_t mt?可表示为:
m t = ( 1 ? β 1 ) ∑ i = 1 t β 1 t ? i ? g t m_t = (1-\beta_1)\sum_{i=1}^t \beta_1^{t-i} \cdot g_t mt?=(1?β1?)i=1∑t?β1t?i??gt?
在该值训练开始时,因为初始值 m 0 m_0 m0?初始为0,故在训练前期 m t m_t mt?会偏向于0。
因为这是一个累加过程,开始过小会导致整个过程中 m t m_t mt?偏小,故除以 1 ? β 1 1-\beta_1 1?β1?来消除初始值带来的影响。
同理 v t v_t vt?也是如此。
Early Stopping #|李宏毅机器学习笔记4 -- DNN训练
文章图片

这个很简单,迭代次数过多时,较复杂的模型可能会学习训练集中的噪音信息,从而导致过拟合。
所以在有过拟合趋势时停止训练便可以避免过拟合。
Regularization 关于正则化其实也比较简单吧,很直觉的东西:
#|李宏毅机器学习笔记4 -- DNN训练
文章图片

根据上面PPT中w t + 1 = ( 1 ? η λ ) w t ? η ? L ? w w^{t+1}=(1-\eta \lambda) w^t - \eta\frac{\partial L}{\partial w} wt+1=(1?ηλ)wt?η?w?L?,L2正则化使得w w w较原来减小。
#|李宏毅机器学习笔记4 -- DNN训练
文章图片

上面PPT为L1正则化,对比L2正则化,其参数值在更新中因为需要减掉常数,值更小甚至趋向于零。
故可以总结:

  • L1正则化使得参数矩阵稀疏化,部分参数归零
  • L2正则化使得参数相较于未正则化减小
Dropout 【#|李宏毅机器学习笔记4 -- DNN训练】#|李宏毅机器学习笔记4 -- DNN训练
文章图片

训练比较简单,关键的是测试的时候:#|李宏毅机器学习笔记4 -- DNN训练
文章图片

作者以及之前Maxout那篇论文中都有讲过,Dropout有点类似于使用集合学习,每一次Dropout剩下来的神经元便是一个子学习器,最后乘以一定参数构成最终的学习器。

    推荐阅读