大規模言語モデル入門 の輪読会を開催したので、発表に使った資料を一部修正して公開します。
モデルの大規模化
さまざまな手法が開発されていくにつれて、パラメータや学習データの容量が肥大化している。
- パラメータ数
- 2018年:3.4億個(BERT)
- 2019年:15億個(GPT-2)
- 2020年:1,750億個(GPT-3)
- 2022年:5,400億個(PaLM)
- 学習に使うコーパスの容量
- 30億語(BERT)
- 300億語(RoBERTa)
- 3,000億語(GPT-3)
- 1.4兆語(Chinchilla)
プロンプトによる言語モデルの制御
いわゆるプロンプトエンジニアリング。
- 文脈内学習
- パラメータを更新することなく、タスクの入出力例を見る中で学習すること。
- ファインチューニングとは似ているが違う
- 手法
- zero-shot学習:質問のみ投げるやり方。
- one-shot学習:質問の解答例を1つ合わせて聞くやり方。
- few-shot学習:質問の解答例を複数合わせて聞くやり方。
- chain-of-thought推論
- 複数の段階の推論が必要な際に、推論過程の例示を与える手法。
- 問題の解き方の順序を伝えるようなイメージ。
- 大規模言語モデルは多段階の推論が必要なケースが苦手なことが多い。
- 複数の段階の推論が必要な際に、推論過程の例示を与える手法。
- パラメータを更新することなく、タスクの入出力例を見る中で学習すること。
アライメントの必要性
人間や社会にとって有益で適切な挙動になるように大規模モデルを調整することをアライメントという。
アライメントの基準としては、HHHという基準が提案されている。
- 役立つこと(Helpful)
- 大規模言語モデルは意図をうまく汲み取れないこともある。
- 正直であること(Honest)
- 大規模言語モデルは虚偽の内容を生成することがある。
- 無害であること(Harmless)
- 大規模言語モデルはトークンの内容をそのまま反映してしまうので、バイアスが生じることがある。
下記のP.44で言及されている。
ちなみに虚偽の回答を生成することを幻覚(hallucination)という。
特定の属性を持つ集団の意見へのバイアスを持つことが課題となっている。
指示チューニング
指示文と理想的な出力で構成されるデータセットを使ったファインチューニングのことを指示チューニングという。
FLAN(Finetuned LAnguage Net)といった多数のタスクにおける質問と解答セットのテンプレートを使ってファインチューニングをする手法がある。
指示チューニングの主な課題としては、下記2つがある。
- 人的コストがかかる。
- 大規模で高品質なデータセットを作成することは難しい。
- データやプロンプトの多様性確保
- 改善が難しい。
- モデルの出力に対してはフィードバックを行えない。
- 出力のテキストや画像に対して、理想的な解答を定義できない。
- 特定の知識など学習されていないデータに対する解答が正確でない。
上記の課題を解決するために、この課題を解決するために下記を編み出した。
人間のフィードバックからの強化学習
RLHF: Reinforcement Learning from Human Feedback
人間の好みに対して直接的に最適化することでアライメントを行う。
- 報酬モデリング
- モデルが生成したテキストに対して、人間の好みを反映した報酬を数値で表現する。
- ここで用意するデータセットはモデルの回答は質問に対し、複数用意して順位づけしたデータセットを用意する。
- 正例 - 負例の差を最大化するように損失関数を定義する。
- 強化学習
- その後に報酬モデリングの出力を使って、モデルをファインチューニングする。
RLHFにも欠点があり、タスクによっては性能が劣化したり、フィードバックの品質や一貫性(人による意見の違いなど)の影響が反映されるなどの課題がまだ残っている。(これは解決できるのか...?)
ちなみにChatGPTはRLHFが採用されているらしい。