閱讀論文:
Kitaev, Nikita, ?ukasz Kaiser, and Anselm Levskaya. “Reformer: The efficient transformer.” arXiv preprint arXiv:2001.04451 (2020).
背景與動機
這篇論文發表較早,主要關注Transformer的效率問題。標準的Transformer模型在許多自然語言處理任務上取得了最先進的結果,但它在長序列上的訓練和推理代價非常大。主要的計算和內存瓶頸在于自注意力機制中的點積注意力,其復雜度為 O ( L 2 ) \Omicron(L^2) O(L2),其中 L L L是序列長度。隨著 L L L的增大,計算和內存需求急劇增加。因此,Transformer難以擴展到處理長序列的任務。
模型與方法
- 引入基于局部敏感哈希(LSH)的近似注意力機制,將自注意力的復雜度從 O ( L 2 ) \Omicron(L^2) O(L2)降低到 O ( L log ? L ) \Omicron(L\log L) O(LlogL),大大減少了內存和計算需求。具體來說,文章首先使用隨機投影作為敏感哈希函數。相似的query和key通過投影轉換后可以映射到相同的哈希桶中。然后根據query和key的哈希值對序列進行排序。相似的query和key會聚集在一起。在排序后的序列上,將每個query塊只與相鄰的幾個query塊計算注意力。這樣可以大約保證每個塊內的query可以attend到相似的key。最后使用多輪不同的哈希函數和注意力計算,綜合多個注意力輸出,可以降低哈希誤差。
- 使用17年別人提出的一個可逆殘差網絡取代標準的前饋和殘差連接以減少內存占用。這允許在訓練過程中只需保存每層的一個激活副本,而不是N個副本,其中N是層數。
- 將前饋網絡中的激活拆分為多塊分別處理,減小每層的內存占用。
實驗
在拼寫重復、機器翻譯以及圖像生成等多個任務上驗證了Reformer的有效性。結果表明,Reformer模型比標準Transformer有相同的建模能力,但在長序列任務上速度更快,內存占用也少得多。例如,在64K詞元的英文文本建模任務上,12層的Reformer只需要一個GPU就可以高效訓練,而Transformer基本無法進行訓練。
總的來說,Reformer是一個既高效又強大的長序列Transformer模型。它結合了可縮放的近似注意力機制與高效的網絡結構,能夠在單機單卡上處理長度達10萬詞元的任務,為Transformer的工業應用提供了可能性。
個人思考
- 文章中實現更高效自注意力的方式是尋找近似方法進行替代,這對于后面的改進是有啟發的,因為類似的替代并非只有一種。而且這類改進存在一個好處就是可以在用于電負荷時序預測模型中去帶一個計算與存儲效率的點,這也是前面閱讀的所有時序預測論文都在關注的一個點。
- 這篇論文也從網絡結構方面對內存消耗進行了優化,對殘差連接進行了優化。在Informer中也對結構進行了關注,具體是改進了decoder的自回歸方式。可見結構方面進行考慮的優化也是大有可為的。此外,幾個最近的Transformer時序預測模型在殘差連接上基本沒有考慮太多,用的是標準殘差連接,可以將可逆殘差連接放到里面試試效果。