「ChatGTPはなぜ、人間のような言葉を紡ぎ出せるのか?(前編)~日本の第一人者が、LLMの基本原理とブレークスルーを解説する」岡崎直観

2024.07.03
img

人間のような自然な言語生成を実現する大規模言語モデル(LLM)の技術が注目を集めている。とりわけ昨年来、LLMの技術を使ったChatGPTなどの生成AI(人工知能)が、一般のビジネスパーソンや学生にも身近なものとなった。しかし、LLMとはそもそも何なのか、なぜ自然な言語を紡ぎ出せるのかというメカニズムは案外知られていない。日本発のLLM開発に携わっている立場から、その原理をなるべくわかりやすく解説してみたい。

岡崎直観(おかざき・なおあき)

2007年東京大学大学院情報理工学系研究科博士課程修了。東京大学大学院情報理工学系研究科特任研究員、東北大学大学院情報科学研究科准教授を経て、2017年東京工業大学情報理工学院教授。言語処理学会理事、日本ディープラーニング協会理事、ACL 2023(自然言語処理に関するトップ国際会議)プログラム委員長。著作や作品に「IT Text 自然言語処理の基礎」(オーム社)、「言語処理100本ノック」など。

言語検定に合格 手書き・折れ線グラフを理解

LLMの研究開発の動きが急加速しているのに伴い、その性能も飛躍的に向上している。米OpenAI社が2023年3月にリリースしたGPT-4の段階で、すでにその言語能力は人間に匹敵するとさえ言われた。
世界中に利用が拡大する中、多言語への対応も進んでいる。OpenAIと激しく開発を競っている米Google社のGoogle Bardは、フランス語やドイツ語、中国語など主要な言語の全てで検定試験に合格できる成績を収めたという。このモデルは、23年12月に発表されたGeminiの一つ前の世代だが、日本語においても非常に高い性能を持つことで知られている。

最近、とくに注目を集めているのが、「マルチモーダル対応」のモデルだ。これはテキストだけでなく、音声や画像、動画など複数の異なるデータから情報を収集し、統合して処理できる機能を備える。例えば、マルチモーダル対応のGPT-4Vに、論文の折れ線グラフを入力して「この図から読みとれることは何ですか」と質問すると、X軸・Y軸の指標の意味はもとより、グラフ上の曲線がどういう傾向を表しているか、どんな数式をグラフ化したものかといった点まで説明してくれる。

 

 

その性能は日々、進歩している。私が半年前に実際にChatGPT-4Vでグラフを読み取らせた際には、一部の説明に細かい誤りが見られたが、現在それらは修正されている。

マルチモーダル対応のモデルは、手書きのデータにも対応する。GoogleのGeminiは、学生が手書きで回答した物理学の答案の誤りを正確に指摘して見せた。プロンプトで適切に指示すれば、こちらが求める形式の数式で正解を導いてくれる。小数点以下第2位まで数字を丸めて欲しいといった、細かい要求にも応えてくれる。日々、学生の手書き論文に悩まされている私のような大学教員には、非常に魅力的なモデルだ。

 

 

自然な文章生成 確率で「予測」

LLMはどうやって人間のような自然な文章を紡ぎ出しているのか。

そのメカニズムは、端的に言えば、確率計算に基づく「予測」で成り立っている。一つの単語の次に、どんな単語が来るのか。ウェブ上にある大量のテキストデータから、LLMが瞬時に確率を計算して予測する。それを繰り返すことで、あたかも人間が考えて作っているかのように、流暢で自然な文章を作り上げるのだ。

LLM内部で行われている複雑な計算は、一般の人間にはほとんど理解できない「単語ベクトル」という数字の羅列で成り立っている。

開発者たちはどうやって、この仕組みにたどり着いたか。日本のシンガーソングライター・米津玄師のヒット曲「Lemon」について記述した、次のテキストを例に、その成り立ちのメカニズムを見ていこう。

_
例文:Lemonがヒットした日本人アーティストは
_

この文章を、人間にも分かる意味ごとに最小単語で区切ると、次のようになる。

_
〈Lemon/が/ヒット/した/日本人/アーティスト/は〉
_

「Lemon」という曲になじみがある人なら、この文章に続く単語が「米津」「玄師」であることはすぐに分かる。しかし、LLMの場合、まず「は」に続く単語に何が来るかを予測しなくてはならない。

この予測に使われるのが、「条件付き確率」と呼ばれる数学の道具だ。ざっくり言うと、上記の文章の末尾に続きそうな単語Xに、どんなものが考えられるか、日本語の単語すべてを当てはめていく。それは「YOASOBI」だったり、「U2」だったりするかもしれない。そういった可能性のある全ての単語を当てはめてみて、与えられたデータの中にどれだけ出現するか、いわゆる「現れやすさ」を確率の数値として計算していく。最終的に最も高い確率の単語を「正解」として出力するのだ。

 

 

肝心の確率は、どうやって求めるのか。
一昔前の言語モデルは、与えられたデータの中にどれだけその文字列が出現するのか、いわゆる「出現回数」を比べて求めていた。

これはWeb検索を思い浮かべると分かりやすい。検索エンジンに文章を入力し、ヒットする件数を比べるのだ。

「Lemonがヒットした日本人アーティストは米津」で検索してヒットした件数と、「米津」の代わりに「YOASOBI」や「U2」を入力した文章でヒットした件数を比較し、数値の最も高いものが正解として出力される。

しかし、このやり方にはいくつか問題があった。

その一つが、長い文章である。ウェブ検索をする際に長文を入力すると、ヒット件数がゼロになってしまう経験をした人は少なくないだろう。ヒット件数がゼロでは、確率もゼロになってしまうので、具合が悪い。入力する単語列が長くなると、出現頻度が急速に減少して条件付き確率の推定が困難になってしまう、この現象は専門家の間で「データスパースネス問題」と呼ばれている。

これを解決するため、入力する文章を短くする案が用いられた。例文でいえば、「日本人/アーティスト/は」という正解に近い場所にある3単語だけに絞って、条件付き確率を計算することになる。
だが、これにも問題がある。この例文だと、「Lemon」という離れた場所にある単語が条件として確率計算に加味されないため、正解である「米津」よりも「YOASOBI」の出現確率が最も高くなってしまうかもしれない。このように離れた位置にある単語の位置関係性を処理できない問題が新たに生じてしまった。

それ以外にも、「曖昧性」や「類義語」の問題も出てきた。

単語には複数の実態や概念を表現しうるものが少なくない。この例文で「Lemon」は、楽曲名を表すが、ウェブ上では食べ物のレモンの出現数が圧倒的に多い。同じ文章中に「日本人」「アーティスト」という単語があるので、人間なら何かの作品名なんだろうなと察しがつくが、現状AIには難しい。

また、「ヒット」という単語を、類する「ブレーク」や「流行」に置き換えたらどうなるか。人間なら文脈としてはほとんど同じ意味だと理解できるが、検索エンジンのヒット件数では別々にカウントされてしまう。この手法を使う限りは、「類義語」は考慮されず、柔軟性が失われてしまう可能性が高い。

 

 

日本-東京+パリ=?

こうした課題を解決したのが、人間の脳を模したニューラルネットワークによるディープラーニング(深層学習)と、単語のベクトル化だった。

単語のベクトル化とは、それぞれの単語を一つひとつの意味ではなく、コンピューターが処理しやすい数値情報(ベクトル)に変換する考え方だ。この例では、「ヒット」という単語を256個の数字のパターン(ベクトル)で表現できる。それぞれの数字を見ても人間は理解できないが、コンピューター上では単語の持つ意味や性質が数値情報として表されている。

 

 

だから、ベクトルだけ見ると、類義語同士は似る性質がある。「ヒット」とベクトル的に似ている単語を調べると、「スマッシュヒット」「メガヒット」「ヒット曲」などが出てくる。

加えて、単語ベクトルが優れている点は演算処理ができることだ。つまり、数値情報なので、コンピューター上で意味や性質の足し算や引き算ができてしまうのだ。例えば、「パリが首都である国はどこか」という問いについて、単語ベクトルで「日本-東京+パリ=」という数学的な処理をすると、「フランス」の単語ベクトルが導き出されるという具合だ。

こうした性質を利用して、単語ベクトルの出現確率を計算する。
まず、〈Lemon/が/ヒット/した/日本人/アーティスト/は〉の単語ベクトルを全てつなぎ合わせ、一つの文章を表すベクトルをつくる。それとは別に、末尾に続く可能性のある候補単語を当てはめた文章のベクトルを同じように、いくつも用意する。「米津」や「YOASOBI」「U2」などを末尾に加えてベクトル化した文章だ。

それぞれの文章のベクトル同士を演算処理して、出現確率を導き出す。最終的に、確率が最も高い文章が予測結果として採用されるというわけだ。

 

 

LLMの「学習」にも、ベクトルに基づく方法が役立っている。学習とは、すなわち予測の逆の道筋をたどれることだ。正しい答え、この例文だと「米津」の出現確率が理想の値「1」になるように、全ての単語ベクトルを逆に調整することによって、LLMに正解を学習させる。これが、学習メカニズムの正体だ。

なお、このスライドは単純化されているが、実際には少し複雑で、Googleが2017年に発表したニューラルネットワークである「Transformer」が用いられている。文章全体を並列処理できるTransformerの登場は、LLMの飛躍的な性能アップにとって一つのポイントとなった。

 

「ChatGTPはなぜ、人間のような言葉を紡ぎ出せるのか?(後編)~日本語も飛躍的に進化 信頼性に課題も」はこちら