Transformer 作為一個 NLPer 一定要知道的經典模型,沒有手刻一遍好像說不過去。
本文將搭配原理詳解 Transformer 的各個 component 的實作方法。(之後會更新)
一開始實作 Decoder 時,我對於為什麼要實作一個遮罩避免模型先偷看到答案這件事情,感到非常疑惑。難道不是一個一個字 decode 嗎?為什麼會有偷看到答案的問題呢?
因為 Transformer 在 inference 時,確實不用考慮這個問題,因為這時候是使用 auto-regressive 的方式來生成 sequence,也就是說上一個時間點 model 的輸出會作為這個時間點的輸入。然而大家發現這種方法常常導致生成模型難以收斂,於是有人 teacher-forcing 的做法,就是直接把上一步的 ground truth 當成當前的輸入,用這種方式來矯正模型的預測,也極大的加快模型收斂的速度。