您现在的位置是:首页 >学无止境 >Tips for Deep Learning网站首页学无止境
Tips for Deep Learning
目录
Good Results on Training Data?
Recipe of Deep Learning
我们要做的第一件事是,提高model在training set上的正确率,然后要做的事是,提高model在testing set上的正确率。
Good Results on Training Data?
这一部分主要讲述如何在Training data上得到更好的performance,分为两个部分,New activation function和Adaptive Learning Rate。
New activation function
- Vanishing Gradient Problem
当你把network叠得很深的时候,在靠近input的地方,这些参数的gradient(即对最后loss function的微分)是比较小的;而在比较靠近output的地方,它对loss的微分值会是比较大的。
Δw通过sigmoid function之后,得到output是会变小的
-
ReLU
优点:
跟sigmoid function比起来,ReLU的运算快很多。
ReLU的想法结合了生物上的观察。
无穷多bias不同的sigmoid function叠加的结果会变成ReLU。
ReLU可以处理Vanishing gradient的问题。
-
Maxout
Maxout就是让network自动去学习它的activation function。ReLU就是特殊的Maxout。
Maxout中的激活函数可以被分段为多个线性的凸函数,多少段取决于之前我们分组后一组元素的个数。
- How to train Maxout
由于我们有很多很多笔training data,所以network的structure在训练中不断地变换,实际上最后每一个weight参数都会被train到。
Adaptive learning rate
- Adagrad
- RMSProp
用一个α来调整对不同gradient的使用程度,比如把α的值设的小一点,意思就是更倾向于相信新的gradient所告诉的error surface的平滑或陡峭程度,而比较无视于旧的gradient所提供给的information。
- Momentum
每次移动的方向,不再只有考虑gradient,而是现在的gradient加上前一个时间点移动的方向。
- Adam
Good Results on Testing Data?
这一部分主要讲述如何在Testing data上得到更好的performance,分为三个模块,Early Stopping、Regularization和Dropout。
Early Stopping
假如我们知道testing set上的loss变化,我们应该停在testing set最小的地方(如图所示)。但是我们不知道你的testing set上的error是,所以我们会用validation来代替。
Regularization
在update参数的时候,其实是在update之前就已近把参数乘以一个小于1的值(η、λ都是很小的值),这样每次都会让weight小一点。最后会慢慢变小趋近于0,但是会与后一项梯度的值达到平衡,使得最后的值不等于0,L2的Regularization又叫做Weight Decay。
每一次更新时参数时,我们一定要去减一个ηλsgn(wt)(w值是正的,就是减去一个值;若w是负的,就是加上一个值,让参数变大)。
L2、L1都可以让参数变小,但是有所不同的,若w是一个很大的值,L2乘以一个小于1的值,L2下降的很快,很快就会变得很小,在接近0时,下降的很慢,会保留一些接近0的值;L1的话,减去一个固定的值(比较小的值),所以下降的很慢。
Dropout
在train的时候,每一次update参数之前,对network里面的每个neural(包括input),做sample(抽样)。 每个neural会有p%会被丢掉,跟着的weight也会被丢掉。testing的时候不做dropout,所有的neuron都要被用到,假设在training的时候,dropout rate是p%,从training data中被learn出来的所有weight都要乘上(1-p%)才能被当做testing的weight使用。