lstm_dropout

  • 由于网络参数过多,训练数据少,或者训练次数过多,会产生过拟合的现象。
  • dropout是神经网络中避免过拟合最有效的正则化方法
  • dropout 每一层的神经元按照不同的概率进行dropout,这样每次训练的网络都不一样,对每一个的batch就相当于训练了一个网络,dropout本质是一种模型融合的方式,当dropout设置为0.5时,模型总类最多为2^n, 另外在更新参数时,只对保留的神经元进行更新,也能加快训练速度
  • 传统的dropout在rnn中使用的效果不是很好,因为rnn有放大噪音的功能,所以会反过来伤害模型的学习能力;
  • 在rnn中使用dropout要在同一个t时刻中,多层cell之间传递信息的时候进行dropout,而不是神经元;从t-1状态传递到t时刻进行计算时,这中间不进行memory的dropout.
model.add(LSTM(100, dropout=0.2, recurrent_dropout=0.2))
model.add(Dropout(0.5))
  1. 第一个dropout是x和hidden之间的dropout
  2. 第二个recurrent_dropout是hidden-hidden之间的dropout
  3. 第三个Dropout是层-层之间的dropout

lstm_dropout_第1张图片
dropout表示对 W x W_x Wx的dropout,recurrent_dropout表示对 W h W_h Wh 的dropout.

你可能感兴趣的:(NLP)