摘要: 遷移學習在計算機視覺領域中應用普遍,而NLP領域纔剛剛起步。本文介紹了NLP領域中的兩種遷移學習方法,分別是與訓練的嵌入層及微調模型,嵌入層目前應用較爲普遍,但微調模型後來者居上。
在深度學習領域,遷移學習(transfer learning)是應用比較廣的方法之一。該方法容許咱們構建模型時候不光可以借鑑一些其它科研人員的設計的模型,還能夠借用相似結構的模型參數,有些相似於站在巨人的肩膀上進行深刻開發。本文將講述如何在NLP領域中更高效地應用遷移學習。網絡
今年春天,我 在ODSC East會議上發表了題爲 「NLP中的有效遷移學習」的演講。該演講展現了預訓練的單詞和文檔嵌入層在訓練數據集較小時取得的優異結果,併爲將這些技術應用於工程任務中提出了一系列實用建議。此外,感謝[Alec Radford和OpenAI團隊的一些出色研究](),使得以前提出的一些建議發生了一些變化。app
爲了解釋發生變化的緣由,首先回顧一下以前在Indico會議中使用的評估方法,以評估一種新穎的機器學習方法是否適用於工業用途中。機器學習
對於普遍的實際應用,機器學習模型必須對照如下大多數要求檢驗自身:工具
讓咱們看看預先訓練好的單詞+文檔嵌入層如何知足這些要求:性能
在預訓練嵌入層之上訓練輕量級模型所花費的時間在幾秒鐘內是可能的,儘管計算預訓練嵌入層依賴於基礎模型複雜度。學習
預測一樣快速,預測與基礎模型花費同樣的代價。測試
正則化參數和嵌入類型的交叉驗證對其是有所幫助的,而且這種操做足夠便宜並且不會引入問題。spa
在預訓練的單詞嵌入層之上應用邏輯迴歸塊僅須要學習100s~1000s的參數而不是數百萬的參數,而且模型的簡單性意味着它須要很是少的數據就能得到良好的結果。設計
預訓練的單詞和文檔嵌入層一般的表現是「足夠好」,但具體任務須要與領域和目標模型相關。3d
這種方法很是快速,而且不會從額外的訓練數據中獲益。學習線性模型有助於用更少的數據產生更好的結果,但這也意味着模型學習到的輸入和輸出之間複雜關係的能力也要低得多。
簡而言之,使用預訓練的嵌入層在計算上花費少,而且在訓練數據可用性較低的狀況下表現良好,可是使用靜態表示對從額外的訓練數據得到的增益會受到限制。從預先訓練的嵌入層中得到良好的性能須要爲給定的任務搜索正確的預訓練嵌入層,可是很難預測一個預先訓練嵌入層是否可以很好地推廣到一個新的目標任務,這就須要經過一次次實驗來驗證了。
值得慶幸的是,在計算機視覺領域中的相關研究提供了一種可行的替代方案。在計算機視覺領域中,使用預先訓練的特徵表示已經在很大程度上被「微調」預訓練模型而不只僅是學習最終分類層的方法所取代。修改源模型的全部權重,而不是簡單地從新初始化和學習最終分類層的權重。隨着訓練數據可用性的增長,這種額外的模型靈活性開始帶來回報。
這種方法的來源基礎已有幾年歷史了——從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個示例的數據量表現與使用與訓練嵌入層同樣。
領域與任務匹配的問題彷佛比預訓練的特徵特徵表示更少,語言建模目標彷佛學習了適用於語義和句法任務的特徵。
使用預先訓練的特徵表示沒法解決的任務,能夠經過在足夠的訓練數據下使用很是複雜的模型解決。隨着更多的訓練數據變得可用,預訓練特徵和模型微調之間的差距大大擴大。事實上,微調彷佛一般比從頭開始訓練更加可取——OpenAI的論文「經過生成式預訓練提升語言理解」展現了的最新結果。
雖然它有必定的侷限性,但NLP任務的模型微調具備很大的前景,而且已經顯示出優於當前使用預訓練的文字和文檔嵌入層這一最佳實踐的明顯優點。
Sebastian Ruder總結到:
「在NLP領域中實踐遷移學習的時機已經成熟。鑑於ELMo、ULMFiT和OpenAI取得的使人印象深入的實證結果,這彷佛只是時間問題,最終直到預訓練的單詞嵌入層將被淘汰,這可能會促進在標籤數據量有限的NLP領域中開發出許多新的應用程序。王者已逝,新的王者也誕生!」
咱們早期的基準測試證明,對使用預先訓練的表示進行微調模型有一個通用的好處。下面是使用咱們的遷移學習基準測試工具Enso得到的最近基準測試的輸出示例 。
圖中的每一個點表示來自完整數據集的隨機子集上的5次試驗的平均值+ 95%置信區間。X軸表示可用的標記訓練數據點數量,Y軸分別是平均ROC AUC和精度。在擬合以前對訓練數據集進行過採樣,這些結果是擬合約2500個模型的集合。
微調模型是OpenAI的遷移語言模型的實現,基線模型是在手套詞嵌入上訓練的交叉驗證邏輯迴歸。儘管存在更強的基線用於比較,可是在該訓練數據量下,手套嵌入的平均值對於大多數分類任務來講是比較好的基線了。後續但願在將來的基準測試中發佈與其餘方法的比較,但仍然使人驚訝的是,在只有100個標記的訓練樣例下,模型微調取得的效果仍優於簡單的基線。有關23種不一樣分類任務的完整基準測試可在s3下載 。
鑑於這一最近的發展,Indico開源了一個包裝類(wrapper),用於OpenAI在遷移模型微調方面的工做。 咱們嘗試經過將其打包成易於使用的scikit-learn樣式庫,使Radford的研究應用更加普遍,後續會講述如何使用一些簡短的代碼使用微調來實現對本身任務的改進敬請期待。
本文做者:【方向】
本文爲雲棲社區原創內容,未經容許不得轉載。