最近、ChatGPTという言葉がよく話題になっていますが、一体何なのでしょうか?
OpenAIが開発したAIで、大規模言語モデル(LLM)の一つである、ということはよく聞くのですが、よくわかっていない方も多いと思います。用語が多すぎて整理がつかないのが分かりづらい一つの原因だと思いますので、今回は2回の連載で解説したいと思います。
OpenAIは、まずは基本的に会社です。2015年にあのイーロン・マスクと、この前日本に来たサム・アルトマンなどが設立しました。イーロン・マスクは2018年ころにこの会社を離れています。2015年当時は「非営利法人」で、私の記憶ですとAIの有用性や危険性を考えていこう、積極的に情報発信していこう、というのが元々の基本的な考え方だったと思います。
その後、子会社として営利法人の「OpenAI LP」を設立し、そこに様々な会社から投資を受けられるようにしました。特に、マイクロソフトからの出資額は大きく、2023年現在ではOpenAI LPの49%程度の株を持っています。このようなこともあり、現在では元々の活動理念は薄くなり、利益を追求するような活動が目立っているように見えます。ChatGPTも、現在のところ論文なども発表されておらず、どのような仕組みで作られているかよくわかっていないところが気持ちが悪いところです。
ChatGPTはよく「大規模言語モデル」と言われます。ではまず「モデル」とは何でしょうか。
AIとよく言われますが、AIという言葉はものすごく広く使われますし、定義も人それぞれです。なんとなくですが「知能を持ったように振る舞うコンピューター」ということになりますが、では、どの様にそれを実現するのでしょうか。
よくあるのは、「機械学習」という手法を用いて、それこそ「機械=コンピューター」に「学習」をさせるものです。あらかじめ「これを入力すると」「これが出力されるべき」という事例を沢山用意します。たとえば、写真を見て「犬」か「猫」を区別するようなAIを作りたいとしましょう。コンピューターが区別するので、基本的にはコンピューターに命令するプログラムが必要です。写真をプログラムに入力すると「犬」とか「猫」とか出力するような感じです。
このプログラムにはダイヤルがいくつか用意されていて、ダイヤルを回すとプログラムからの出力がコントロールできます。ちょうど、昔のラジオのように、ダイヤルを回してピッタリの周波数に合わせると音が出るようなイメージで、適切なところに合わせると写真を入力すると「犬」とか「猫」といってくれるようなプログラムになっています。ダイヤルは大きければ大きいほどよく、目盛りも細ければ細かいほどいいのですが、目盛りの細かさはだいたい固定で使われます。
最初はこのダイヤルはランダムなところに合わされていて、いくつか用意していた写真を入力してどう出力するか反応を見ます。ぜんぜん違うんだったらダイヤルを大きく動かしたり、10個中9個が合うなら少しダイヤルを動かしたりして調節します。もしかしたら残りの1つはどうやっても正解を出力しないかもしれないので、適切なところで諦めます。
このダイヤルの調整のことを「学習」といい、調整されたダイヤルを持つプログラムを「モデル」と言います。この様に「事例をたくさん用意し て」「ダイヤルを調整して」「適切に犬とか猫とか推測できるようにする」ことを機械学習と言います。学習は通常、プログラムによって自動的に行われます。モデルが適切なものなら、どんな写真でもある程度適切に「犬」「猫」を推測することができます。
最初に戻り、AIという言葉は定義がものすごく大きいのですが、現在は「機械学習を利用したサービス」全体をAIと呼ぶことが多いような気がします。実際はほとんどの場合、機械学習ということがベースにあることを忘れないようにしたいものです。
次に「大規模言語モデル」の「言語モデル」とは何でしょうか。モデルは機械学習で調整できるダイヤル付きプログラムでしたから、「言語モデル」となると「言葉に関する機械学習をして生み出されるモデル」ということになります。概ね、その理解であっています。
もう少し詳しくいうと、言語モデルとは、日本語とか英語とかの言語がどのようなものか、基本的なことが学習できていると見られているモデルです。現在では様々な言語モデルが生み出されていますが、ChatGPTで使われている言語モデルの基本的な考え方は、ある文章が入力されたとき「次に来る単語は何?」ということをひたすら学習させたものです。「今日の天気は」の次に来る単語は?「私の名前は」の次に来る単語は?「岸田さんの出身地は」の次に来る単語は?…ということをひたすらやっていくと、「晴れ」とか「佐藤」とか「広島」のように答えられるようになっていきます。
これを繰り返していくと、「今日の天気は」「晴れ」「です」「。」「(終わり)」というように、文章全体が作れるようになっていきます。
…実は基本的にはこれだけです。やっていることは単語単位で文章の続きを書くということをひたすら繰り返し学習させているだけなのです。
では「大規模言語モデル」というと、何が大規模なのか?ということが気になると思います。これはプログラムの大きさ、調整できるダイヤル(目盛りの細かさではなく)数がものすごく大きいというイメージを持っていただければいいかと思います。ダイヤルの数が多いほど、様々な条件に対応可能になってきます。ラジオの例だと、周波数のダイヤル、FM・AMのダイヤル、ボリュームのダイヤル…のようにたくさんダイヤルがあれば色々な状況で使えたり、楽しめる番組が増えます。言語モデルも、ダイヤルが増えれば増えるほど、英語も日本語も扱えたり、長い文章が扱えたり、様々な文章に対応できるようになるわけです。現在最も大きいもので数千億から数兆のダイヤルがあると言われています。
ポイントになるのは大規模になればなるほど、ダイヤルをたくさん搭載すればするほど、大量の文章によって学習できるようになるということです(正確に言うと、ダイヤルがたくさんある場合、大量の文章を学習させないと無駄なダイヤル=どこに合わせても出力には影響のないダイヤルが出てきてしまい、真価を発揮できないので、大量の文章を読ませがち、という感じです)。ChatGPTは、約570GBのテキストデータで学習されていると言われています。そうなると、「岸田さんの出身地はどこですか?」「広島です。岸田さんはxxxx年xx月xx日に広島県xxx市に生まれ…」と、不思議と事実を述べることが上手になってきます。これは、たくさんの文章で学習させると、どこかには有名な岸田さんについては述べられているし、大規模言語モデルはそれを活かす のが上手なので、事実に基づく文章が出力できる、と言われています。詳しいことは今のところ実はまだわかっていません。
しかしながら、大規模と言っても仕組みは基本的に変わりません。「次に来る単語は何?」です。次に来る単語は確率的に選ばれるので、質問と比較して見ると、事実とは異なる単語が選ばれることがあります。一つ単語の選択を間違えると、仕組み上、その次、そしてさらにその次…とドミノ倒し的に間違ってしまいます。ただ、「間違える」といっても、事実と比較すると間違えるというだけで、文法としては妥当なものが候補として予測され、その選択が事実と比較して間違っているので、読む側には違和感はありません。また、「質問と比較して事実に基づいた出力をしているか」という仕組みもないので、人間から見るとAIが「嘘をつく」ような振る舞いに見えます。
今回は、開発しているOpenAIや言語モデルについて解説しました。次回はいよいよGPTやChatGPTについて解説します。
これにて御免!
Photo by Pietro Jeng on Unsplash