AIの説明で「事前学習したモデルをファインチューニングする」ってよく出てくる
最初から目的の仕事だけ学習させたらええやん。なんで2段階なん
【疑問】「事前学習してからファインチューニング」って、なんで2段階に分けるん?【AI】
>>1
この流れを広めた代表例が BERT(Devlin ら、2018年に arXiv 公開)
事前学習:正解ラベルのない大量の文章で、言葉の一般的な使われ方を学習する
ファインチューニング:正解ラベルのついた少ないデータで、目的の仕事(文の分類など)に合わせて調整する
>>2
ラベルなしの文章で、どうやって学習するん?正解がないやん
>>3
文章の一部を隠して、隠したところを当てさせる。正解は元の文章にあるから、人がラベルをつけなくていい
論文の例やと my dog is hairy の hairy を隠して my dog is [MASK] にして、hairy を当てさせる
BERT では、単語(を分けたトークン)の15%を選んでこれをやる
>>4
選んだ15%は全部 [MASK] にするん?
>>5
全部ではない。選んだうちの80%を [MASK]、10%をランダムな別の単語、10%はそのまま
ファインチューニングのときの入力には [MASK] が出てこないから、[MASK] だけに慣れさせないための工夫
ランダムな単語に置きかわるのは全体の 、つまり1.5%だけで、論文では悪影響はなさそうと書いてる
事前学習の文章はどれくらいの量なん
>>7
BooksCorpus(8億語)と英語版 Wikipedia(25億語)で、合わせて33億語
1回に256文×512トークンをまとめて、100万回くり返す
33億語のデータを約40周する計算になる(論文も約40エポックと書いてる)
>>8
計算はどれくらいかかったん
>>9
基本モデル(1.1億パラメータ)は16個、大きいモデル(3.4億パラメータ)は64個の TPU チップを使って、それぞれ4日
一方でファインチューニングは、論文の結果はどれも、同じ事前学習モデルから始めれば Cloud TPU 1台で長くても1時間(GPU なら数時間)で再現できる、と書いてる
ファインチューニングでは何を変えるん
>>11
出力のところに層を1つ足して、モデル全体のパラメータを少しずつ動かす(事前学習した部分も固定しない)
論文で勧めてる設定は、学習率 、、 のどれか、2〜4エポック
事前学習の学習率 より小さくして、覚えたことを壊しすぎないように調整する
>>12
全部のパラメータを動かすんなら、最初から目的のデータだけで学習しても同じとこに着くやろ
>>13
目的のデータは少ない。論文の評価に使ったデータには、訓練用が3,600件(MRPC)や2,500件(RTE)しかないものもある
1億を超えるパラメータを、数千件のラベルだけで一から学習するのは無理がある。言葉の使われ方は事前学習で済ませて、ラベル付きデータは仕事の合わせ込みにだけ使う
ただ、この論文自体には「事前学習なしで同じモデルを学習した」場合との直接の比較はない
>>14
じゃあ成績で見るとどうなん
>>15
言語理解の課題をまとめた GLUE(WNLI を除く平均)で、OpenAI GPT より前の最高が74.0、OpenAI GPT が75.1、BERT の大きいモデルが82.1
2,500件しかない RTE でも、61.7から70.1に上がってる
データが少ないなら、モデルは小さいほうが過学習しにくいやろ
>>17
論文はそうならなかったと報告してる。訓練用3,600件の MRPC で、層の数とベクトルの次元を増やすと、正解率が79.8%(3層)から87.8%(24層)に上がった
論文は「十分に事前学習してあれば、ごく小さいタスクでもモデルを大きくするほど大きく改善する」ことを示したのは初めてだ、と書いてる
>>18
ファインチューニングって、毎回うまくいくもんなん
>>19
いかないこともある。大きいモデルは小さいデータでファインチューニングが不安定なことがあって、論文では何回かやり直して、検証用データで一番よかったものを選んでる
>>20
全部のパラメータを動かすのが重いなら、一部だけ動かすやり方もあるんやろ
>>21
ある。LoRA みたいに元の重みは固定して、小さい追加部分だけ学習する方式が後から出てきた
「事前学習で土台を作って、目的に合わせて少しだけ調整する」っていう2段階の考え方は同じ
高くつく事前学習は1回だけやって、安いファインチューニングで仕事ごとに合わせる。分ける意味は費用とデータの量なんやな
管理人のひとこと
- 事前学習はラベルのない大量の文章で言葉の一般的な使われ方を学び、ファインチューニングはラベル付きの少ないデータで目的の仕事に合わせる(BERT、Devlin ら、2018年)。
- BERT の事前学習は、トークンの15%を選んで当てさせる。選んだうちの80%を [MASK]、10%をランダムな単語、10%をそのままにする(ランダムな置きかえは全体の1.5%)。
- 事前学習は33億語を約40周し、TPU で4日かかる。ファインチューニングは出力層を1つ足して全体を小さい学習率(〜)で2〜4エポック動かし、1時間程度で済む。
- GLUE の平均は74.0(OpenAI GPT より前の最高)から82.1に上がった。訓練用3,600件の MRPC でも、大きいモデルほど成績がよかった。ただし事前学習なしとの直接比較はこの論文にはない。