智源社區 & AI科技評論
作者 | Mr Bear
2020 年 11 月 1 日,微軟亞洲研究院副院長、IEEE會士、ACM傑出科學家劉鐵巖博士在第十九屆中國計算語言學大會(CCL)上發表了題為「四兩撥千斤:實現高效的NLP模型預訓練」的主題演講。目前,GPT-3 等模型的預訓練任務需要使用大量的計算資源,計算效率低下。在本次演講中,劉鐵巖博士從數據處理、模型結構、損失函數、優化算法等多個維度介紹了微軟亞洲研究院(MSRA)的研究者們針對高效 NLP 模型訓練的研究。
1
大規模模型預訓練
圖 1:自然語言理解
2018 年,微軟亞洲研究院主任研究員周明博士帶領其團隊在自然語言理解數據集 SQuAD 1.1 上使用深度學習方法首次使機器閱讀理解達到了人類的水平,進一步吸引了越來越多的研究人員加入到該賽道中來,不斷刷新該領域的世界紀錄。
圖 2:機器翻譯
此外,微軟 2018 年研發的「中-英」機器翻譯技術的翻譯水平也可以「與人類相媲美」,劉鐵巖教授團隊所研發的「對偶學習」技術正是這一成就背後的核心技術。次年,微軟將對偶學習技術應用到了更多的語言對上,在 WMT 2019 的多個賽道中取得了優異的成績。
圖 3:內容生成
近年來,自然語言處理模型的預訓練成為了 NLP 研究領域的熱點,著名的 GPT-3 最近也掀起了一波新的研究浪潮, 它在內容生成、問答系統等任務中都取得了令人矚目的優異性能。
圖 4:Transformer 模型
從機器學習模型的角度來看,2017 年提出的 Transformer 模型是上述預訓練技術的基礎。除了「編碼器-解碼器」架構之外,Transformer 還引入了大量的注意力機制(例如,自注意力機制、交叉注意力機制等)。Transformer 是機器學習和 NLP 領域的裡程碑式的工作,為我們帶來了很多新的可能性。
圖 5:大規模預訓練——大力出奇蹟
然而,2017 年後,人們在機器學習模型創新方面乏善可陳,並未出現類似於 Transformer 的強大的新模型。於是,越來越多的研究人員關注於利用更大的數據量和更強的計算資源,在現有模型的基礎上訓練規模更大、參數更多的模型架構。他們相信,在使用大量數據和計算資源的條件下,即使使用簡單的模型也可以取得比創新性模型更好的性能。
圖 6:大規模預訓練高昂的計算開銷
這種大規模預訓練的計算開銷是十分巨大的。如圖 6 所示,起初大多數科研機構的計算資源還足以復現大規模預訓練的結果,然而,2020 年提出的 GPT-3 已經擁有了 1,750 億個參數,需要花費近 1,200 萬美元才能完成一次訓練,這是絕大多數科研機構無法負擔的。因此,儘管大規模預訓練帶來許多驚喜的性能提升,但巨大的開銷導致相關研究被科技巨頭壟斷,大多數科研人員的資源並不足以支撐相關的研究,無法實現公平的百家爭鳴的局面。這樣一來,掌握大量計算資源和資本的寡頭可能會完全掌控學術的發展,導致創新停滯,這並不是一種健康的學術生態狀況。
2
如何打破魔咒?
我們可以通過對預訓練過程形式化建模,分析每一步的計算開銷,來改善問題。
圖 7:預訓練的機器學習視角
如圖 7 所示,模型預訓練問題可以表述為以下四個方面:
紫色的部分為滿足一定底層的概率分布的訓練數據;
紅色部分為模型架構(例如,神經網絡的層數、每層的連接結構、是否包含注意力機制、是否包含跳躍連結等);
綠色的部分為訓練的目標函數;
藍色的部分為最大化或最小化目標函數的優化策略。
案例:BERT
圖 8:BERT 簡析
以 BERT 為例,在數據方面,BERT 使用了來自於文本語料庫與 WikiPedia 的數據;在模型方面,BERT 使用了標準的 12 層 Transformer 架構;在目標函數方面,BERT 使用了基於類似於「完形填空」的掩模語言模型,隨機地將 15% 的單詞屏蔽掉,並試圖根據上下文預測出被屏蔽掉的單詞;在優化方面,BERT 採用了標準的 SGD、Adam 等常用的優化技巧。
圖 9:預訓練的計算開銷
基於上述分析,在這四個方面可以作出如下改善:
從數據的層面上來說,我們需要考慮數據的質量和利用效率;從模型架構的角度來說,BERT 使用的是 Transformer 模型,可以參考 Transformer 收斂過程的效率(即 Transformer 對信息編碼和分析的效率及其穩定性);從目標函數的角度來說,BERT 等模型都使用了掩模語言模型目標,可以改進該任務詞例(Token)的效率以及任務的難度;在優化策略方面,採用更加高級的「訓練路線圖」(Roadmap),從而共享中間結果,節省計算量可以成為不錯的方案。
圖 10:算法加速整體解決方案
近期,Fast-BERT、Light-BERT、Tiny-BERT等輕量級的模型旨在基於預訓練好的大型模型,通過知識蒸餾、剪枝、稀疏表達等技術在推理階段壓縮大型預訓練模型,從而提升推理效率。然而,這類工作並未嚴肅考量如何提升預訓練過程本身的效率。
為此,微軟亞洲研究院團隊在過去的兩年中研發了 FastPT,在訓練數據、模型架構、訓練目標、優化策略四個方面都進行了深入的探索,並將這些研究成果集成在一起,極大提高了預訓練的性能和效率。值得一提的是,這個研究方向仍然存在著很大的提升空間。
3
大數據≠好數據
圖 11:NLP 訓練數據中的詞例
在訓練語料中,存在著大量的高頻詞例,其上下文信息和統計信息有助於利用這些詞訓練模型,我們將其稱為「好數據」。然而,訓練預料中也存在一些較難訓練的罕見詞例,它們的上下文信息不如高頻詞例顯著,我們將其稱為「壞數據」。但是這些罕見詞例仍然包含很大的信息量,在許多任務中具有重要意義,我們仍然需要設法利用它們。此外,還有一類數據被稱為「Ugly data」,這類數據可能會對訓練帶來意外的幹擾。
圖 12:不可學習的數據
如圖 12 所示,綠色的 BERT 模型旨在預測出被屏蔽掉的網站 URL 部分,此處的 URL 就是一種典型的「Ugly data」。這是因為任何的 URL 都是可能是合理的,我們幾乎無法根據上下文預測出 URL。此外,UTF-8 等編碼可能對「子詞」(sub-word)的嵌入帶來巨大的挑戰。上述兩類數據都與我們預想的自然語言文本中的關聯關係不一致,它們會對訓練過程造成負面影響。而如 11 所示,這類「Ugly data」符合長尾分布,即存在大量「Ugly data」。簡而言之,我們可以檢測出這些模式,用特殊的詞例(例如,、等)將這些部分的文本替換掉,轉而預測這種特殊詞例。
圖 13:包含不相關子詞的低頻詞
此外,有些低頻詞包含特定的「子詞」,但這些子詞並不具備我們想像的含義。一方面,這些詞例的嵌入難以學習;另一方面,在我們通過反向傳播等方法學習「子詞」嵌入時,這些極為低頻的、不可學習的詞例可能會為已經學好的「子詞」嵌入帶來隨機的噪聲。例如,電影《太空堡壘》的片名「macross」中包含子詞「macro」,但「macross」與「宏」的意思並無關聯,該詞例中的上下文可能對「macro」的嵌入產生負面影響。因此,對於符合長尾分布的不可學習的「Ugly data」,為了避免發生訓練發散的現象,我們需要對這類數據進行細緻的數據清洗,檢測並替換這些不可學習的詞例。
圖 14:數據清洗實驗結果
通過上述數據清洗過程,我們可以將BERT 的訓練速度提升 2 倍以上。這說明在預訓練過程中,有許多詞例實際上對訓練造成了負面影響。然而,目前鮮有研究人員針對「Ugly data」進行分析和研究,該領域仍然存在很大的探索空間。
圖 15:處理罕見詞例
另一方面,具有重要意義的罕見詞例往往也難被學習。如圖 15 所示,在沒有額外統計信息的情況下,想要回答圖 15 左側的完形填空問題是十分困難的。如果我們想要正確回答這個問題,需要真正理解「COVID-19」一詞的含義。此時,我們需要利用歷史上記錄的句子學習出「COVID-19」的意義。根據「The COVID-19 pandemic is an ongoing global crisis」(COVID-19 是一場持續發生的全球危機),我們可以推測出「COVID-19」與生命有關,從而得出上述完形填空問題的答案「lives」。
圖 16:為罕見詞例「記筆記」
然而,「COVID-19」本身是一個罕見詞例,訓練次數較少,傳統方法學習到的嵌入往往不夠好。為了解決這一問題,我們可以隱式地記錄一部分罕見詞例的上下文信息,單獨為其維護一個嵌入空間,從而在整個循環過程中提升 Transformer 的學習效果。在為罕見詞例進行掩模語言模型的預測時,我們會將罕見詞例的詞嵌入、位置編碼以及「筆記詞典」同時作為 Transformer 的輸入。
圖 17:罕見詞例處理實驗結果
基於上述方案,我們對罕見詞例以及其它詞例的預測性能都得到了大幅提升,通過論文「Taking Notes on the Fly Help BERT Pre-training」中的技術,我們將時間複雜度降低了 60%。
4
大模型≠好模型
圖 18:Transformer 中的位置編碼
然而,Transformer 模型本身仍然存在一些不足。首先,Transformer 中使用了絕對位置編碼和相對位置編碼。絕對位置編碼指的是,針對每個位置 i,我們人為地設計出啟發式的位置嵌入或學習出該位置嵌入。接著將位置嵌入與詞嵌入相加,得到最終的輸入。相對位置編碼指的是在自注意力中加入一些顯示的偏置項。
圖 19:重新思考絕對位置編碼
那麼,加入位置編碼對於學習有什麼幫助呢?回想一下,在詞嵌入的過程中,人們往往假設:在嵌入空間中對詞語做線性變換,其語義可以在很大程度上得以保留。然而,位置編碼在語義空間中並不具有這種可變換性,它相當於人為設計的一種索引。那麼,將這種位置編碼與詞嵌入相加,進而進行線性變換,是否合理呢?
圖 20:在第一層中自注意力的展開式
如圖 20 所示,在第一層自注意力的展開式中包含四項,其中綠色剪頭指向的是「單詞-單詞」和「位置-位置」的相關性,紅色箭頭指向的是「單詞-位置」和「位置-單詞」的相關性。直觀地說,計算綠色部分的相關性是較為合理的,只是這兩種相關性是否應該共享同一個參數矩陣,仍待思考。然而,對於紅色的部分而言,單詞和位置之間的相關性高意味著單詞會很有可能出現在特定的位置上,這種假設相對就不太合理了。
圖 21:調整絕對位置編碼
為此,我們對絕對位置編碼進行了如下調整,實現了名為「TUPE」的位置編碼方式:(1)去掉自注意力展開式中計算單詞與位置相關性的兩項(2)對「單詞-單詞」和「位置-位置」的相關性使用不同的參數進行計算。
圖 22:TUPE 實驗結果
實驗結果表明,TUPE 可以將注意力層中的計算開銷降低 70%,同時提升模型在下遊任務中取得的 GLUE 值。
圖 23:Transformer 模型的魯棒性
另一方面,就模型的魯棒性而言,在訓練 Transformer 的過程中,我們往往需要進行學習率的預熱(Warm up),將學習率逐步提升然後再逐漸衰減。然而,對於不同的 Transformer 模型(例如,大型 Transformer 模型和 base 版的 Transformer 模型)和下遊任務(例如,機器翻譯、語言模型預訓練),儘管學習率預熱往往有所幫助,但是其拐點也不盡相同,從而具有不同的超參數調優需求。相較之下,在計算機視覺領域中,ResNet 在 ImageNet 圖像的分類任務上具有很強的魯棒性,較為合理的學習率 Scheduling 都可以獲得不錯的訓練效果,學習率較易收斂。
圖 24:Transformer 模型缺乏魯棒性的原因
通過進一步分析 Transformer 模型的內部結構,我們發現,Transformer 模型實際上是由一些殘差模塊與層歸一化模塊組合而成。目前最常見的 Transformer 模型都使用了「後處理層歸一化」(Post Layer Norm),即層歸一化模塊位於兩個殘差模塊之間。因此,最終的輸出層與之前的 Transformer 層都沒有直連通路,梯度流會被層歸一化模塊阻斷。相比較ResNet, 每一層的輸出與輸入之間都會有跨越非線性變換的直連通路,將誤差信息反向傳播回來,因而ResNet 每一層的訓練都是充分的,而 Transformer 中只有最接近輸出的層中訓練較為充分,其它層都會發生較為嚴重的梯度衰減(彌散)的現象。
圖 25:Transformer 與 ResNet 訓練過程對比
如圖 25 所示,在 Transformer 中,接近輸出的最頂層具有較大的梯度,而下方的隔層由於被層歸一化模塊阻斷而發生了指數級的梯度衰減現象。因此,在設置學習率時,我們往往會面臨兩難的境地:若使用較大的學習率,在 Transformer 頂層可能會發生梯度爆炸現象;而如果使用較小的學習率,在 Transformer 的底層可能會發生梯度彌散現象。這也正是 Transformer 學習率調優困難的原因,而 ResNet 則不存在上述問題。
圖 26:前處理層歸一化
為了使 Transformer 具備像 ResNet 一樣的魯棒性, 我們將層歸一化模塊合併到殘差模塊中,而不在將其設置在兩個殘差模塊之間,即 Transformer 的「Pre Layer Norm」。通過使用這種方法,頂層的梯度範數將會從 O(d(ln_d)^(1/2)) 降為 O(d(ln_d/L)^(1/2)),同時在底層不會出現梯度彌散現象,從而有效提升模型的穩定性。這樣一來,我們就無需進行複雜的學習率 Scheduling (減少超參數調優時間),並且可以使用更大的學習率(在訓練前期收斂更快)。
圖 27:層歸一化調整實驗結果
在一系列預訓練實驗中的結果表明,通過上述層歸一化的調整,我們可以將時間複雜度降低近 60%。
至此,通過對 Transformer 模型的深刻分析,我們認為與模型有關的算法創新是具有重大意義的,一味追求大模型並不一定能解決算法本身存在的問題。
5
掩模語言模型≠好任務
圖 28:掩模語言模型——完形填空
在目標函數方面,目前許多預訓練模型都會使用掩模語言模型任務,該任務實際上相當於「完形填空」問題。然而,即使對於人類來說,在沒有備選答案的開放環境下,想要準確完成完形填空任務也是十分困難的。
圖 29:多選題任務
實際上,人類更容易完成選擇題或判斷題。在給定選項的條件下,任務的難度會極大降低。著名的「ELECTRA」模型使用的是判斷題任務,在前期的訓練效率很高,模型訓練不會受困於困難的訓練任務。因此,我們希望能夠動態地調整任務難度,在早期學習到的嵌入較弱時令模型完成相對簡單的任務,從而加快學習進程;在後期逐漸加大任務難度,從而獲得更精細的結果。在這裡,我們選擇了難度適中的多選題任務,並且通過選項的個數調節任務的難度(選項越多任務越困難)。
圖 30:使用元控制器進行預訓練
為此,我們實現了一個能夠出題的「元控制器」,它能夠自適應地改變多選題的難度。我們首先訓練了一個較小的 BERT 模型,它為我們提供與當前目標詞相關的詞例,這些詞例將被用於構造備選答案。
圖 31:基於自適應多選題任務的預訓練實驗結果
通過引入元控制器自適應地生成多選題任務,我們可以在提升 GLUE 值的同時將計算開銷降低 80%。
6
優化策略同樣重要
圖 32:CNN 和 Transformer 之間的差別
為了了解如何設計優化策略、算法以及如何從宏觀上組織不同的優化階段,我們試圖分析模型不同層的參數各自有何作用,如果參數之間存在相關性,我們就可能利用這些規律對優化策略進行高級的組織。對卷積神經網絡(CNN)而言,不同層的特徵圖表徵了不同的語義。因此,我們認為 CNN 中不同層的卷積核差異較大,其相關性較小。
圖 33:Transformer 中的注意力分布
然而,對 Transformer 而言,其不同層的 Transformer 模塊都表徵了嵌入語義之間的自注意力。如圖 33 所示,Transformer 不同層中的不同注意力頭的自注意力可視化結果存在著一定的規律(主對角線和第一列的注意力得分較高)。
圖 34:漸進堆疊
受此啟發,我們試圖通過一種堆疊的方式,首先訓練一種淺層的 Transformer,進而根據上述注意力的相似性,使用淺層 Transformer 初始化更深層的 Transformer。通過這種方式,我們可以實現漸進式的堆疊,通過較小的計算開銷訓練更深的 Transformer。
圖 35:漸進堆疊實驗結果
實驗結果表明,這種漸進堆疊的方式可以提升大概 30% 的計算效率。
7
結語
至此,我們從數據、模型、損失函數、優化策略四個方面介紹了如何提升 NLP 預訓練模型的效率。當我們將這四個方面的工作結合在一起,可以得到更大的模型性能提升。
圖 36:GLEU 任務實驗結果
如圖 36 所示,以 BERT 作為對比基線時,FastPT 在使用 BERT 的 1/8 左右的計算開銷的條件下,可以達到優於 BERT 的準確率。以使用了更大數據量的 RoBERTa 作為對比基線時,FastPT 在使用與 BERT 相當的計算開銷的條件下,就可以達到優於 RoBERTa 模型的準確率,相較於 RoBERTa 模型將訓練過程加速了 12 倍。我們相信,如果在該領域進行進一步的探索,完全有可能將訓練效率再提升幾個數量級。
圖 37:Bing QA 任務實驗結果
此外,在微軟的 Bing QA 任務上,相較於 RoBERTa 模型,FastPT 也將訓練效率提升了 10 倍以上。
圖 38:NLP 模型預訓練的未來
在此,我們呼籲更多的機器學習和 NLP 研究人員將精力投入到對模型和算法的創新型改進上,改變 NLP 預訓練領域過度依賴「大力出奇蹟」的局面,實現百花齊放、百家爭鳴。在本次演講中,我們以 BERT 為藍本展開,但是大多數創新聚焦於對數據處理和機器學習模型的創新本身,本文提到的工作對更廣泛的 NLP 任務也具有一定的啟示意義。此外,我們也期待有超越 Transformer 的革命性的新模型誕生。
圖 39:MSRA 在機器學習領域的研究成果
圖 39 列舉出了微軟亞洲研究院(MSRA)過去五年在機器學習領域取得的一系列研究成果。MSRA 機器學習研究組旨在解決機器學習領域核心的痛點問題,例如:主題模型、決策樹、文本到語音的轉錄系統(TTS)、Transformer 訓練結構等。此外,許多開源社區中的從業者也在試圖復現 MSRA 的一系列工作。例如,FastSpeech 是 MSRA 2019 年發布的神經語音合成引擎,它通過神經 TTS 技術實現了實時的語音合成。MSRA 發布的 TOWER 架構也在蛋白質結構預測領域相較於著名的 AlphaFold 模型將性能提升了 8.6%。
活動預告
「CCF-NLP走進高校」是由中國計算機學會自然語言處理專業委員會(CCF-NLP)發起,聯合AI研習社及各個知名高校開展的一系列高校NLP研究分享活動。
「CCF-NLP走進高校」第四期將走進「新疆大學」,一起聆聽新疆大學NLP的前沿研究分享。本次活動邀請的嘉賓有哈爾濱工業大學(深圳)教授徐睿峰、清華大學計算機系長聘副教授黃民烈、天津大學教授熊德意、復旦大學教授黃萱菁、新疆大學教授汪烈軍、西湖大學特聘研究員張嶽。敬請期待!