RNN
计算图展开
比如:
时展开(索引从 1 开始):
vanilla RNN
两种设计
其中:
- :输入
- :输出
- :hidden
- :output
- :loss
有两类:
- 包含隐藏到隐藏的循环
- 包含输出到隐藏的循环
第二类没第一类强大,因为输出层需要完成模型的监督学习任务,所以不能捕捉用于预测未来的关于过去的信息,除非输出本身包含了需要的信息。但第二类训练时可以通过导师驱动过程实现不同时刻的并行化。
具体的更新方程(第一类):
其中 是模型参数。
导师驱动过程
如果模型对于 时刻的信息,只需要 输入到 时刻,那么可以将数据集中给出的 作为 时刻需要的 ,这样实现了在训练时的并行化。
这样训练时并不是最大似然估计,因为往 的预测过程里加了数据集里的真实值,会导致训练和预测时来自上一步的输入分布不一致,即曝光偏差(exposure bias)。
BPTT
RNN 中进行完整的反向传播(BP)速度和内存占用都是 ,随时间反向传播(BPTT)方法通过限制反向传播的时间步数来控制成本。
待补充:花书 10.2.2 - 10.9