在deep learning中,很常用的一个trick就是dropout技术。

dropout顾名思义就是丢弃,丢弃的是每一层的某些神经元。有什么作用呢?在DNN深度网络中过拟合问题一直存在,dropout技术可以在一定程度上防止网络的过拟合。
假设每一层神经元丢弃概率是p,那么保留下来概率就是1-p。每一个神经元都有相同的概率被丢弃和保留。
所以dropout其实就是一个伯努利变量,并且把dropout放在激励函数层,公式中a是激励函数,通常为Relu,xk表示输入的vector,wk是weight,b是bias。对于第i个神经元,

这是常规的dropout技术,还有一种Inverted dropout.其实就是将保留的概率改为(1-p)的倒数。这样实际上在训练阶段将激励函数进行缩放。

另外,虽然不能保证每次网络丢弃的神经元个数是N*p,但是平均丢弃是N*p。并且dropout技术通常与L2 范数或者其他参数约束技术(比如Max Norm)一起使用,从而帮助简化学习率的选择过程。
网友评论