作者karco (karco)
看板DataScience
標題[問題] 遷移學習如何不破壞在原問題上學習的成果
時間Thu Feb 6 23:54:55 2020
作業系統:
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://webptt.com/m.aspx?n=bbs/DataScience/M.1581004497.A.8F6.html
※ 編輯: karco (140.113.226.153 臺灣), 02/07/2020 00:00:28
感謝大大,明天會找時間好好閱讀
2F:→ chang1248w: 就是被洗掉了不用懷疑 02/07 00:43
那有沒有方法可以避免被洗掉呢?
※ 編輯: karco (140.113.226.153 臺灣), 02/07/2020 00:44:44
3F:→ chang1248w: 要嘛就打散一起學,不然就切成三個分辨器,先分AB再 02/07 00:45
4F:→ chang1248w: 分細項 02/07 00:45
5F:→ chang1248w: 數據集夠大抽出一部分也會有足夠的代表性 02/07 00:50
6F:→ roccqqck: 原資料也一起學 02/07 01:25
8F:→ youngman77: continual learning, catastrophic forgetting 02/07 11:29
9F:→ youngman77: lifelong learning; these tags may help 02/07 11:30
10F:推 sxy67230: 基本上就是被洗掉了,你可以想像transfer learning就是 02/07 12:42
11F:→ sxy67230: 在既有有限的空間上去學習新的任務。如果新的任務學好了 02/07 12:42
12F:→ sxy67230: ,那就很容易遺忘掉舊有的內容。想要做到不會遺忘可以 02/07 12:43
13F:→ sxy67230: 考慮EWC、GEM、progressive network,比較新的研究還有D 02/07 12:43
14F:→ sxy67230: ynamically expandable network。或是直接拿舊有資料混 02/07 12:43
15F:→ sxy67230: 合去train、或是考慮到記憶體可以去train 一個generativ 02/07 12:43
16F:→ sxy67230: e model來生成舊資料再去train。如果任務不複雜,也可以 02/07 12:43
17F:→ sxy67230: 考慮把A、B task順序調換可能就有不錯的效果。 02/07 12:43
18F:→ yoyololicon: 合併啊 數據不是越多越好?還是合併會有啥問題 02/07 14:17
19F:→ chang1248w: 爆ram 02/07 17:19
20F:推 goldflower: 有可能B是會一直變的吧 比如一直增加的類別之類的 導 02/08 16:35
21F:→ goldflower: 致全部重新訓練很沒有效率 02/08 16:35
22F:推 goldflower: 另外一個方法 找Out of Distribution Detection的相 02/08 16:47
23F:→ goldflower: 關技術 分兩段訓練 02/08 16:47
24F:→ goldflower: 不過如果類別真的會一直長 這招可能也是治標不治本XD 02/08 16:48
25F:→ yoyololicon: 爆ram就checkpoints 設起來R 02/09 20:10
26F:→ yoyololicon: batch太大就gradient accumulate起來 很多招可以用 02/09 20:12
27F:→ yoyololicon: ㄉ 02/09 20:12
28F:→ hippo130: 雪崩式的忘記 02/14 00:56
29F:→ catxfish: 在訓練樣本的抽樣上多下功夫比較實際吧 02/14 00:56
30F:→ catxfish: 一般分類器用不平衡的訓練樣本怎麼可能會有好效果呢 02/14 01:01
31F:推 andy5656: 這就Continual Learning 的範疇 02/14 11:34