読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】転移学習とファインチューニングはどう違う?事前学習済みモデルと破滅的忘却【G検定】

11レスカテゴリ:AI・機械学習
1: 名無しさん

転移学習とファインチューニング、同じ意味で使われてることもあるけど、違いはあるん?

2: 名無しさん

前提のおさらい。BERTは、大量の文章で先に事前学習しておいて、あとで目的のタスクの少ないデータで調整する。画像でも、ImageNetで学習したモデルを使い回すのが一般的

3: 名無しさん

>>1
分け方としてよく使われるのは、どこまで重みを動かすか
転移学習:事前学習済みモデルの重みは固定(凍結)して、最後に付け足した層だけ学習する
ファインチューニング:付け足した層に加えて、事前学習済みモデルの重みも一緒に少しずつ学習しなおす

4: 名無しさん

>>3
画像で数字にすると、ResNet-50の最後の2048次元の特徴に、10クラス分類の層を付け足す場合
転移学習なら、学習するのはその層の 個だけ。もとのモデルの約2350万個の重みは動かさない

5: 名無しさん

>>4
全部動かしたほうが精度は上がるんやろ?なんで固定するん?

6: 名無しさん

>>5
データが少ないときに全部動かすと、少ないデータに合わせすぎて過学習しやすい
目的のデータが事前学習のデータと似ていてデータが少ないなら固定、似てなかったりデータが多かったりするならファインチューニング、が目安

7: 名無しさん

>>6
ファインチューニングで気をつけなあかんのが破滅的忘却
新しいタスクで学習しなおすと、前に覚えたことを急に大きく忘れてしまう現象。マクロスキーとコーエンの1989年の論文で指摘された

8: 名無しさん

>>7
人間も新しいこと覚えたら古いこと忘れるやん。それと同じちゃうの?

9: 名無しさん

>>8
程度が違う。ニューラルネットは同じ重みを全部のタスクで共有してるから、新しいタスクに合わせて重みを動かすと、前のタスクに大事やった重みまで書きかわる。少し学習しただけで前のタスクの成績が大きく落ちることがある

10: 名無しさん

>>9
対策はいくつかある
学習率を小さくして、重みを動かしすぎない
前のタスクのデータも少し混ぜて一緒に学習する
前のタスクで大事やった重みを動かしにくくする(カークパトリックらの2017年の論文のEWCなど)
重みは固定のまま、小さい部品だけ足して学習する

11: 名無しさん

>>10
最後のやり方は、大規模言語モデルの追加学習でよく使われるLoRAとも同じ発想やな。もとの重みに手をつけないから、もとの能力が残りやすい

管理人のひとこと