梯度消失与爆炸

使用 Keras 构建语言建模的循环神经网络(RNN)

David Cecchini

Data Scientist

训练 RNN 模型

RNN 展开图,展示从一个输入词到句末的前向传播,以及时间反向传播更新权重

使用 Keras 构建语言建模的循环神经网络(RNN)

显示前向传播阶段及相关变量的数学定义

示例: $$a_2 = f(W_a, a_1, x_2)$$

$$= f(W_a, f(W_a, a_0, x_1), x_2)$$

使用 Keras 构建语言建模的循环神经网络(RNN)

显示时间反向传播阶段及其数学定义

请记住:

$$ a_T = f(W_a, a_{T-1}, x_T) $$

$a_T$ 还依赖于 $a_{T-1}$,而 $a_{T-1}$ 依赖于 $a_{T-2}$ 和 $W_a$,等等!

使用 Keras 构建语言建模的循环神经网络(RNN)

BPTT(续)

求导得到

$$ \frac{\partial a_t}{\partial W_a} = (W_a)^{t-1}g(X) $$

  • $(W_a)^{t-1}$ 可能收敛到 0

  • 或发散到 $+\infty$!

使用 Keras 构建语言建模的循环神经网络(RNN)

梯度问题的解决方案

一些已知的解决方案:

梯度爆炸

  • 梯度裁剪 / 缩放

梯度消失

  • 更好的矩阵 W 初始化
  • 使用正则化
  • 用 ReLU 替代 tanh / sigmoid / softmax
  • 使用 LSTM 或 GRU 单元!
使用 Keras 构建语言建模的循环神经网络(RNN)

开始练习吧!

使用 Keras 构建语言建模的循环神经网络(RNN)

Preparing Video For Download...