ChatGPTの仕組み

ここではChatGPT (https://chat.openai.com/) の技術について、公表されている情報を元に解説します。「ChatGPTになにができるか」「どんなインパクトがあるか」は使ってみればわかりますが、教育など影響の大きい分野でのChatGPT(人工知能)の利用をを考えるためには、技術や仕組み、その限界を知っておいて損はないかと思います。

ChatGPT概要

ChatGPT は、OpenAIによって開発された自然言語を生成する言語モデルです。ChatGPTは高度な知識を持つ人間のようにふるまって、対話をおこない、文章を生成することができます。よくあるチャットボットと異なり、あらかじめ用意された回答を返すような会話型AIではありません。ChatGPTとの対話は自然で、ほとんどの質問に自然な形でもっともらしい答えを返します。

ChatGPTは、大規模自然言語モデル(GPT-3.5)を、対話テキストをデータとして、人間によるフィードバックを用いた強化学習(Reinforcement Learning from Human Feedback: RLHF)によってファインチューニング(微調整)をおこない、人間の指示、嗜好に合った応答を返せるようしたものです。

さらに悪意のある指示や言及すべきではない内容のフィルターや、さらに社会的、文化的な問題(差別などのバイアス等)のある応答の監視と頻繁な改善などエンジニアリングをおこなっています。これによって、ChatGPTは某大な知識を持つだけではなく、安全に利用できることのできるソフトウェアとして、広範囲な利用を獲得しています。

大規模言語モデル

ChatGPTの基盤となる大規模言語モデル(Large Language Model: LLM)は、大規模なテキストを用いて単語や文の生成確率をモデル化したものです。これによって、ある単語やフレーズが入力されたときに、それ以降にどんな単語、文字列、文章が来るかを予測できるようになります。しかし、性能のすぐれた大規模言語モデルは、単に単語などの生成確率を計算するだけではなく、自然言語に関するさまざまなタスクを解くことができる応用範囲の広いものです。

約5年前にTransformerアーキテクチャが提案されて以降、言語モデルが大規模して、性能と実用性が飛躍的に向上しました。2018年に発表されたGoogleのBERTという大規模言語モデルは衝撃的でしたが、OpenAIもGPT(Generative Pre-training Transformer)のバージョンアップを重ねていきました。ChatGPTのベースになるGPT-3(2020)は45TBのテキストデータを前処理した570GBのデータセットを用いた1750億パラメータの言語モデルです。わかりづらいでしょうが、最初のGPTが1.17億パラメータであったのとくらべて「超大規模」と言われるような大きさです。GPT-3は他の言語モデルで必要なファインチューニング(微調整)を必要とせず、少量のテキスト(プロンプト)をあたえると、次に続く文や文章を出力することができます。ChatGPTではGPT 3.5が用いられています。

プロンプトに続く文は、言語モデル内からプロンプトによって尤もらしいものを予測して引き出されたものです。GPT-3はきわめて高性能ですが、人間が望む答えを得るためには、適切なプロンプトを入力しなければなりません。これは「プロンプト・エンジニアリング」「プロンプト・プログラミング」とも言われるように簡単ではありません。この課題に対して、人間によるフィードバックを用いた強化学習(RLHF)でトレーニングした InstructGPTという言語モデルが開発されました。

フィードバックを用いた強化学習(InstructGPT)

参考: Aligning Language Models to Follow Instructions

大規模言語モデルの出力は、ユーザーにとって信頼できないか、場合によっては有害で、単純に有用であるとはいません。ユーザーに合ったものではない(not aligned with their users)のです。その理由は、言語モデルが過去のデータを元の入力としてつくられていて、そのモデルから次を予測して出力するからで、ユーザーの指示(instruct)にとって望ましいものを出力するように設計されていないからです。InstructGPTは、大規模言語モデル(GPT-3)を、ユーザーにとって望ましい出力をデータとして強化学習(RLHF)おこない、ユーザーの指示に合ったモデルとなるようファインチューン(微調整)したものです。

InstructGPTの手順は以下の通りです。

Step 1 教師ありファインチューニング(Supervised Fine Tuning: SFT) 過去にGPT-3で使われたプロンプトに対する望ましい出力を人間が用意して、そのデータセットを元にGPT-3を強化学習によってファインチューニングする。

Step 2 報酬モデルの訓練 プロンプトへのStep 1のモデルからの複数の出力を収集、人間が出力をランクづけして、報酬モデルを訓練する。

Step 3 強化学習(Proximal Policy Optimization: PPO) データセットから新しいプロンプトをサンプルして、報酬モデルを用いたPPOによってGPT-3をファインチューニングする。

ChatGPT

InstructGPTの成果を元にして、ユーザーとの対話向けに改良したものがChatGPTです。ChatGPTについてはまだ論文がないため、以下はブログ「ChatGPT: Optimizing Language Models for Dialogue https://openai.com/blog/chatgpt/」の説明によります。

ChatGPTはInstructGPTと同じような強化学習(RLHF)を用いてトレーニングされていますが、データ収集の部分が異なります。ChatGPTは、人間のAIトレーナーがユーザーとAIの両方の立場で対話したデータを用いて教師ありファインチューニングをおこなっています。このデータセットをInstructGPTのデータセットと結合して新しいデータセットとしています。

報酬モデルの作成では、AIトレーナーとチャットボットの対話が用いられます。Step 3はInstructGPTと同じくPPOが用いられます。人間のフィードバックを用いた強化学習(RLHF)は複数回繰り返されます。

ChatGPTの限界

ChatGPTはまだまだ万能なものではありません。OpenAIだけではなく、Google他の企業が、性能の高い人工知能を開発中です。ChagGPTは以下の欠点などがあります。

まず、ChatGPTの出力が、もっともらしいが不正確または無意味なことがあります。しかし、モデル作成に用いるデータが完璧に正しいわけではなく、正しくなさそうな回答はしないことにすると今度は正しくても回答しない場合がでてきます。また、現在の言語モデルは2021までのテキストデータが元で、それ以降のデータについては正しく答えられません。たとえば2022 FIFAワールドカップについて尋ねてみてください。

不適切な(有害な)プロンプトに対して回答してしまったり、バイアスのある回答が出力されることがあります。Open AIにはModeration APIがありますがフィルターしそこなう場合もあります。

また、ChatGPTは研究のレビューと(おそらく)データ収集のために公開されていますが、運用コストはきわめて高価であると言われています。

頻繁な改善とリリース

ChatGPTの製品としての評判は継続的な改善がおこなわれていたことも理由の一つであると思います。OpenAIは、ChatGPTが安全かつ有用なAIとなるように、頻繁な改善とリリース(Iterative deployment)をおこなっています(https://openai.com/blog/language-model-safety-and-misuse/)。有害または信用できない出力を削減するためには、人間によるフィードバック(RLHF)が用いられています。

OpenAIは、責任のあるリリースのためには「銀の弾丸」はなく、以下を実施しつつ、全体が安全なものとなるように配慮をおこなうと言っています。

  • トレーニング用データのキュレーションとフィルタリング

  • 人間の指示に合うようにファインチューニングする。

  • リリース前のリスク分析

  • 詳細なユーザードキュメントの準備

  • 有害な出力のスクリーニング・ツールの作成

  • ユースケースとポリシーのレビュー

  • 誤用のモニタリング

  • モデルがもたらすインパクトの研究

まとめ

ChatGPTのチャットボットとしての質の高さは、超大規模の言語モデルを人間によるフィードバックによってトレーニング(強化学習)したこと、そして製品リリース後にも継続的に改善をおこなっていることにあります。

OpenAIだけではなくGoogleや新興企業がさらに性能の高い人工知能をリリースすることは確実ですが、上に述べた内容は今後の製品の基盤技術として使われるでしょう。もちろんブレークスルーをもたらす予想外の新技術が発表される可能性もありますが。