NLP领域中更有效的迁移学习方法
? ? ? ?在深度學習領域,遷移學習(transfer learning)是應用比較廣的方法之一。該方法允許我們構建模型時候不光能夠借鑒一些其它科研人員的設計的模型,還可以借用類似結構的模型參數,有些類似于站在巨人的肩膀上進行深入開發。本文將講述如何在NLP領域中更高效地應用遷移學習。
? ? ? ?今年春天,我?在ODSC East會議上發表了題為??“NLP中的有效遷移學習”的演講。該演講展示了預訓練的單詞和文檔嵌入層在訓練數據集較小時取得的優異結果,并為將這些技術應用于工程任務中提出了一系列實用建議。此外,感謝[Alec Radford和OpenAI團隊的一些出色研究](),使得之前提出的一些建議發生了一些變化。
? ? ? ?為了解釋發生變化的原因,首先回顧一下之前在Indico會議中使用的評估方法,以評估一種新穎的機器學習方法是否適用于工業用途中。
評估新的機器學習方法
對于廣泛的實際應用,機器學習模型必須對照以下大多數要求檢驗自身:
- 快速訓練
- 快速預測
- 需要極少或不需要超參數調整
- 在訓練數據可用性較低時運行良好(100個示例)
- 適用于廣泛的任務及對應的領域
- 在標記的訓練數據上能夠很好地擴展
? ? ? ?讓我們看看預先訓練好的單詞+文檔嵌入層如何滿足這些要求:
- 快速訓練
在預訓練嵌入層之上訓練輕量級模型所花費的時間在幾秒鐘內是可能的,盡管計算預訓練嵌入層依賴于基礎模型復雜度。 - 快速預測
預測同樣快速,預測與基礎模型花費一樣的代價。 - 需要極少或不需要超參數調整
正則化參數和嵌入類型的交叉驗證對其是有所幫助的,并且這種操作足夠便宜而且不會引入問題。 - 在訓練數據可用性較低時起作用(100個示例)
在預訓練的單詞嵌入層之上應用邏輯回歸塊僅需要學習100s~1000s的參數而不是數百萬的參數,并且模型的簡單性意味著它需要非常少的數據就能獲得良好的結果。 - 適用于廣泛的任務及對應的領域
預訓練的單詞和文檔嵌入層通常的表現是“足夠好”,但具體任務需要與領域和目標模型相關。 - 在標記的訓練數據上能夠很好地擴展
這種方法非??焖?#xff0c;并且不會從額外的訓練數據中獲益。學習線性模型有助于用更少的數據產生更好的結果,但這也意味著模型學習到的輸入和輸出之間復雜關系的能力也要低得多。
? ? ? ?簡而言之,使用預訓練的嵌入層在計算上花費少,并且在訓練數據可用性較低的情況下表現良好,但是使用靜態表示對從額外的訓練數據獲得的增益會受到限制。從預先訓練的嵌入層中獲得良好的性能需要為給定的任務搜索正確的預訓練嵌入層,但是很難預測一個預先訓練嵌入層是否能夠很好地推廣到一個新的目標任務,這就需要通過一次次實驗來驗證了。
計算機視覺中的遷移學習解決方案
? ? ? ?值得慶幸的是,在計算機視覺領域中的相關研究提供了一種可行的替代方案。在計算機視覺領域中,使用預先訓練的特征表示已經在很大程度上被“微調”預訓練模型而不僅僅是學習最終分類層的方法所取代。修改源模型的所有權重,而不是簡單地重新初始化和學習最終分類層的權重。隨著訓練數據可用性的增加,這種額外的模型靈活性開始帶來回報。
? ? ? ?這種方法的來源基礎已有幾年歷史了——從Yosinski、Clune、Bengio等人在2014年探討了卷積神經網絡(CNN)參數的可遷移性開始,直到最近這個過程才成為普遍的做法?,F在,在CNN網絡中應用微調方法是很常見的,斯坦福大學計算機視覺課程(CS231N)中將這一過程作為課程的一部分,以及Mahajan等人的2018年論文(“探索弱監督預訓練的極限”)表明,當模型性能作為至關重要時,應該始終使用微調來代替預訓練的特征。
自然語言處理的模型驗證
? ? ? ?那么為什么自然語言處理領域如此落后呢?在Sebastian Ruder的一篇文章中寫道?“NLP的ImageNet時刻已經到來”,他認為造成這個現象的原因是該領域中缺乏用于學習可推廣基礎模型的既定數據集和源任務。直到最近,自然語言處理領域仍然缺乏ImageNet類似的數據集。
? ? ? ?然而,在最近的論文中,如 Howard 和Ruder的??“通用語言模型微調文本分類”??和Radford的論文?“通過生成性預訓練提高語言理解”??已經證明模型微調最終在自然語言領域中顯示出前景。盡管在這些論文中采用的源數據集各不相同,但NLP領域似乎正在將“語言建?!蹦繕藰藴驶?#xff0c;作為訓練可遷移基礎模型的首選。
? ? ? ?簡單地說,語言建模是預測序列中下一個單詞的任務。鑒于部分句子“我以為我會按時到達,但最終____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的研究應用更加廣泛,后續會講述如何使用一些簡短的代碼使用微調來實現對自己任務的改進敬請期待。
?
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的NLP领域中更有效的迁移学习方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 传统企业装上“智慧大脑” 看阿里巴巴如何
- 下一篇: 阿里云OCR证件识别商业化发布,减少人工