文章目录
Recipe of Deep Learning
在Deep learning中,我们一定是先看training data的表现好不好,然后再看在testing data上面的表现。如果在training data就不好,要先调整模型达到不错的表现。
所以我们不要一看到20-layer比50-layer在testing表现好,就说50-layer 过拟合了,先要去看下它们在testing data的结果。从结果可以看出,20-layer在training data已经比50-layer好了,可能的原因很多,比如50-layer的local minimum点比20的高。
所以不是所有的方法我们都可以随便用,比如当traning data的效果不好时,就不能用dropout。只有说training data的表现很好,但是testing data表现不好的时候,才可以用。
# Vanishing Problem
在MINIST项目中,为什么层数越多,准确率越低?
因为激活函数用了sigmoid函数,sigmoid函数由于把很大的值都映射到了0-1的区间内,所以层数越多,对后面output的输出的影响越小,导致越往后训练,前面改变很大,后面也很难改变了,近乎于收敛。
ReLU
由于ReLU的特性,会让网络变得很瘦的线性网络,但是这依然可以解决非线形的问题,因为是多层的。(自己理解)
Maxout
Maxout Network相当于Max Pooling在神经网络中的应用。
由于Maxout有的神经元会消失,但是每次traning data消失的不同,导致每次的激活函数长的也不一样。是一个可学习的激活函数。
Adagrad & RMSprop
Local Minimum
Yan Lecun在07年说过,如果每一维都有谷底,那么1000个features就是1000个谷底,每一个谷底时p。那么就是p**1000.所以不要担心有很多local minimum,很可能你找到的就是global或者接近global。
Adam
Early Stopping
这里的testing set其实就是validation set
Regularization
我们做regularization的时候,不考虑bias,因为我们正则主要是让函数更平滑,bias一般不管平滑,而是函数上下移动。
L2 norm的式子,我们可以看到w会乘以一个接近于1的值,所以w不论是正还是负,都会不断的趋近于0。又由于后面减去了梯度,所以这个值会不断的接近于后面那个值。L2 正则其实在神经网络里的效果没有在SVM好,它相当于一个weight decay。
L1 norm就是绝对值,绝对值的求导这里用了sgn,表示如果是正数,导数就是1,如果是负数,导数就是-1.
从L1的式子可以看出,它最后总是要减去一个固定的值(蓝线部分)。而L2总是通过乘一个接近1的值去衰减。
那么如果我们有一个很大的w,比如w=1000000。这个w在L1的下降每次都是固定值,所以很慢,可能最后也还是会很大。但是在L2上面,就会下降的很快,因为是不断的累乘。所以这就是为什么L1的正则化,会让参数变得稀疏,有的w很大,有的趋近于0. 而L2正则达不到这样的效果。
Weight Decay
Dropout
每一次对于不同的mini batch,神经网络drop的neuron是不同的。
Testing的时候,使用的是全部的神经元。并且所有的w都乘1-p。
Intuitive 解释:
原理解释:
Dropout像是终极的ensemble。集成学习。
每一次dropout后的神经网络都不同。但是最终testing的时候,会使用全部的神经元,这个时候w需要乘1-p
集成起来的y的平均值和y是近似相等的。
比如我们用线形的激活函数,可以看到这两种情况的y是相等的。如果不是线形激活,最后的结果是近似的。