事前学習とは
Pre-training / Pretraining
大規模データから汎用的な知識や表現をあらかじめ学習させ、下流タスクの土台を作る学習段階
ひとことで言うと
特定の仕事を教える前に、大量の文章などを読ませて言葉や世界についての基礎知識を身につけさせる、モデル作りの最初の段階。
概要
事前学習は、特定のタスクに特化させる前の段階として、大規模なデータからデータそのものの構造や汎用的な表現をモデルに学習させる工程。 LLMの場合、Webテキストや書籍などの大規模コーパスを使い、「次のトークンを予測する」あるいは「マスクされたトークンを当てる」といった自己教師あり学習の目的関数で学習する。 人間がラベルを付与する必要がないため、インターネット規模のデータをそのまま学習に使える点が特徴で、モデルはこの過程で文法・事実知識・ある程度の推論能力を獲得する。 事前学習済みモデルは指示に従う応答が苦手なため、指示チューニングやRLHFなどの事後学習(ポストトレーニング)を重ねてプロダクト向けに仕上げるのが一般的。 「大規模に事前学習し、用途ごとに軽く調整する」というパラダイムは、タスクごとにモデルをゼロから学習していた従来の方法を置き換え、現在の基盤モデルの前提になっている。
背景
タスクごとにラベル付きデータを集めてゼロからモデルを学習する方法では、ラベル付けのコストが大きく、少量のデータでは十分な性能が出なかった。 ラベル不要の大規模データで汎用的な表現を先に学習しておき、それを各タスクに転用するアプローチが、この制約を解消する方法として発展した。
歴史
2006年: Hintonらが深いネットワークを層ごとに教師なしで事前学習する手法(Deep Belief Network)を提案し、深層学習における事前学習の概念が広まる。 2013年: Word2Vecが大規模コーパスから単語の分散表現を事前学習するアプローチを普及させる。 2018年: ELMo・ULMFiT・GPT・BERTが相次いで発表され、「大規模コーパスで事前学習し、下流タスクでファインチューニングする」パラダイムがNLPの標準になる。 2020年: GPT-3が事前学習の規模を1750億パラメータまで拡大し、ファインチューニングなしでも文脈内の例示(Few-shot)だけで多様なタスクをこなせることを示した。
ワークフロー
Webテキスト・書籍・コードなどから大規模コーパスを収集し、重複除去や品質フィルタリングなどの前処理を行う。 コーパスをトークン化し、次トークン予測などの自己教師あり目的でモデルを学習する。 学習には大規模なGPU/TPUクラスタを使い、数週間から数か月かけてパラメータを最適化する。 得られた事前学習済みモデル(ベースモデル)に、指示チューニングやRLHFなどの事後学習を施して用途に合わせて仕上げる。
利点
欠点
- 大規模なGPUクラスタと長期間の学習が必要で、計算コストが極めて高い
- 学習データに含まれる偏りや有害な内容をモデルがそのまま学習してしまう
- 学習データの収集時点以降の情報を持たない(知識のカットオフ)ため、最新情報はRAGなどで補う必要がある
比較
- ファインチューニング — 事前学習が汎用的な知識をゼロから獲得する工程であるのに対し、ファインチューニングは事前学習済みモデルを特定のタスクやドメインに合わせて追加学習する工程
- 転移学習 — 事前学習で得た知識を別のタスクに転用するという枠組み全体が転移学習であり、事前学習はその前半の工程にあたる
- 指示チューニング — 指示チューニングは事前学習後の事後学習の1つで、指示と応答のペアを学習させて指示に従う能力を付与する
関連用語
よくある質問
ファインチューニングとの違いは?
事前学習は大規模データで汎用的な能力をゼロから獲得する工程で、ファインチューニングはその事前学習済みモデルを特定の用途に合わせて少量のデータで追加学習する工程。順序としては事前学習が先で、ファインチューニングが後。