[問題] 遷移學習如何不破壞在原問題上學習的成果

看板DataScience作者 (karco)時間4年前 (2020/02/06 23:54), 4年前編輯推噓4(4027)
留言31則, 9人參與, 4年前最新討論串1/1
作業系統: win10 問題類別: DL, 遷移式學習 使用工具: python, pytorch 問題內容: 各位好,小弟正在使用pytorch訓練一個分類模型 這個分類問題的難題在於不是所有類別都會在同一個數據集出現 數據集A可能出現類別1~5 數據集B可能只會出現類別4-7 因此為了可以學習到所有的類別,決定採用遷移式學習的方式 先在數據集A上訓練模型 讓模型可以很好的分辨類別1~5 接著將保存好的模型引入數據集B中進行訓練 過程中兩邊的模型設定都保持一致 而輸出的類別數目都是保持總數目 以例子來看的話就是都分類為7個類別 然而在數據集B訓練一陣子之後 拿保存的模型去預測數據集A 發現效果變的非常差 好像原本在數據集A上學習的參數在訓練過程中已經被洗掉了一樣 想請教為什麼會導致這樣的現象呢? 在遷移學習的過程中,模型的引入有什麼需要特別注意的地方嗎 或是有什麼方式可以較好的解決此類問題嗎? 並不考慮合併數據集,因為數據集非常的龐大,實際類別也不只7類 所以想先從遷移式學習的方向上著手 感謝Data Science版的各位大大 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.226.153 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1581004497.A.8F6.html ※ 編輯: karco (140.113.226.153 臺灣), 02/07/2020 00:00:28

02/07 00:16, 4年前 , 1F
感謝大大,明天會找時間好好閱讀

02/07 00:43, 4年前 , 2F
就是被洗掉了不用懷疑
02/07 00:43, 2F
那有沒有方法可以避免被洗掉呢? ※ 編輯: karco (140.113.226.153 臺灣), 02/07/2020 00:44:44

02/07 00:45, 4年前 , 3F
要嘛就打散一起學,不然就切成三個分辨器,先分AB再
02/07 00:45, 3F

02/07 00:45, 4年前 , 4F
分細項
02/07 00:45, 4F

02/07 00:50, 4年前 , 5F
數據集夠大抽出一部分也會有足夠的代表性
02/07 00:50, 5F

02/07 01:25, 4年前 , 6F
原資料也一起學
02/07 01:25, 6F

02/07 11:27, 4年前 , 7F

02/07 11:29, 4年前 , 8F
continual learning, catastrophic forgetting
02/07 11:29, 8F

02/07 11:30, 4年前 , 9F
lifelong learning; these tags may help
02/07 11:30, 9F

02/07 12:42, 4年前 , 10F
基本上就是被洗掉了,你可以想像transfer learning就是
02/07 12:42, 10F

02/07 12:42, 4年前 , 11F
在既有有限的空間上去學習新的任務。如果新的任務學好了
02/07 12:42, 11F

02/07 12:43, 4年前 , 12F
,那就很容易遺忘掉舊有的內容。想要做到不會遺忘可以
02/07 12:43, 12F

02/07 12:43, 4年前 , 13F
考慮EWC、GEM、progressive network,比較新的研究還有D
02/07 12:43, 13F

02/07 12:43, 4年前 , 14F
ynamically expandable network。或是直接拿舊有資料混
02/07 12:43, 14F

02/07 12:43, 4年前 , 15F
合去train、或是考慮到記憶體可以去train 一個generativ
02/07 12:43, 15F

02/07 12:43, 4年前 , 16F
e model來生成舊資料再去train。如果任務不複雜,也可以
02/07 12:43, 16F

02/07 12:43, 4年前 , 17F
考慮把A、B task順序調換可能就有不錯的效果。
02/07 12:43, 17F

02/07 14:17, 4年前 , 18F
合併啊 數據不是越多越好?還是合併會有啥問題
02/07 14:17, 18F

02/07 17:19, 4年前 , 19F
爆ram
02/07 17:19, 19F

02/08 16:35, 4年前 , 20F
有可能B是會一直變的吧 比如一直增加的類別之類的 導
02/08 16:35, 20F

02/08 16:35, 4年前 , 21F
致全部重新訓練很沒有效率
02/08 16:35, 21F

02/08 16:47, 4年前 , 22F
另外一個方法 找Out of Distribution Detection的相
02/08 16:47, 22F

02/08 16:47, 4年前 , 23F
關技術 分兩段訓練
02/08 16:47, 23F

02/08 16:48, 4年前 , 24F
不過如果類別真的會一直長 這招可能也是治標不治本XD
02/08 16:48, 24F

02/09 20:10, 4年前 , 25F
爆ram就checkpoints 設起來R
02/09 20:10, 25F

02/09 20:12, 4年前 , 26F
batch太大就gradient accumulate起來 很多招可以用
02/09 20:12, 26F

02/09 20:12, 4年前 , 27F
02/09 20:12, 27F

02/14 00:56, 4年前 , 28F
雪崩式的忘記
02/14 00:56, 28F

02/14 00:56, 4年前 , 29F
在訓練樣本的抽樣上多下功夫比較實際吧
02/14 00:56, 29F

02/14 01:01, 4年前 , 30F
一般分類器用不平衡的訓練樣本怎麼可能會有好效果呢
02/14 01:01, 30F

02/14 11:34, 4年前 , 31F
這就Continual Learning 的範疇
02/14 11:34, 31F
文章代碼(AID): #1UF3RHZs (DataScience)