文章目录
Recipe of Deep Learning
three step of deep learning
- 定义函数集(网络结构)
- 函数的优点(损失函数——交叉熵)
- 选择最好的函数(梯度下降——优化)
overfitting就是在training set上performance很好,但在testing set上performance没有那么好
深度学习不是像k最近邻这种方法,一训练就可以得到非常好的正确率,深度学习一般不会过拟合
Good Results on Training Data
New activation function
ReLU
选择ReLU的理由如下:
- 跟sigmoid function比起来,ReLU的运算快很多
- ReLU的想法结合了生物上的观察( Pengel的paper )
- 无穷多bias不同的sigmoid function叠加的结果会变成ReLU
- ReLU可以处理Vanishing gradient的问题( the most important thing )
Leaky ReLU
Maxout
Adaptive learning rate
Adagrad
RMSProp
这里的值是自由调整的
Momentum
Adam
其实RMSProp加上Momentum, 就可以得到Adam
描述一下Adam的algorithm:
- 先初始化就是Momentum中, 前一个时间点的movement
再初始化就是RMSProp里计算gradient的root mean square的
最后初始化, t用来表示时间点 - 先算出gradient
- 再根据过去要走的方向和gradient, 算出现在要走的方向一一Momentum
- 然后根据前一个时间点的和gradient的平方, 算一下放在分母的RMSProp
- 接下来做了一个原来RMSProp和Momentum里没有的东西, 就是bias correction,它使和都除上一个 值, 这个值本来比较小, 后来会越来越接近于1 (原理详见paper)
- 最后做update, 把Momentum建议你的方向乘上learning rate, 再除掉RMSProp normalize后建议的 learning rate分母,然后得到update的方向
Good Results on Testing Data?
Early Stopping
需要验证集来实现early stopping
Regulation
L2 regularization具体工作流程如下:
- 我们加上regularization term之后得到了一个新的loss function:
- 将这个oss function对参数求微分:
- 然后update参数
L1 regularization的工作流程如下:
- 我们加上regularization term之后得到了一个新的loss function:
- 将这个loss function对参数求微分:
- 然后update参数
Weight Decay
Dropout
Dropout真正要做的事情,就是要让你在training set上的结果变差,但是在testing set上的结果是变好的]