翻譯 | AI科技大本營(微信ID:rgznai100,點擊查看更多幹貨文章)git
遷移學習是機器學習方法之一,它能夠把爲一個任務開發的模型從新用在另外一個不一樣的任務中,並做爲另外一個任務模型的起點。github
這在深度學習中是一種常見的方法。因爲在計算機視覺和天然語言處理上,開發神經網絡模型須要大量的計算和時間資源,技術跨度也比較大。因此,預訓練的模型一般會被從新用做計算機視覺和天然語言處理任務的起點。算法
這篇文章會發現告訴你,如何使用遷移學習來加速訓練過程和提升深度學習模型的性能,以及解答如下三個問題:微信
什麼是遷移學習,以及如何使用它網絡
深度學習中遷移學習的常見例子機器學習
在本身的預測模型問題上何時使用遷移學習分佈式
深刻學習中關於遷移學習的簡要介紹Mike拍攝的關於鳥的照片性能
遷移學習是機器學習技術的一種,其中在一個任務上訓練的模型被從新利用在另外一個相關的任務上。學習
書本解釋:優化
「遷移學習和領域自適應指的是將一個任務環境中學到的東西用來提高在另外一個任務環境中模型的泛化能力」 ——2016年「Deep Learning」,526頁
遷移學習也是一種優化方法,能夠在對另外一個任務建模時提升進展速度或者是模型性能。
「遷移學習就是經過從已學習的相關任務中遷移其知識來對須要學習的新任務進行提升。」
——第11章:轉移學習,機器學習應用研究手冊,2009年。
遷移學習還與多任務學習和概念漂移等問題有關,它並不徹底是深度學習的一個研究領域。
儘管如此,因爲訓練深度學習模型所需耗費巨大資源,包括大量的數據集,遷移學習便成了深度學習是一種很受歡迎的方法。可是,只有當從第一個任務中學到的模型特徵是容易泛化的時候,遷移學習才能在深度學習中起到做用。
「在遷移學習中,咱們首先在基礎數據集和任務上訓練一個基礎網絡,而後將學習到的特徵從新調整或者遷移到另外一個目標網絡上,用來訓練目標任務的數據集。若是這些特徵是容易泛化的,且同時適用於基本任務和目標任務,而不僅是特定於基本任務,那遷移學習就能有效進行。」 ——深度神經網絡中的特徵如何遷移的?
這種用於深度學習的遷移學習形式被稱爲推導遷移(inductive transfer)。就是經過使用合適但不徹底相同的相關任務的模型,將模型的範圍(模型誤差)以有利的方式縮小。
推導遷移的描述 採起「遷移學習」
你能夠在你本身的預測模型問題上使用遷移學習。一般有兩種方法:
開發模型方法
預訓練模型方法
選擇源任務。你必須選擇一個與大量數據相關的預測模型問題,這個大量的數據須要與輸入數據,輸出數據和/或從輸入到輸出數據映射過程當中學習的概念之間存在某種關係。
開發源模型。接下來,你必須爲這個第一項任務開發一個熟練的模型。該模型必須比原始模型更好,以確保一些特徵學習已經發揮了其做用。
重用模型。而後能夠將適合元任務的模型用做感興趣的另外一個任務模型的起點。這取決於所使用的建模技術,可能涉及到了所有或部分模型。
調整模型。可選項,對感興趣任務的調整輸入—輸出配對數據或改進模型。
選擇源任務。從可用的模型中選擇預訓練的元模型。許多研究機構會發布已經在大量的且具備挑戰性的數據集上訓練好的模型,在可用模型的模型池裏面也能找到這些模型。
重用模型。而後能夠將預訓練的模型用做感興趣的另外一個任務模型的起點。這取決於所使用的建模技術,可能涉及使用所有或部分模型。
調整模型。可選項,對感興趣任務的調整輸入—輸出配對數據或改進模型。
第二類遷移學習方法在深度學習領域是很常見的。
讓咱們用深度學習模型中兩個常見的例子來具體說明遷移學習。
遷移學習與圖像數據
使用圖像數據做爲輸入的預測模型問題中進行遷移學習是很常見的。
它多是一個以照片或視頻數據做爲輸入的預測任務。
對於這些類型的問題,一般會使用預先訓練好的深度學習模型來處理大型的和具備挑戰性的圖像分類任務,例如ImageNet 1000級照片分類競賽。
爲這次競賽開發模型的研究機構一般會發布最終的模型,並在許可條例下容許重複使用。 而訓練這些模型可能須要在現代的硬件上花費幾天或者幾周。
能夠直接下載這些模型,並將其合併到以本身圖像數據做爲輸入的新模型中。
這類型模型的三個例子包括:
牛津的VGG模型
谷歌的Inception模型
微軟的ResNet模型
有關更多示例,請參閱 Caffe Model Zoo ,其中共享了更多預先訓練的模型。
這種方法是有效的,由於圖像是從大量的照片上選出來進行訓練的,而且要求模型對相對較多的類進行預測,反過來要求模型可以有效地從照片中提取到特徵以便在具體問題上有好的效果。
在斯坦福大學關於視覺識別的卷積神經網絡課程中,做者謹慎地選擇了在新模型中可以使用的預訓練模型。
「[卷積神經網絡]特徵在早期層中更爲通用,然後面的層更具備原始數據集特有的特徵」
——遷移學習,CS231n卷積神經網絡的視覺識別課程
使用文本做爲輸入或輸出的天然語言處理問題進行遷移學習是很常見的。
對於這些類型的問題,使用單詞嵌入,即將單詞映射到高維連續矢量空間,由於在這個矢量空間中類似含義的不一樣單詞具備類似的矢量表示。
存在一些有效的算法來學習這些分佈式的文字表示,並且研究機構一般會在許可條例下發布預先訓練的模型,這些模型是在很是大的文本文檔上訓練出來的。
這種類型的兩個例子包括:
谷歌的word2vec模型
斯坦福的GloVe模型
能夠下載這些分佈式單詞表示的模型並將其合併到深度學習語言模型中,以輸入單詞的解釋或者做爲從模型輸出單詞的生成這兩種形式。
Yoav Goldberg在他的深度學習之天然語言處理一書中提醒到:
「人們能夠下載在大量具備差別的文本上訓練過的預訓練單詞向量,而且基礎語料庫對該結果表示有很是大的影響,那麼這個可用的預訓練的表示可能不是您特定用例的最佳選擇。」
—— 第135頁,天然語言處理中的神經網絡方法,2017。
遷移學習是一種優化方法,是節省時間或得到更好性能的捷徑。
通常來講,要到模型開發和評估以後,才能體現遷移學習在某領域中使用的好處。
Lisa Torrey和Jude Shavlik在遷移學習的章節中描述了使用遷移學習時要注意的三個可能的好處:
更高的起點:源模型中的初始性能(在調節模型以前)比其餘方法要高。
更大的坡度:在訓練源模型期間性能的提升速度比其餘狀況下更陡峭。
更高的漸近線:訓練好的模型的融合性能要好於其餘狀況。
遷移可能改善學習的三種方式。來自「Transfer Learning」
理想的狀況下,你就會看到成功應用遷移學習的三個好處。
一般,若是你可以用豐富的數據來完成相關的任務,而且你有資源爲該任務開發一個模型並將其重用於你本身的問題,或者可使用預訓練的模型來做爲你本身的模型的起點,那麼你就能夠試一試遷移學習。
在一些你可能沒有太多數據的問題上,遷移學習能夠解鎖一些你的技能。
源數據或源模型的選擇是一個公開的問題,這個選擇可能須要經過專業領域知識和/或直覺的經驗。
在這篇文章中,您瞭解瞭如何使用遷移學習來加速訓練並提升深度學習模型的性能。
具體來講,你瞭解到:
什麼是遷移學習,以及如何在深度學習中使用。
什麼時候使用遷移學習。
用於計算機視覺和天然語言處理任務中遷移學習的例子。
更多閱讀
若是您想深刻了解,本節將提供更多有關該主題的資源。
書
論文
A survey on transfer learning, 2010.
Chapter 11: Transfer Learning, Handbook of Research on Machine Learning Applications, 2009.
How transferable are features in deep neural networks?
文章
Transfer learning on Wikipedia
Transfer Learning – Machine Learning’s Next Frontier, 2017.
Transfer Learning, CS231n Convolutional Neural Networks for Visual Recognition
How does transfer learning work? on Quora
做者:Jason Brownlee
原文連接:https://machinelearningmastery.com/transfer-learning-for-deep-learning/