首先,我們簡單介紹一下:什麼是遷移式學習 What's Transfer Learning ? 這麼說吧~ 我們人在遇到一個新的問題、新的挑戰時,我們會利用過去學到的知識、累積的經驗來更快、更好的解決新的問題。然後有人就 wonder,既然我們人可以借鏡過往的知識(knowledge)與經驗來解決問題,那麼應用在機器學習上行不行?於是就有了我們今天要談的遷移式學習(Transfer Learning)。 簡單來說,遷移式學習的目的就是從一個(或多個)來源任務(Source Tasks)中抽取出 "知識" 與 "經驗",然後把它應用在一個新的目標領域(Target Domain)當中。而遷移式學習這麼有趣的想法,自然也吸引了不少研究者的注意,然後也被他們起了不少名子,像是有:Learning to Learn、Life-long Learning、Inductive Transfer 等等。雖然有許多不同的名子,但說到底他們本質上講的就是同一件事,只不過在研究上仍會再細分成三個面向來討論,分別是:
關於遷移式學習如果有興趣的可以再去找一些其他資料來看,Jason 這邊就不再細聊了,因為會超出本篇要講的範疇。今天會比較著重在一項我們在訓練大型網路,如:VGG16/19、ResNet-50、Inception-V2/3 等等,時常用的技術:微調(Fine-Tuning)。 實際在訓練一個大型網路的時候,基本上它的參數都是上億或上兆的,如果我們以 VGG16 來例,它的參數就有138,357,544 這麼多(約一億三千八百萬),你手邊的資料集可能只有數百或數千張圖,即便你有上萬張好了,面對參數上億或上兆的神經網路,根本不是一個量級,就很難把網路訓練的很好。也正因為多數狀況下資料集相對於網路都不夠龐大,所以一般我們也不會從頭開始訓練網絡,而是會使用今天要介紹的方法:微調。 所謂的 Fine Tuning 說穿了就是讓類神經網路基於預訓練過(pre-trained)的權重之上再做微調。 在實作上影響我們如何使用遷移式學習的因素有很多,不過最關鍵的還是在於:
OK,最核心的武功心法上面都講完了,接下來我們展示一段用 Python 跟 Keras 實作如何 Fine Tune 一個 Inception V3 Model 的範例代碼給你們看好了,可能會更有感。
Fine Tune Inception V3 Model using Keras Example Code
好的,今天這篇就寫到這邊,感謝各位看官們的收看。 如果覺得這篇文章對你有幫助,然後碰巧你也是一名 Liker 的話,歡迎幫我拍手,鼓勵我持續寫作 :")
11 評論
鄭霈綸
6/25/2023 22:34:00
您好我想要知道model.fit_generator( ...
回覆
Jason Chen
6/25/2023 23:15:32
Hi 霈綸,
回覆
鄭霈綸
6/26/2023 00:51:30
非常謝謝你的回覆,我可以了解你是如何寫的嗎?我已經了解他的邏輯我現在的問題是,我們必須要定義train_generator, 對吧?但可以稍微教學一下在這個範例是如何定義的嗎?
Jason Chen
6/26/2023 11:20:54
Hi 霈綸,
鄭霈綸
6/26/2023 15:41:06
真的是太感謝您了!! 最後有個小問題想請問,我想問的是我想要將強化學習的代理,來進行轉移學習。目的是不用重複訓練代理來解決單一問題,想請問您那邊有甚麼良好的建議嗎?
回覆
Jason Chen
6/27/2023 00:17:46
Hi 霈綸,
回覆
鄭霈綸
6/27/2023 16:31:44
非常謝謝您的回覆!!!我有一個關於強化學習的問題想順便請教您,我想問我強化學習算出來的代理是能夠做轉移學習的嗎?因為我並非本科系相關的學生所以這方面的知識相對來說較為薄弱!在麻煩你回復了
回覆
Jason Chen
6/27/2023 17:09:36
Hi 霈綸,
回覆
鄭霈綸
6/29/2023 02:42:31
非常抱歉喇 我重新整理的時候並未看到你的回覆 以為是回復被吃掉了所以才再發了一次!!萬分感謝你的熱心回答
鄭霈綸
7/2/2023 01:01:18
我想請問一下~~
回覆
Jason Chen
7/3/2023 12:29:10
Hi 霈綸,
回覆
發表回覆。 |
Jason Chen人不光是生來就擁有一切,而是靠他從學習中得到的一切來造就自己。- 歌德 文章分類
全部
封存檔
九月 2023
|