遷移學習
遷移學習近年來在圖形領域中得到了快速的發展,主要在於某些特定的領域不具備足夠的數據,不能讓深度模型學習的很好,需要從其它領域訓練好的模型遷移過來,再使用該模型進行微調,使得該模型能很好地擬合少量數據的同時又具備較好的泛化能力(不過擬合)。
在遷移學習任務中,需要事先定義一組源數據集合,使用該集合訓練得到預訓練好的模型,該模型具備了源數據集合中的一些知識,在目標數據集合上微調該預訓練的模型,使得模型能夠很好地完成目標數據集合定義的任務,即完成了遷移學習。
由於深度學習模型結構複雜,在NLP領域中遷移學習不夠成熟,不知道如何進行遷移、遷移模型的哪個結構部分、源數據集合與目標數據集合之間需要滿足怎樣的關係。本文以CNN文本分類任務爲例進行描述,總結一下遷移學習在NLP領域文本分類任務中的一些經驗。
CNN文本分類模型框架
如上圖爲CNN文本分類的模型結構圖,總的模型結構來說可以分爲四層:Embedding層、卷積層(含池化層)、全連接隱層、輸出層。Embedding層主要將詞語映射爲詞向量表示、卷積層主要對詞語矩陣進行卷積操作得到句子的抽象表示、全連接隱層一般是進行維度壓縮、輸出層是進行分類(對應類別的數量)。
在文本分類任務中的遷移學習,例如源數據集合爲新聞文本的分類(數據量大),目標數據集合爲短視頻標題分類(標註的數據少),通過預先訓練的新聞分類模型,在短視頻標題分類任務上進行模型(Embedding層、卷積層、全連接隱層、輸出層)的微調,使得模型既能完成對少量有監督數據的擬合,又具備相應的泛化能力。下邊將針對CNN文本分類任務進行經驗總結。
經驗與建議
經驗
(1)目標數據集合與源數據集合在語義上太相似,反而會影響遷移學習的效果,部分相似效果最好;
(2)源數據集合的詞典大小越大、OOV比例越小,遷移效果越好;
(3)對於Embedding層的遷移,無論是固定不變、還是微調效果都挺好;
(4)對於卷積層和隱層,若模型參數固定不變,很難提高遷移學習的效果,除非目標數據集合與源數據集合語義上非常相似、很少的OOV、具備很大的詞典;
(5)輸出層參數的遷移效果很差;
(6)源數據集合上訓練的模型最好不加非線性激活函數,目標數據集上再添加
(7)dropout rate設置在0.5-0.7之間比較好
建議
(1)選擇源數據集合時,儘量保證數據量大、OOV少、詞典大,語義上與目標數據集合部分相似就行(不要太像);
(2)最好遷移Embedding層;
(3)如果考慮遷移卷積層和隱層,儘量考慮微調,不要使用固定參數。
(4)如果分類類別數量不相同,儘可能不要遷移隱層;
(5)不要試圖遷移輸出層,除非是在線學習,使用少量數據進行微調(源數據與目標數據基本一致)
參考文獻
[1] Semwal T, Mathur G, Yenigalla P, et al. A Practitioners' Guide to Transfer Learning for Text Classification using Convolutional Neural Networks[J]. 2018.