简介
Teacher Forcing策略在RNN中经常被用到,例如machine translation、image caption、text summarization等语言模型任务。
Teacher Forcing策略使训练RNN更快速收敛且效果还挺好。
RNN模型表示
公式
P ( y 1 , y 2 , . . . , y T ) = P ( y 1 ) ∏ t = 2 T P ( y t ∣ y 1 , y 2 , . . . , y t − 1 ) P(y_{1}, y_{2}, ..., y_{T}) = P(y_{1}) \prod_{t=2}^{T}{P(y_{t} | y_{1}, y_{2}, ..., y_{t-1} )} P(y1,y2,...,yT)=P(y1)t=2∏TP(yt∣y1,y2,...,yt−1)
因此,在预测下一个step T时,是将前面T-1个step的输出当作输入来预测的。
什么是Teacher Forcing策略
简单来说,就是在训练时,使用前T-1个step的Ground Truth来输出第T个step的值。
举个例子:
例如想生成一句话:
<S> 我 非常 喜欢 吃 饺子 和 馄饨 </S>
在训练时:
0. 输入 输出 Ground Truth
1. <S> 我 我
2. <S> 我 ? 非常
3. <S> 我 非常 ? 喜欢
4. <S> 我 非常 喜欢 ? 吃
...
为什么采用Teacher Forcing策略
1. 训练时模型更稳定可以快速收敛
例如想生成一句话,不使用Teacher Forcing:
<S> 我 非常 喜欢 吃 饺子 和 馄饨 </S>
数据集中还有一句话,假设:
<S> 你 咋 不 上 天 呢 </S>
训练时,以2-gram为例,不使用teacher forcing
0. 输入 输出 Ground Truth
1. <S> 你 我
2. 你 咋 非常
3. 咋 ? 喜欢
4. ? ? 吃
...
使用teacher forcing
0. 输入 输出 Ground Truth
1. <S> 你 我
2. 我 咋 非常
3. 非常 ? 喜欢
4. 喜欢 ? 吃
...
这样的话在训练时,输出和Ground Truth不一致,Loss很容易发散,很难收敛。上面举的例子仅供参考理解。
很多论文的实验也证明不使用 Teacher Forcing,模型很难收敛,就算收敛结果也不好。
2.可以训练但结果不好
我自己在做Captioning实验时,训练时不使用Teacher Forcing策略,发现就算模型最终训练成功,性能反而也不好。这是一个问题。