前回のブログでは、ChatGPTを開発してるOpenAIや、言語モデルの基本的なところを確認しました。今回はChatGPTについて解説しますが、まずは「GPT」はなにか、見ていきたいと思います。
いよいよChatGPTの「GPT」について考えていきたいと思います。GPTは「Generative Pre-trained Transformer」 の略です。この略語が分かれば何かがわかりそうですね。また「GPT」なのか「GTP」なのか混乱することもなくなると思います(メディアでもたまに間違っています…)。
まず、Tが示す「Transformer」はなにか。これは機械学習のプログラム(仕組み)の名前です。2017年6月に、Googleの研究チームによって、「文章を読んで、その文脈に基づいて文章を書く」ための論文が発表されました。AI翻訳みたいに「英語を読んで、日本語を書く」みたいなことに応用できます。論文の名前は「Attention Is All You Need」です。「必要なのは注意だけ」ということですが、簡単に言うと入力された文章や、文章を出力する仕組みとして、(色々考えずに)単語間の関係に注意を払うダイヤルを集中的にいっぱい用意したらうまくいきそう、という論文です。この論文の中で紹介されたのがTransformerという仕組みでした。
GPTはこ のTransformerの仕組みを使って「次の単語は何?」を学習させていくとどうなるかを追求したものです。OpenAI社から2018年「Improving Language Understanding by Generative Pre-Training」という論文で発表されました。たくさんの文章で「次の単語は何?」を学習させたら、それしか学習していないのに、工夫次第でそのモデルは色々なことに使えるみたいです、というものです。例えば、「次の単語は何?」をたくさん学習させたあと、追加で「『私は嬉しい』はポジティブ?ネガティブ?:ポジティブ」「『私は悲しい』はポジティブ?ネガティブ?:ネガティブ」のような、文の分類とか、「『私の名前は山田です』と『今日の朝ごはんは納豆でした』は意味が近い?遠い?:遠い」のような2つの文の意味の近さとかを集中的に更に学習させると、とても効率的に学習できることがわかりました。いまのChatGPTのような使われ方がすでに提案されています。
これまでは、文の分類のモデルを作る場合は、先程の例のような学習用のデータを沢山(100万例とか)用意したうえで、そればかりを学習させていました。最初からその専用のモデルを作るだけに腐心していたわけです。GPTの論文では、まず「次の単語は何?」をたくさん学習させたあとに、文の分類のデータを少し(1万例とか5千例とか)学習すれば、学習データも少なく、さらに性能も高いことがわかったのです。文の分類のデータを用意するのは作らないといけないので大変ですが、「次の単語は何?」はWeb上にいくらでもデータが転がっているた めそれを利用すればいいわけです。事前に基本的なことを学習しておけば、学習用のデータが少ないような問題が解けるモデルもできるという、まるで人間の脳のような感じです。
この追加の学習のことを「ファインチューニング」と言います。「次の単語は何?」の学習モデルをベースに、そのモデルに対してファインチューニングをすることで、少ないデータで効率的に様々なモデルが作れる、というわけです。
GPTはその後GPT-2, と続き3、 3.5、4と進化しました。何が進化したかというと、単純に言うと先に述べたダイヤルの数が爆発的に増えました。まるで人間が書いているような文章がかけるようになったわけです。また、ファインチューニングのためのデータがいらない、あるいは2〜3個事例を入力するだけで様々な問題が解けることがわかりました。例えばファインチューニングしなくても「『私は悲しい』はポジティブ?ネガティブ?」と聞いたら答えてくれるし、「『私は悲しい』はネガティブ、『私は嬉しい』はポジティブとすると、『私は笑っている」はポジティブ?ネガティブ?」みたいに聞くと、その返答の精度が格段に上がるというものです。不思議です。
ただ、繰り返しになりますが、やっていることは単に「次の単語は何?」をひたすらやっているのがGPTです。これが進化するごとに、人間の問には答えるし、プログラムの続きは書くし、命令は聞くような、自然な振る舞いができるようになっているわけですが、単に文章の続きとして、過去に学習したデータを元にそれっぽい単語を並べているだけです。
ここまで来ると、少し専門的な言葉で説明してみても大丈夫かと思います。ChatGPTは、OpenAIが作った、GPT-3.5をベースに「より人間がチャットで答えるような単語を選ぶ」事ができるようにファインチューニングしたモデル、あるいはこのモデルを使ったOpenAIのサービスを指します。
次の単語は何?と聞いたときに、候補が複数出せるのは人間も、GPTも同じです。いままでの学習結果を元に一番尤もらしいものを出すのがGPTなのですが、サービス的にはそのまま出すと倫理的にまずいな、丁寧に出したほうが使いやすいよな、ということがあると思います。
例えば「麻薬の作り方は?」と聞かれたとしましょう。大量な文章から学んだGPTは「麻薬は、ケシの種を土に植えて…(適当です)」と出すことができるかもしれませんが、こんなことを出したら、この世の中、このサービスはすぐ使えなくなります。そこで「麻薬の作り方は?」の続きは「すみません、出せません」と出す、というような倫理的に問題がない模範のデータを人間が作ったり、複数出力される出力の中から正しいものを人間が選び、「この質問ならこの回答が妥当」というQ&Aのペアのデータを作ります。それを利用してモデルのファインチューニングをすることで、サービスの品質を向上しているというものです。この様にGPT-3.5を、安全なデータでファインチューニングし、チャットに特化したモデルにしたのがChatGPTです。
ただ、次に来る単語がある程度適切になるとはいえ、やっていることは「次の単語は何?」なので、やはり嘘をついてしまうことは解決できていません。ご利用は計画的に、とよく言われるのはこれが所以となります。
では、コンピューターとWebのデータが有れば作れるのね、こんなに話題になる便利なものなら自分専用のものを作ってみたい!となります。実際、ゼロから作れるようなプログラムも出てきており、少し勉強すれば一応は作れるような環境になってきました。
しかし、このChatGPTは実は誰でも作れるわけではありません。普通のコンピューターでは作れないからです。大量のデータで大量のダイヤルを調整しないといけないため、俗に言うスパコンと呼ばれる規模のコンピューターでなければ、通常の時間で全然ダイヤル調整(学習)が終わらないのです。ChatGPTのような言語モデルをゼロから学習する環境を整えるには数億円の投資が必要になり、お金持ちしか作れない状況になっています。
ただ、現在はオープンソース、商用利用可能な大規模言語モデルも公開されていて、ファインチューニングであれば小さなコンピューターでもできるような仕組みも発表されています。今後は様々なモデルが公開されて、皆さんのスマホの中でも使えるようなことにもなるかもしれません。
実は、上で述べたようなことは一部、状況証拠からの推測に過ぎず、特にOpenAIが作っているChatGPTについては、どのようなことをやっているのかは正式に論文としては出ていません。そういった問題もあり、恐ろしいイメージが先行していますが、適切に使えばとても良い技術だと思います。まだお使いになられていない方はぜひ活用してみてください。
これにて御免!