ChatGPTが、どうやって自然な対話を実現しているのか不思議に思う方も多いのではないだろうか。
基になっている大規模言語モデル(LLM)であるGPTは、どんなメカニズムで文章を紡いでいるのか。難しい数式や図を使わずに基礎的な構造を解説する。
「何かを入力すると何か別のものを出力する」――。
AI(人工知能)を大ざっぱに捉えると、このように表現できるだろう。AIの入力と出力の設計を変えることで、様々なタスクを実現できているわけだ。
AIには学習フェーズと推論フェーズがある。学習フェーズでは入力データと出力データを用意し、入出力データの関係をAIに文字通り学習させる。
学習したAIに、何らかのデータを入力すると、それに対する推論結果が出力として得られる。これが推論フェーズだ。AIにおける学習と推論の基本的な関係は、このような形になる。
さらに、本稿で重要になる「機械学習の手法」についてもまとめておこう。AIの学習手法は複数ある。一般的なものが、「教師あり学習」と呼ばれるものだ。
学習させるデータセットに、正解のラベルが存在する場合の手法である。目的とする入力データと出力データ(正解ラベル)のペアを用意しておき、その対応関係をAIに学習させる形になる。
「教師なし学習」という手法もある。教師あり学習と違って正解ラベルは用意せず、AI自身がデータの特徴を分類していく学習手法だ。
ほかにも、「半教師あり学習」と呼ばれる手法もあり、学習データの一部には正解ラベルがある状況で、正解ラベルがないデータも活用しつつ学習させるアプローチである。
本稿で最も重要になるのは、「自己教師あり学習」という手法だ。学習データから疑似的に正解ラベルを作成して学習する。
教師あり学習では入出力のペアデータを用意することになるが、作業の負荷は重い。そもそも十分な量のペアを用意できないケースもあるだろう。
自己教師あり学習では、入力に当たるデータだけを用意すれば、疑似的に出力の正解ラベルが利用できる枠組みを用いる。
そのため、大量の学習データが利用できるわけだ。
近年の大規模な事前学習モデルを学習する際に活用されている。
もう1つ、昨今話題を集めているのが「強化学習」である。米OpenAI(オープンAI)の「InstructGPT」や「ChatGPT」で用いられている。
「報酬を最大化する」という発想の学習方法だが、こちらは後ほど解説しよう。
最近は、多くの高性能なAIが登場してきた。
大量のデータから効率的な学習ができるAIのモデル構造や最適化アルゴリズム、さらにGPUなどのハードウエアが組み合わさったことで高いパフォーマンスを発揮できるようになり、高性能なAIを実現できる世の中が到来したというわけだ。
画期的だった「Transformer」
ここからが「GPT」関連の話だ。前段として、ディープラーニング(深層学習)を用いた自然言語処理の歴史を少し振り返ろう。
ターニングポイントになったのが、2013年にリリースされた「Word2Vec」だ。テキストをベクトルとして表現できるようになった点が意義深かった。
本稿で必要な範囲に絞って説明すると、ベクトルとは幾つかの数値が集まったものだと捉えればいいだろう。
例えば、2次元ベクトルという言い方をした場合は、X軸とY軸の座標を表す値だと解釈できる。3次元ベクトルであれば、X軸とY軸にZ軸が加わるイメージだ。実際には100次元、1000次元以上のベクトルが用いられる。
このベクトル表現によって、AIが扱いやすいデータになる。Word2Vecは、単語をベクトル化できるようにしたモデルで、例えば「王様」というベクトルから「男性」というベクトルを引き、「女性」というベクトルを足すと「女王」というベクトルに近いベクトルになる、といったことを可能にする。
その後、テキストをモデル化するのに適した構造を模索する動きが、2014年ごろから本格化してきた。「RNN(recurrent neural network)」「sequence-to-sequence」「attention」といったモデル構造が続々と提案された。
2017年には、より大規模なモデル構築で重要な役割を果たす「Transformer」が登場した。Transformerが画期的だったのは、効率的にモデルを学習できるようになったからだ。
複数の処理を並列実行できるため非常に学習効率がいい。Transformerの提案を機に2018年以降、「GPT」や「BERT」といったモデルが次々と生まれた。
大量の学習データから大規模なモデルパラメーターを備えた事前学習モデルを構築し、目的に合わせて後からモデル調整するといった手法が出てきたのも、この時期だ。
大量のテキストデータから学習
ここからは、GPTがどのように学習・推論をしているかを説明しよう。
「GPT-1」~「GPT-3」は、モデルのサイズと学習データの量が異なる点に基本的な違いがある。
GPT-1は1億1000万パラメーター、数ギガバイトの本のテキストデータを学習データとしている。
GPT-2は、15億パラメーターで40ギガバイトのWebテキストデータから学習している。GPT-3は1750億パラメーター、学習データは45テラバイトに上る。
モデルサイズや学習データの量そして計算量を増やすほど、モデルの性能が向上するという「Scaling Law」といったことが言われ始め、モデルサイズがどんどん大規模化していった。
その後、InstructGPTやChatGPTが登場した。これらは強化学習を施すことで、人間の評価に沿うような結果を出力できるモデルになっている。
Scaling Lawの認識が広がってはいるものの、例えば、「指示に従う」といったタスクにおいては、10億パラメーターのInstructGPTが、1750億パラメーターのGPT-3と同等以上の性能を達成し、モデルサイズが小さくとも十分な性能が実現できることを示した。
ChatGPTは、対話形式のタスクをターゲットに強化学習したGPTだと考えれば理解しやすいだろう。そし「GPT-4」は、テキストと画像のマルチモーダル入力に対応し、テキストを出力するというモデルになっている。
では、GPTは具体的にどのような学習をしているのか。まずはその説明の前に、人間の文章を予測する能力について触れたい。
「今日は」という単語に続く確率が高い単語は何だろうか。
「食べる」「晴れ」「雨」「飴」「を」「時々」の中から選ぶと仮定した場合、筆者の感覚では、「晴れ」や「雨」という言葉が続く確率が高いように思われる。
それは日常的に天気の話をする機会が多いからである。
では、「今日は晴れ」の次に来る単語として確率が高い単語は何だろうか。
同様に「食べる」「晴れ」「雨」「飴」「を」「時々」の中から選ぶとすると、天気予報で耳にする「時々」になる確率が高く、「晴れ」「を」もある程度の確率であり得る。「食べる」「雨」「飴」が続く可能性は低い。
一方で、「昨日は喉が痛かったので飴を買った。今日は」という文脈であったら、急に「晴れ」「雨」という天気の話ではなく「飴」が続く確率が高くなるであろう。
人間であれば、こうした予測ができるはずだ。この能力を我々はどうやって身に付けたかというと、考えられる要因の1つは、これまでの人生で膨大な日本語に触れてきたからだろうと推測できる。
実は、GPTも同じことをしている。大量のテキストを与えることで、次の単語を予測する能力を得ているわけだ。
学習フェーズでは、入力テキスト(プロンプトやコンテキストとも呼ばれるが、本稿では「入力テキスト」で統一)の次に来る単語の確率を学習する。
推論フェーズでは、入力テキストに続く単語の確率を逐次予測することで、文章を生成するという流れだ。
学習フェーズでは、大規模データを利用した自己教師あり学習を施している。例えばWebから収集してきた大規模データ、GPT-3であれば45テラバイトのデータを用意。テキストを途中で区切り、次の単語を疑似正解ラベルにすることで、正解ラベルを準備する必要をなくしている。
例えば、「今日は晴れなので外でランチを食べましょう」という文章を集めてきたとする。
機械学習によく用いられる教師あり学習の枠組みでは、入力に対して出力となる正解ラベルが必要になるが、入出力のペアデータを大量に用意することは容易ではない。
GPTの場合は、「今日は晴れなので外で」までを入力にして、「ランチ」を疑似正解ラベルにする。
区切る位置を変えれば別の学習もできる。
つまり、大量のテキストを集めてくるだけで、学習を実現できるのが自己教師あり学習の大きなポイントだ。
次に重要なポイントがTransformerだ。GPTは、Transformerを積み重ねたモデル構造であり、Transformerの利点である高速な学習を可能としている。
自己教師あり学習とTransformerが組み合わさることで大量のデータで大規模パラメーターを持つモデルを学習できるようになり、高い性能を実現できたといえる。
推論フェーズについても解説しよう。
推論の際は、入力テキストに続く単語の確率を逐次予測する。例えば数万単語の確率を一気に計算するイメージだ。
ただし、次に続く確率が最も高い単語を選ぶ方法だと入力テキストが同じ場合、出力も毎回同じになり多様性が欠ける。
では、どうなっているかというと、計算した単語の確率に基づいてランダムに単語を選ぶということをしている。
確率付き単語ガチャを引いているようなものだ。
結果、入力テキストが同じでも毎回違う文章を生成している。推論フェーズでは、このようなプロセスを踏んでいるわけだ。
rinna Research and Data Manager
同年、Microsoft DevelopmentにResearch SDEとして入社。所属していたチームのスピンアウトに伴い、2020年よりrinna株式会社Research and Data Managerに就任。
機械学習に基づく対話、音声合成、画像生成に関する研究開発に従事。ICLR・ACL・ICASSP・Interspeechなどのトップカンファレンスで研究成果を発表。
日本語事前学習モデルの公開活動により日本のAI研究・開発を促進。
興味ある方のために文系でも簡単に理解できるように画像や絵を用いてわかりすく、AIについて説明する記事を近々投稿予定です。
(関連情報)
AI・ビッグデータ、ベイズ統計学、故障予知、そしてアジャイル開発
https://blog.goo.ne.jp/renaissancejapan/e/8f91cdd777cf816a5f42063cf4355487