メインに戻る

ChatGPTは実際にどのように機能するのですか?

ChatGPTは、大規模な言語モデル(GPT-3.5またはGPT-4)をベースにしたチャットボットです。ChatGPTは、インターネットから公開されている膨大な量のテキストデータに対して事前に学習されたニューラルネットワークです。

この膨大な量のデータにより、モデルはパターン、文法、文脈、さらには常識的な知識を学習することができ、ユーザーのクエリに対して意味のある首尾一貫した応答を生成することができます。ChatGPTは、ユーザーとインタラクティブでダイナミックな会話をするユニークな能力を持っており、幅広いアプリケーションに有望なツールとなっている。

ラージ・ランゲージ・モデルとは

大規模言語モデルは、テキストを読み、理解し、生成し、予測するために、自然言語処理として知られる深層学習技術を使用するAIアルゴリズムである。

プロンプトを入力すると、モデルはインターネット上で答えを検索するのではなく、頭から答えを出す(頭はないが)。このモデルは、学習したテキストデータとこれまでに生成したテキストから導き出した確率に基づいて次の単語を決定し、一度に1単語ずつ回答を生成する。

110億パラメータ:質問応答、算数、言語理解

110億パラメータ:質問応答、算数、言語理解

どうしてそんなことが可能なのでしょうか?ChatGPTはインターネットで情報を探す必要はありません。インターネット上にある知識は、1750億ものパラメータを通してChatGPTに組み込まれています。

620億パラメータ:翻訳、常識的推論、コード補完

620億パラメータ:翻訳、常識的推論、コード補完

モデル・パラメーターの数が増えるにつれて、誰も意図的に設計したわけではない新しい能力がモデルに現れる。

5,400億パラメータ:論理的推論連鎖、パターン認識、読解力

5,400億パラメータ:論理的推論連鎖、パターン認識、読解力

ChatGPTのトレーニング方法

ChatGPTは、以下のような何十万もの書籍、記事、対話で学習されました:

  • WebText2(45テラバイト以上のテキストデータからなる大規模ライブラリ)
  • Cornell Movie Dialogs Corpus (映画の台本に登場する1万人の映画キャラクター間の20万以上の会話を含むデータセット)
  • Ubuntu Dialogue Corpus(Ubuntuユーザーとコミュニティサポートチームとの間で交わされた1,000,000のマルチターン対話のコレクション)
  • GitHubの数十億行のコード

まず、GPTは人間の指導なしにアクセスできるすべてのデータを処理し、テキストの領域を規定する規則やつながりを独自に把握できるようにした(これが「教師なし学習」と呼ばれるものだ)。

そして、言語モデルを微調整するために、人間のフィードバックによる強化学習(RLHF)と呼ばれる手法が適用された:

  • 人間のAIトレーナーは、ユーザーとAIアシスタントの両方の側を演じて会話を行った。訓練生は、応答を作成するために、モデルによって記述された提案を利用することができた。モデルは、対話の履歴からアシスタントの次のメッセージを予測するために、教師ありの微調整を使って訓練された。
  • 強化学習のための報酬モデルを作成するために、比較データが収集された。AIトレーナーは、複数のモデルの応答を、その応答が理にかなっているかどうか、役に立ったかどうかなどを考慮して、品質別にランク付けした。選択された回答は、新しいモデルが書いたメッセージを含む対話データセットとなった。
  • 報酬モデルは、報酬モデリングと呼ばれる手法で作成された。報酬モデルは、前のステップで収集された比較データに基づいて、応答の質を予測するようにモデルが訓練された。

結局、ChatGPTはどんな状況でも対応し、的確で適切な答えを出し、有害な話題を避ける方法を学んだ。

トランス・アーキテクチャ

ChatGPTの学習プロセスでは、前の単語から文中の次の単語を予測する。これを実現するために、トランスフォーマーアーキテクチャが採用されており(ちなみにChatGPTのTはトランスフォーマーの略)、自己注意メカニズムのレイヤーで構成されている。自己アテンションは、次の単語を正確に予測するために、文中のさまざまな単語をその重要性と関連性に基づいて重み付けすることを可能にする。

旧来のリカレント・ニューラル・ネットワーク(RNN)は、テキストを左から右へと読み取る。これは、関連する単語が隣接している場合にはうまく機能するが、文の両端にある場合には困難になる。

そのため、RNNが1ページのテキストを扱う場合、3段落目の途中で、冒頭の内容をすでに「忘れて」しまう。

対照的に、トランスフォーマーは文中のすべての単語を同時に処理し、それぞれの単語を他のすべての単語と比較することができる。そのため、入力シーケンスの中での位置に関係なく、最も関連性の高い単語に「注意」を集中させることができる。

トークン化

重要なのは、トランスフォーマーは個々の単語を操作するわけではない(トランスフォーマーは人間のようには読めない)ということだ。その代わりに、入力テキストは単語、句読点、特殊トークンを含む個々のトークンに分割されます。ChatGPTにおけるトークンとは、ベクトル(方向と位置を持つ数値)として表現されるテキストチャンクのことです。

空間におけるトークン-ベクトルの近さによって、それらの関連性が決定されます。さらに、注意はベクトルとして符号化されるため、変換器ベースのニューラルネットワークは段落の前の部分から重要な情報を保持することができる。

ユーザーがChatGPTと対話すると、モデルはユーザーのプロンプトとモデルが生成した応答の両方を含む会話履歴を入力として受け取ります。入力はトークン化され、ニューラルネットワークに入力されます。各トークンは、会話の文脈における意味を表すエンベッディングと関連付けられます。

GPT-3はおよそ5,000億個のトークンで学習され、その言語モデルはベクトル空間にマッピングすることで、より簡単に意味を割り当て、後続のテキストを予測することができる。多くの単語は単一のトークンにマッピングされるが、長い単語や複雑な単語は複数のトークンに分割されることが多い。平均して、トークンの長さはおよそ4文字である。

モデルが応答を生成する推論段階では、自己回帰として知られるプロセスが使用される。これは、会話履歴と以前に生成された単語を条件としながら、モデルが一度に1つの単語を予測することを意味する。生成された応答が首尾一貫した適切なものであることを保証するために、top-pサンプリングや温度スケーリングのような技術が利用される。

要するに、top-pパラメータはモデルに選択するオプション(トークン)のプールを与え、温度は特定のトークンを選択する確率を決定します。温度を0に設定すると、モデルは最も「人気のある」トークン(ChatGPTが学習したテキストデータで最も頻繁に一緒に見つかる単語)だけを選ぶようになります:

それは必ずしも素晴らしいことではない。温度が高ければ高いほど、結果はより多様になる:

ChatGPTパラメータの詳細: