大量の文章を読み込ませた言語モデルは、ある大きさを超えたところで急に「なんでもこなす」ようになりました。その転換点にいるのがBERTとGPTです。
こんにちは、zawato(@zawato7)です!
本記事はディープラーニング入門ロードマップの第28回です。文章を扱うモデルが巨大化し、汎用的になっていく段階を追いかけます。
- 事前学習とファインチューニングという2段構えの学習
- BERTとGPTの読み方(双方向と単方向)の違い
- スケーリング則とzero-shot / few-shotの意味
大規模言語モデルは事前学習とファインチューニングでできている
大規模言語モデル(LLM)は、アテンションを基礎にした構造を巨大化し、大量の文章で言葉そのものを先に学ばせたモデルです。作り方は2段構えになっていて、まず膨大なテキストで言語の一般的な性質を学ぶ「事前学習」を行い、そのあとに目的の仕事へ合わせ込む「ファインチューニング」を行います。
ここで効いたのが自己教師あり学習です。文章はインターネット上にいくらでもありますが、人手で正解ラベルを付けるアノテーションは重い作業でした。そこで文章の一部を隠して当てさせる形にすれば、正解は元の文章から自動で作れます。人間がラベルを作らなくても教師データが湧いてくる状態になったわけです。
BERTは文章を双方向に読んで理解する
BERTは2018年にGoogleが発表したモデルで、前後どちらの文脈も同時に見ながら文章を理解します。アテンションを使った構造のうち入力を読み取る側(エンコーダ)だけを使っているのが特徴です。事前学習では次の2つのタスクを解かせます。
| タスク | やること | 正解の作り方 |
|---|---|---|
| MLM(Masked Language Model) | 一定割合の単語を隠して、隠した単語を当てる | 隠す前の単語がそのまま正解 |
| NSP(Next Sentence Prediction) | 2つの文を見せて、連続した文かどうかを判定する | 元の文章から取れば連続かどうかは自明 |
穴埋め問題を解くには前後を両方見る必要があります。これが双方向と呼ばれる理由です。一方でBERTは文章を生成する出力側を持たないため、分類に使うなら分類用の出力層を足して学習し直す、というようにタスクごとのファインチューニングが前提になります。言語能力は高いがそのままでは使えない——ここが後のモデルとの分かれ目でした。登場後しばらくは軽量化・改良版が相次ぎましたが、やがて主役は反対側の系統へ移っていきます。
GPTは次の単語をひたすら予測する
GPTはOpenAIが2018年に発表したモデルで、文章を出力する側(デコーダ)を使い、次に来る単語を予測し続けることで学習します。先の単語を見てしまうと答えを写すだけになるため、常に左から右へ、これまでの文脈だけを頼りに予測します。これが単方向と呼ばれる理由です。
| BERT | GPT | |
|---|---|---|
| 使う部分 | エンコーダ | デコーダ |
| 読み方 | 双方向 | 単方向(左から右) |
| 事前学習 | MLM・NSP | 次の単語の予測 |
| 得意なこと | 文章の理解・分類 | 文章の生成 |
初代GPTのパラメータ数は約1.17億、GPT-2で約15億と、世代ごとに一桁ずつ増えていきました。今のチャット型AIはこのデコーダ系統の延長線上にあり、ChatGPTの有料プランで使えるモデルも基本の考え方は同じです。
スケーリング則が巨大化を後押しした
スケーリング則とは、パラメータ数・データ量・計算量を増やすほど性能が滑らかに向上するという経験則です。「大きくすればどれくらい賢くなるか」があらかじめ見積もれるようになったため、各社はパラメータ数の拡大競争へ突き進みました。同時に、計算量が性能に直結する以上、GPUをどれだけ確保できるかが競争力そのものになったとも言えます。
その到達点が2020年のGPT-3で、パラメータ数は約1750億。ここで質的な変化が起きます。ファインチューニングなしで、指示の出し方だけでさまざまなタスクをこなせるようになったのです。
| 呼び方 | 与える例 | プロンプトの例 |
|---|---|---|
| zero-shot(ゼロショット) | 0個 | 「次の文を英語にして」とだけ伝える |
| one-shot(ワンショット) | 1個 | お手本を1組見せてから頼む |
| few-shot(フューショット) | 数個 | お手本を数組見せてから頼む |
いずれもモデルの重みは書き換えず、入力する文章(プロンプト)の中で例を示すだけです。学習し直さずに振る舞いを変えられるこの性質が、LLMを一気に汎用の道具にしました。実際に試すなら無料で使えるLLMのAPIから始めると挙動をつかみやすいはずです。
まとめ
- LLMは大量の文章での事前学習と、目的に合わせたファインチューニングの2段構え。正解を自動で作れる自己教師あり学習が土台
- BERTはエンコーダを使い双方向に読むモデルでMLMとNSPで事前学習する。GPTはデコーダを使い単方向に次の単語を予測する
- スケーリング則が巨大化を後押しし、GPT-3の規模ではファインチューニングなしのzero-shot / few-shotで多様なタスクに対応できるようになった
よくある質問
Q. BERTとGPTはどちらが優れているのですか?
A. 得意分野が違います。BERTは文章の理解や分類に強く、GPTは文章の生成に強い設計です。ただし汎用的に使える方向へ発展したのはGPTの系統です。
Q. 自己教師あり学習は教師なし学習と同じですか?
A. 違います。正解ラベルを人手ではなくデータ自身から自動生成する点が特徴で、学習の形としては正解を当てにいく教師あり学習です。
Q. few-shotとファインチューニングはどう違いますか?
A. ファインチューニングはモデルの重みを更新しますが、few-shotは重みを変えずプロンプトの中で例を示すだけです。追加の学習コストがかからない点が大きな違いです。
Q. パラメータ数が多いほど必ず賢くなりますか?
A. スケーリング則は性能向上の傾向を示しますが、データ量や計算量とのバランスが前提です。パラメータだけ増やしてもデータが足りなければ効果は頭打ちになります。



コメント