NLP領域中更有效的遷移學習方法
在深度學習領域,遷移學習(transfer learning)是應用比較廣的方法之一。該方法允許我們構建模型時候不光能夠借鑑一些其它科研人員的設計的模型,還可以借用類似結構的模型引數,有些類似於站在巨人的肩膀上進行深入開發。本文將講述如何在NLP領域中更高效地應用遷移學習。
今年春天,我 在ODSC East會議上發表了題為 ofollow,noindex" target="_blank">“NLP中的有效遷移學習 ”的演講。該演講展示了預訓練的單詞和文件嵌入層在訓練資料集較小時取得的優異結果,併為將這些技術應用於工程任務中提出了一系列實用建議。此外,感謝[Alec Radford和OpenAI團隊的一些出色研究](),使得之前提出的一些建議發生了一些變化。
為了解釋發生變化的原因,首先回顧一下之前在Indico會議中使用的評估方法,以評估一種新穎的機器學習方法是否適用於工業用途中。
評估新的機器學習方法
對於廣泛的實際應用,機器學習模型必須對照以下大多數要求檢驗自身:
- 快速訓練
- 快速預測
- 需要極少或不需要超引數調整
- 在訓練資料可用性較低時執行良好(100個示例)
- 適用於廣泛的任務及對應的領域
- 在標記的訓練資料上能夠很好地擴充套件
讓我們看看預先訓練好的單詞+文件嵌入層如何滿足這些要求:
- 快速訓練
在預訓練嵌入層之上訓練輕量級模型所花費的時間在幾秒鐘內是可能的,儘管計算預訓練嵌入層依賴於基礎模型複雜度。 - 快速預測
預測同樣快速,預測與基礎模型花費一樣的代價。 - 需要極少或不需要超引數調整
正則化引數和嵌入型別的交叉驗證對其是有所幫助的,並且這種操作足夠便宜而且不會引入問題。 - 在訓練資料可用性較低時起作用(100個示例)
在預訓練的單詞嵌入層之上應用邏輯迴歸塊僅需要學習100s~1000s的引數而不是數百萬的引數,並且模型的簡單性意味著它需要非常少的資料就能獲得良好的結果。 - 適用於廣泛的任務及對應的領域
預訓練的單詞和文件嵌入層通常的表現是“足夠好”,但具體任務需要與領域和目標模型相關。 - 在標記的訓練資料上能夠很好地擴充套件
這種方法非常快速,並且不會從額外的訓練資料中獲益。學習線性模型有助於用更少的資料產生更好的結果,但這也意味著模型學習到的輸入和輸出之間複雜關係的能力也要低得多。
簡而言之,使用 預訓練的嵌入層在計算上花費少,並且在訓練資料可用性較低的情況下表現良好 ,但是使用靜態表示對從額外的訓練資料獲得的增益會受到限制。從預先訓練的嵌入層中獲得良好的效能需要為給定的任務搜尋正確的預訓練嵌入層,但是很難預測一個預先訓練嵌入層是否能夠很好地推廣到一個新的目標任務,這就需要通過一次次實驗來驗證了。
計算機視覺中的遷移學習解決方案
值得慶幸的是,在計算機視覺領域中的相關研究提供了一種可行的替代方案。在計算機視覺領域中,使用預先訓練的特徵表示已經在很大程度上被“微調”預訓練模型而不僅僅是學習最終分類層的方法所取代。修改源模型的所有權重,而不是簡單地重新初始化和學習最終分類層的權重。隨著訓練資料可用性的增加,這種額外的模型靈活性開始帶來回報。
這種方法的來源基礎已有幾年歷史了——從Yosinski、Clune、Bengio等人在2014年探討了 卷積神經網路(CNN)引數的可遷移性 開始,直到最近這個過程才成為普遍的做法。現在,在CNN網路中應用微調方法是很常見的,斯坦福大學 計算機視覺課程(CS231N) 中將這一過程作為課程的一部分,以及Mahajan等人的2018年論文(“ 探索弱監督預訓練的極限 ”)表明,當模型效能作為至關重要時,應該始終使用微調來代替預訓練的特徵。
自然語言處理的模型驗證
那麼為什麼自然語言處理領域如此落後呢?在Sebastian Ruder的一篇文章中寫道 “ NLP的ImageNet時刻已經到來 ”,他認為造成這個現象的原因是該領域中缺乏用於學習可推廣基礎模型的既定資料集和源任務。直到最近,自然語言處理領域仍然缺乏ImageNet類似的資料集。
然而,在最近的論文中,如 Howard 和Ruder的 “ 通用語言模型微調文字分類 ” 和Radford的論文 “ 通過生成性預訓練提高語言理解 ” 已經證明模型微調最終在自然語言領域中顯示出前景。儘管在這些論文中採用的源資料集各不相同,但NLP領域似乎正在將“語言建模”目標標準化,作為訓練可遷移基礎模型的首選。
簡單地說,語言建模是預測序列中下一個單詞的任務。鑑於部分句子“我以為我會按時到達,但最終____5分鐘”,對於讀者來說,下一個單詞將是“遲到”的同義詞是相當明顯的。有效地解決這一任務不僅需要理解語言結構(名詞遵循形容詞,動詞有主語和物件等),還需要根據廣泛的語境線索做出決策的能力(“遲到”是填寫在示例中的空白處,因為前面的文字提供了說話者正在談論時間的線索。)此外,語言建模具有不需要標記的訓練資料這一理想特性,且原始文字對於每一個可想象的領域都是豐富的。這兩個特性使得語言建模成為學習可泛化的基本模型的理想選擇。
然而,語言建模目標並不是使NLP模型微調的唯一必要條件。使用 “遷移”模型 代替典型的復現模型(LSTM)也發揮了重要作用。在“通過生成性預訓練提高語言理解力”中看到,微調遷移模型的效能與微調復現(LSTM)模型之間存在顯著差異。LSTM不再是序列建模的標準——非迴圈模型已經在各類任務中表現出強有力的競爭性。
John Miller的部落格文章中寫道,“ 當遞迴模型不需要遞迴 ”,暗示LSTM理論上的無限記憶可能實際上並不存在。此外,固定的上下文視窗儲存器可能足以解決諸如語言建模之類的任務,並且遷移模型的殘餘塊結構似乎很適合遷移學習應用程式。簡而言之,遷移模型的理論缺點被其優勢所抵消,例如更快的訓練和預測時間。
模型微調是否符合設定的標準?
鑑於最近的進展,讓我們重新看看微調模型如何滿足之前的要求:
- 快速訓練
雖然與預先計算的特徵表示相比計算代價更高,但OpenAI的遷移模型可以在約5分鐘內通過GPU硬體在幾百個示例中進行微調。 - 快速預測
預測所花費的代價也更高,吞吐量限於每秒一位數的文件。在廣泛實際應用之前,必須改進預測速度。 - 需要極少或不需要超引數調整
在各個任務中使用預設超引數的工作效果非常好,雖然基本交叉驗證尋找理想的正則化引數是有益的。 - 在訓練資料可用性較低時執行良好(100個示例)
模型微調在低至100個示例的資料量表現與使用與訓練嵌入層一樣。 - 適用於廣泛的任務及領域
領域與任務匹配的問題似乎比預訓練的特徵特徵表示更少,語言建模目標似乎學習了適用於語義和句法任務的特徵。 - 在標記的訓練資料上能夠很好地擴充套件
使用預先訓練的特徵表示無法解決的任務,可以通過在足夠的訓練資料下使用非常複雜的模型解決。隨著更多的訓練資料變得可用,預訓練特徵和模型微調之間的差距大大擴大。事實上,微調似乎通常比從頭開始訓練更加可取——OpenAI的論文“通過生成式預訓練提高語言理解”展示了的最新結果。
雖然它有一定的侷限性,但NLP任務的模型微調具有很大的前景,並且已經顯示出優於當前使用預訓練的文字和文件嵌入層這一最佳實踐的明顯優勢。
Sebastian Ruder總結到:
“在NLP領域中實踐遷移學習的時機已經成熟。鑑於ELMo、ULMFiT和OpenAI取得的令人印象深刻的實證結果,這似乎只是時間問題,最終直到預訓練的單詞嵌入層將被淘汰,這可能會促進在標籤資料量有限的NLP領域中開發出許多新的應用程式。王者已逝,新的王者也誕生!“
NLP模型定位的定量研究
我們早期的基準測試證實,對使用預先訓練的表示進行微調模型有一個通用的好處。下面是使用我們的遷移學習基準測試工具 Enso 獲得的最近基準測試的輸出示例 。
圖中的每個點表示來自完整資料集的隨機子集上的5次試驗的平均值+ 95%置信區間。X軸表示可用的標記訓練資料點數量,Y軸分別是平均ROC AUC和精度。在擬合之前對訓練資料集進行過取樣,這些結果是擬合約2500個模型的集合。
微調模型是OpenAI的遷移語言模型的實現,基線模型是在手套詞嵌入上訓練的交叉驗證邏輯迴歸。儘管存在更強的基線用於比較,但是在該訓練資料量下,手套嵌入的平均值對於大多數分類任務來說是比較好的基線了。後續希望在未來的基準測試中釋出與其他方法的比較,但仍然令人驚訝的是,在只有100個標記的訓練樣例下,模型微調取得的效果仍優於簡單的基線。有關23種不同分類任務的完整基準測試可在 s3下載 。
微調:Scikit-Learn 樣式模型微調庫
鑑於這一最近的發展,Indico開源了一個 包裝類(wrapper) ,用於OpenAI在遷移模型微調方面的工作。 我們嘗試通過將其打包成易於使用的 scikit-learn樣式庫 ,使Radford的研究應用更加廣泛,後續會講述如何使用一些簡短的程式碼使用微調來實現對自己任務的改進敬請期待。
作者資訊
Madison May 資料解決方案首席技術官
本文由阿里云云棲社群組織翻譯。
文章原標題《More Effective Transfer Learning for NLP》,譯者:海棠,審校:Uncle_LLD。
文章為簡譯,更為詳細的內容,請 檢視原文 。