[19.02] GPT-2
四十八層解碼器
Language models are unsupervised multitask learners
第一代的 GPT 疊了十二層 Transformer 解碼器。
OpenAI 覺得這樣不夠,於是他們疊了四十八層 Transformer 解碼器,這就是 GPT-2。
定義問題
作者認為現有的機器學習系統表現出色,但其實充滿問題。
在這篇文章中,簡要的說明了幾個方向:
脆弱性
- 機器學習 系統在資料分佈和任務規範的輕微變化方面表現出脆弱性。
- 這些系統對於不同輸入的多樣性和變化缺乏穩定性,導致不穩定的行為。
狹隘專家的局限性
- 當前的機器學習系統更像是狹隘的專家,而不是通用型的系統,限制了其應用範圍。
- 這些系統依賴於為每個特定任務手動建立和標記訓練資料集,過程繁瑣且不具通用性。
泛化能力不足
- 單域資料集上單任務訓練的普遍存在導致了系統缺乏泛化能力。
- 為了實現穩健的系統,可能需要在更廣泛的領域和多任務上進行培訓和測量效能。
解決問題
這篇論文沒有提出新的模型架構,而是將現有的 GPT-1 模型進行了擴展。
模型設計
首先,將 LayerNorm 移到了每個子塊的輸入處,這與前啟動殘差網路類似。此外,作者在最後一個自注意力塊(self-attention block)之後添加了一個額外的層歸一化。
作者使用了一種修改過的初始化方法,考慮到模型深度增加時殘差路徑上的累積。在初始化時將殘差層的權重按 1/√N 的因子進行縮放,這裡 N 是殘差層的數量。
為了增強模型的能力,作者將詞彙表擴展到 50,257。上下文大小也從 512 增加到 1024 個 Tokens,並且使用更大的 Batch size 為 512。
提示
如果你有經驗,就會知道在這種設計下,Batch size 為 512 真的是個很大的數字。
多任務學習
一個通用系統應該能夠執行許多不同的任務。這意味著系統需要對 P(輸出|輸入,任務) 進行建模,而不僅僅是對單一任務的條件分佈 P(輸出|輸入) 進行建模。
在這裡,作者提出的實現方式為:將輸入和輸出全部指定為符號序列,並使用語言建模來訓練模型。例如,翻譯訓練範例可以表示為(翻譯為法文、英文文字、法文文字),而閱讀理解訓練範例可以表示為(回答問題、文件、問題、答案)。
總之,就是用文字說明,來區分不同的任務。