系列文章目录
文章目录
- 系列文章目录
- 循环神经网络
- 使用循环神经网络的语言模型
- 困惑度(perplexity)
- 梯度剪裁
循环神经网络
使用循环神经网络的语言模型
输入“你”,更新隐变量,输出“好”。
困惑度(perplexity)
语言模型说白了,是个分类模型,我的输出是对下一个词的预测,假设一共有m个词,也就是m个类的分类问题,对于分类问题,当然可以使用交叉熵来做。
梯度剪裁
对于长度为
T
T
T的序列,我们在迭代中计算这
T
T
T个时间步上的梯度,将会在反向传播过程中产生长度为
O
(
T
)
\mathcal{O}(T)
O(T)的矩阵乘法链,当
T
T
T较大时,它可能导致数值不稳定。
一个流行的替代方案是通过将梯度
g
\mathbf{g}
g投影回给定半径(例如
θ
\theta
θ)的球来裁剪梯度
g
\mathbf{g}
g。
如下式:
g ← min ( 1 , θ ∥ g ∥ ) g . \mathbf{g} \leftarrow \min\left(1, \frac{\theta}{\|\mathbf{g}\|}\right) \mathbf{g}. g←min(1,∥g∥θ)g.
通过这样做,我们知道梯度范数永远不会超过 θ \theta θ,并且更新后的梯度完全与 g \mathbf{g} g的原始方向对齐。