袁文翠, 孔雪
(東北石油大學 計算機與信息技術學院, 大慶 163318)
近年來,學術界與工業(yè)界越來越擅長訓練深度神經網絡,由于深層的網絡結構使其能從大量有標簽的數據中學習到非常準確的輸入到輸出的映射,無論它們是圖像、語句還是標簽預測。但是很多情況下帶有標簽的數據是極難獲取的,根據Awesome-Most Cited Deep Learning Papers所公布的深度學習領域最主要的論文統(tǒng)計,超過50%的論文使用了某種形式的遷移學習或預訓練。對于資源有限的場景,遷移學習技術的重要性與日俱增。
吳恩達在去年的 NIPS 2016 講座上提出:“在監(jiān)督學習之后,遷移學習將引領下一波機器學習技術商業(yè)化浪潮?!?/p>
遷移學習(transfer Learning)[1]的目標是將從一個環(huán)境中學到的知識用來幫助新環(huán)境中的學習任務。當沒有足夠的標記數據去訓練模型或想訓練一個模型去執(zhí)行一個新的任務時,可以利用遷移學習[2],它能夠利用已經存在的相關任務或域中帶有標記的數據去處理這些情況。嘗試在源域(source domain)中解決源任務(source task)所獲得的知識,并將其應用于另外的任務。相比于傳統(tǒng)的方法訓練模型更加具有廣泛的應用價值。傳統(tǒng)機器學習[3]與遷移學習的對比圖,如圖1、圖2所示。
圖1 傳統(tǒng)機器學習訓練模型
圖2 遷移學習訓練模型
在圖1中,無論是什么任務,每一次都需要構建一個模型進行學習,但是圖2中,通過在源任務中所學習到的w(權重),b(偏向)可以直接遷移到新任務中,不但可以避免過擬合的現象,而且可以節(jié)省很多的訓練時間。
遷移學習有不同的應用場景,如:有監(jiān)督到有監(jiān)督(Fine-tuning 和多任務學習)、有監(jiān)督到無監(jiān)督(域對抗學習,零樣本學習)、無監(jiān)督到無監(jiān)督、無監(jiān)督到有監(jiān)督,如圖3所示。
圖3 遷移學習種類
Fine-tune應用在有監(jiān)督到有監(jiān)督的場景中,它的基本思想是將源任務中學習到的知識運用到自己的數據集上,并在自己的數據集上進行參數的調優(yōu)。若不對源任務中參數的變化進行限制,則很容易在小量調優(yōu)的數據上發(fā)生過擬合的現象。由此產生了兩種訓練方式:保守訓練和層遷移。
2.2.1 保守訓練
保守訓練會在目標函數上添加類似于L1,L2的正則化向,假設以二次代價函數作為源任務的目標函數,則保守訓練中改進的目標函數為:
其中w為源任務中原本的參數值,wi為經過調優(yōu)后的參數值,在模型學習過程中目的就是最小化目標函數,若參數在調優(yōu)過程中變化太大,則會受到懲罰。
2.2.2 層遷移
層遷移的基本原理是選擇其中一部分參數參與調優(yōu),其余部分不變(設置學習率為零),如圖4所示。
圖4 層遷移
圖4中,復用了3層的訓練參數,只對一層的參數進行訓練,這樣就可以很好的避免因參數多數據量小而造成的過擬合現象。
2.2.3 多任務學習(Multitask Learning)
多任務學習[4-5]Fine-tune最大的區(qū)別在于,多任務學習需要在滿足新任務的同時源任務的準確率不能有太大變化,需同時保證兩種任務在一種參數組合下都可以表現出極強的準確性。
域對抗學習[6-7]應用在有監(jiān)督到無監(jiān)督的場景下,它由一個特征提取器(Feature extractor)和一個分類器(classifier)所組成,通過對抗學習[8-9]的方式進行訓練。分類器與特征提取器相互對抗,直到分類器無法對兩類數據進行判別。如圖5所示。
圖5 域對抗
本章將對上述提到的Fine-tune到域對抗學習進行試驗驗證。
本實驗運用inception-V3作為源任務,訓練自己的小數據集(汽車,貓,狗,飛機,沙灘圖片各200張運用層遷移的方式訓練)。實驗結果如下:
images/car.jpg:(car images)
sports car, sport car (score=0.935 07)
convertible (score=0.011 13)
racer, race car, racing car (score=0.008 68)
chain saw, chainsaw (score=0.002 98)
car wheel (score=0.002 76)
images/cat.jpg(cat images)
Egyptian cat (score=0.553 36)
tabby, tabby cat (score=0.257 01)
tiger cat (score=0.082 83)
lynx, catamount (score=0.056 83)
hyena, hyaena (score=0.002 75)
images/dog.jpg(dog images)
Labrador retriever (score=0.951 45)
golden retriever (score=0.020 65)
tennis ball (score=0.003 99)
beagle (score=0.000 93)
saluki, gazelle hound (score=0.000 70)
images/plane.jpg(plane images)
warplane, military plane (score=0.811 14)
wing (score=0.062 60)
aircraft carrier, carrier, flattop, attack eircraft
projectile, missile (score=0.011 36)
missile (score=0.009 72)
images/seaside.jpg(seaside images)
seashore, coast, seacoast, sea-coast (score=0.855 02)
sandbar, sand bar (score=0.087 91)
lakeside, lakeshore (score=0.025 46)
sarong (score=0.007 45)
coral reef (score=0.003 54)
由實驗結果可以看出,通過運用層遷移的方法對inception-V3模型進行遷移,最終在小數據集上都得到正確的識別結果。相比于傳統(tǒng)的訓練方法有效的避免了過擬合的現象,并且訓練時間也大大降低。
本次實驗用帶有標記的MNIST數據集作為源任務,無標簽的MNIST-M為目標任務,在此實驗中運用域對抗的方式進行訓練,實驗結果如圖6所示。
Source data(MNIST):
Target data(MNIST-M):
圖6 實驗結果
域對抗希望分類器無法分別源數據和目標數據,從而目標數據就可以當做源數據進行遷移學習。
未進行域對抗學習結果如下:
Source only training
Source (MNIST) accuracy: 0.986 7
Target (MNIST-M) accuracy: 0.480 1
進行域對抗學習后結果如下:
Domain adaptation training
Source (MNIST) accuracy: 0.978 1
Target (MNIST-M) accuracy: 0.718 9
Domain accuracy: 0.665
從上面兩個實驗結果可以看出在進行域對抗學習后模型的準確率有明顯的提升??梢暬Y果如圖7所示。
圖7 未進行域對抗學習
進行域對抗學習,如圖8所示。
可以看出在沒有進行域對抗學習時模型把兩個數據集分到了兩個區(qū)域,說明分類器可以很好的識別出兩種數據集,在運用域對抗學習后,分類器已經無法辨認出兩個數據集。從而可以成功的進行遷移學習。
圖8 進行域對抗學習
雖然現在處于大數據時代,每天互聯網上會出現海量的數據,但在新領域中要找到帶標簽的數據去訓練模型是極其困難的,運用遷移學習我們便可以很容易的訓練屬于我們的小數據集,這對于某些資源缺乏(數據)的企業(yè)來說具有非常大的參考意義和利用價值。