RNN里面使用dropout

    RNN通常意义上是不能使用dropout的,因为RNN的权重存在累乘效应,如果使用dropout的话,会破坏RNN的学习过程。

但是,Google Brain在15年专门发表了一篇文章研究这个:recurrent neural network regularization

他们在非循环阶段使用了dropout,改善了过拟合的现象

论文在两个地方使用了dropout,图中虚线部分就是使用了dropout,实线部分没有使用

 非循环阶段不存在权重的累乘效应,不会破坏RNN的学习过程

为了更加清楚的看,画了一幅图:

图中的dropout和recurrent_dropout都是dropout,只是作业在不同的地方,keras对其也有设置了参数:

model.add(LSTM(100, dropout=0.2, recurrent_dropout=0.2))
还有就是我们可以在非RNN阶段也可以使用dropout,比如这样的:

model.add(..)
model.add(LSTM(10))
model.add(Dropout(0.5))

上面的的代码的意思是执行LSTM之后是可以使用dropout的

猜你喜欢

转载自blog.csdn.net/zhou_438/article/details/108577209
RNN