この記事では、AIの知識がある「エンジニア・データサイエンティスト・研究者」向けに少し難しい「ChatGPTの仕組み」をなるべくわかりやすく解説します!
私自身、お客様から「ChatGPTを用いたシステム開発」の相談を多数受けており、「ChatGPTってどういう仕組みで動いているの?」という質問をよく聞かれます。この記事を通して、みなさんも同じ質問をされた時に、大まかに回答できるようになりますと幸いです。
ChatGPTの仕組み(概要)
簡単に言うと、ChatGPTは「RLHFというアルゴリズムによって、GPT-3.5をチューニングしたモデル」です。
これだけを聞いて理解することは難しいため、使用している「アルゴリズム・データセット・モデル」を前提知識として説明した上で、どのような学習プロセスを経ているのかを説明します。
1-1. 使用アルゴリズム
ChatGPTの学習の中で登場する主なアルゴリズムは次の3つです。
- RLHF(Reinforcement Learning from Human Feedback)
- SFT(Supervised Fine-Tuning)
- PPO(Proximal Policy Optimization)
それぞれの説明は次のとおりです。
項目 | 説明 |
---|---|
RLHF | 言語モデルに対して、人間のつけたラベル(フィードバック)からの強化学習でファインチューニングするアルゴリズム |
SFT | 教師データを用いて、ファインチューニングするアルゴリズム |
PPO | 方策の最適化をする強化学習アルゴリズム(OpenAIが開発) |
ファインチューニング | モデルのパラメーターを微調整して、性能を向上させる手法 |
方策(ポリシー) | 強化学習モデルの中のエージェントが取る行動のルール(特定の状況においてエージェントが取る行動の確率分布) |
1-2. 使用データセット
ChatGPTの学習の中で登場する主なデータセットは次の3つです。
- 大規模なコーパス
- 会話データセット
- 評価データセット
大前提として、「自然言語(Natural Language)」とは「人が生活の中で使う言葉」です。
ちなみに、自然言語の対義語は「人工言語(Artificial Language)」で、「人工的に作られた言語」という意味です(プログラミング言語など)。
それぞれの説明は次のとおりです。
項目 | 説明 |
---|---|
大規模なコーパス | 自然言語の文章を集約したデータベース |
会話データセット | 入力となる自然言語(プロンプト)と、それに対して人が回答した自然言語(レスポンス)のデータ |
評価データセット | 入力となる自然言語に対する回答が妥当な文章かを人が評価したデータ |
1-3. 使用モデル
ChatGPTの学習の中で登場する主なモデルは次の2つです。
- GPT-3.5(Generative Pre-trained Transformer)
- RM(Reward Model)
GPT-3.5とは?
- まずGPT(Generative Pre-trained Transformer)とは、OpenAIが開発した「文章生成モデル」です。
- GPT-3.5とは、GPTのバージョン3.5のことです。
- GPT3.5とは、「GPTを微調整したモデル」です。
- 具体的には、「テキストとコードをブレンドした学習データ」を用いているという違いがあります。
- 「モデルのパラメータ数が、1,750億から3,550億へと約2倍になった」ということを解説している記事こちらもありますが、公式ページや論文では確認できませんでした。
RMとは?
- RM(Reward Model、報酬モデル)とは「文章の良さを評価するモデル」です(ChatGPTにおける文脈)。
- ここで、文章の良さは、OpenAIによって次の3つが定義されています。
- Truthfulness(真実性):情報が正しいか
- Harmlessness(無害性):人や環境へ害を及ぼさないか
- Helpfulness(有益性):ユーザーの目的を達成できるか
2. 学習のプロセス
最後に、ここまで説明した「アルゴリズム、データセット、モデル」を用いてどのような流れで学習が行われているのかを説明します。
-
GPT-3.5の事前学習
- まずGPT-3.5の事前学習をします。
- GPT-3.5に対して、Webから取得した大規模なコーパスを用いて、学習させます。
-
GPT-3.5のファインチューニング(SFT)
- 次に、人の会話データセットを用いて、事前学習したGPT-3.5のファインチューニングをします。
- このファインチューニングされたモデルは、SFTモデルと呼ばれます。
-
RMの学習
- 3つ目に、RMの学習をさせます。
- まず評価データセットを作るために、SFTモデルを用いて、1つの入力データから「複数の出力データ」を生成します。
- そして、出力結果に対して、「良い文章かどうか」に基づいて、人がランキングをつけて評価します。
- この評価データセットを用いて、RMを学習させます。
-
RMによるSFTモデルの最適化(PPO)
- 最後に、RMによるSFTモデルの最適化をします。
- まず作成したSFTモデルを用いて、入力データから出力データを生成します。
- この出力データに対して、RMが評価を行い、評価が高くなるように、PPOを用いて方策を最適化します。
上記の流れを図にすると次のようになります。
余談:InstructGPTとの違い
- InstructGPTは、2022年1月に発表された「ChatGPTの前身とも言えるモデル」です。
- OpenAIも「InstructGPTは、ChatGPTの兄弟のような関係」だと言っています。
評価基準 | InstructGPT | ChatGPT |
---|---|---|
アルゴリズム | RLHF | RLHF |
使用モデル | GPT-3 | GPT-3.5(テキストとコードをブレンドした学習データを使用) |
使用データセット | 人間らしい回答データ(質問や指示に対する回答) | 人間らしい回答データ + 会話データ(連続した双方向の会話) |
参考文献
宣伝:もしもよかったらご覧ください^^
『AIとコミュニケーションする技術(インプレス出版)』という書籍を出版しました🎉
これからの未来において「変わらない知識」を見極めて、生成AIの業界において、読まれ続ける「バイブル」となる本をまとめ上げました。
かなり自信のある一冊なため、もしもよろしければ、ご一読いただけますと幸いです^^