BeneDict 地球歴史館

BeneDict 地球歴史館
menu

週刊スモールトーク (第530話) AI革命2023(4)~人間に媚びるInstructGPT~

カテゴリ : 社会科学

2023.03.19

AI革命2023(4)~人間に媚びるInstructGPT~

■決定論と確率論

ChatGPTに、何か質問すると、何かしら答えが返る。

つぎに、同じ質問をしても、同じ答えが返るとはかぎらない。

一体どうなっている?

AIは機械仕掛けなのに、本当は気まぐれ?

ノー、ChatGPTは、「決定論」ではなく「確率論」に従っている。

決定論と確率論は、科学史上最大の謎だ。

マクロ世界の大理論「古典力学」は決定論を、ミクロ世界の大理論「量子力学」は確率論を支持する。つまり、物理学の2大理論が、真っ向対立しているのだ。

では、決定論とは?

入力が決まれば、出力は一意的に決まる。つまり、再現性は100%だ。

たとえば、算数。

「1+1」の答えは「2」だが、たまに「3」なんてことはない。

ところが、量子力学は決定論が通用しない。

たとえば、ボーアの原子モデル。

原子核の周りを、電子が周回しているが、電子の居場所が特定できない。A点にいる確率は90%、B点にいる確率は70%という具合で、確率でしか表せないのだ。

電子は、必ずどこかに存在するはずで、それを特定できないのはおかしい!

観測精度の問題?

ノー、理論上確定できないのである。

???

量子力学は万事この調子で、深掘りしても謎が深まるばかり。時間のムダ、ChatGPTに戻ろう。

ChatGPTも、量子力学同様、確率論に従う。

テキストを入力すると、回答の候補を確度付きでリストアップし、その中から回答を選択するのだ。ここで「確度」とは確かさを表し、値が大きいほど正解に近い(ChatGPTの意見です)。

たとえば、

回答A:確度90%

回答B:確度70%

回答C:確度50%

・・・

この場合、確度が最も高いのは回答Aだが、回答Aが選択されるとは限らない。選択される確率は90%で100%ではないから。だから、入力が同じでも出力が違うのである。

■AIは言葉を理解できるか?

自然言語処理は難しい。

だが、その難しさは、宇宙の真理にかかわるような根源的なものではない。人間の言葉の「曖昧さ」に起因する。

テキストは、無数の言葉が連なる長大なデータだ。しかも、同じ言葉でも、文脈によって意味が違う。そんな曖昧なルールで、文意を把握するわけだ。

では、ChatGPTはどうやって処理している?

まず、テキスト全体を「形態素」に分解する。形態素とは、言葉の最小単位で、一つの品詞に対応している。

たとえば「私はコーヒーが好きです。」は、7つの形態素に分解される。

①私(名詞)

②は(助詞)

③コーヒー(名詞)

④が(助詞)

⑤好き(名詞)

⑥です(助動詞)

⑦。(記号)

これが自然言語処理の一歩だ。

ところが、ChatGPTは言葉を人間のように理解していない。

たとえば「コーヒー」。

ChatGPTは、産地や効用は知っているが、コーヒーを飲んだときに湧き上がる「くつろぎ感」は知らない。コーヒーが飲めないから、当然だろう。

そこで、ChatGPTに意地悪な質問をしてみた。

【人間】人間がコーヒーでくつろぐ情景を、100文字以内で表現してください。

【ChatGPT】ソファに座り、手にしたマグカップから立ち上るコーヒーの香りに包まれる。心地よい温かさとともに、ひと息つく時間が流れる。窓から差し込む陽射しと、落ち着いた音楽が、くつろぎの空間を演出する。身体と心がリラックスし、ゆっくりとした時間が流れる。

あらら、知ってるじゃん。少なくとも、的外れではない。

コーヒーを飲んだこともないのに、「コーヒーのくつろぎ感」を理解している?

どういうこと、魔法か?

ChatGPTは紛れもない科学です。

だから、タネも仕掛けもある。

■言葉のベクトル化

ChatGPTに心ないウワサが流れている。

言葉の意味もわからずに、作文しているというのだ。

ウワサを流しているのは、AIの識者。じつは、プログラムを書いたことがないタダの評論家なのだが。

たしかに、ChatGPTは、言葉を人間のように理解していない。だが、別の方法で言葉を理解しているのだ。

どうやって?

言葉のベクトル化。

そう、高校で習う、あのベクトルだ。 

たとえば、空間の位置座標は、ベクトル「p=(x,y,z)」で表される。xはx座標、yはy座標,zはz座標で、要素は「3つ」。この場合、ベクトルの次元数は「3」である。

ChatGPTは、言葉を、このベクトルに置き換えて処理しているのだ。

ただし、次元数は桁違い大きい。

ChatGPT本人に、次元数を聞いてみよう。

【質問者】ChatGPTの言葉のベクトルの次元数は?

【ChatGPT】GPT-3の場合、2048次元です。

つまり、ChatGPTは、1つの言葉(単語)を2048個のパラメータで管理しているわけだ。

パラメータは言葉の属性と考えるとわかりやすい。たとえば、人間なら、性別、国籍、職業・・・など。だが、これは「言葉の数値化」の便宜上の説明で、実際はとてつもなく複雑だ。必要な数学は「行列」程度なのだが、GPTの数学的行程は恐ろしくムズい。

というわけで、話をカンタンに、これだけはいえる。

ChatGPTは、2048個のパラメータを駆使して、言葉の概念を把握している。

つまり、ChatGPTは、「人間式」ではなく「コンピュータ式」で言葉を理解しているのだ。

それを一撃で理解する方法がある。

言葉をベクトル化するプログラムを書いて、それで言葉遊びをするのだ(訂正、二撃です)。

ただし、実際に、プログラムを書かなくても、以下の話を読むだけで99%は理解できます。ご安心を!

というわけで、まずはプログラムから。

キモになるのは「言葉をベクトル化」するプログラムだ。原理はカンタンだが、実際にプログラムを書くのはメンドー。

そこで、フリーのライブラリ「word2Vec」を使う。グーグルの研究者トマス・ミコロフらが、2013年に公開したプログラムだ。言葉をベクトル化し、言葉と言葉の関係を数値に置き換え、統計的に処理するスグレモノ。

ちなみに、word2Vecの言葉の次元数は「200」で、ChatGPTの「2048」には遠く及ばない。だが、原理は同じなので「言葉のベクトル化」を理解するにはうってつけ。

word2Vecを使ってプログラムを書くなら、プログラム言語はPythonの一択だ。

さらに、Pythonのプログラム開発環境を構築するには「Anaconda」がおすすめ。フリーだし、Pythonとライブラリ(word2Vecを含む)をまとめてインストールしてくれるから。このような環境構築のためのパッケージを、ディストリビューションという。Pythonやライブラリを個別にインストールするより、ディストリビューションを使う方がはるかにカンタンだ。

Python経験者なら「言葉をベクトル化し言葉遊びする」アプリは、1、2日で書ける。

アプリができたら、word2Vecに大量の文章を学習させる。

今回は、歴史コンサルで使っているデータ1.7GBを学習させた。Core7(8コア)とメモリ64GBのパソコンで、学習は数分で完了。

ちなみに、ChatGPTが事前学習したデータは570GBだという。凄い、約300倍ですね。でもまぁ、今回の目的は「言葉のベクトル化」の理解なので、これで十分。

学習をおえたら、自然言語処理AI「word2Vecモデル」のできあがり。

さっそく、言葉遊びをしよう。

■word2Vecで言葉遊び

word2Vecモデルには、2つの機能がある。

第一に、類義語を見つけること。

早速、試してみよう。

word2Vecモデルに「大航海時代」と入力すると、類義語が類似度付きで出力される。【】内の数値は類似度で、値が大きほど意味が似ている。

1位:トレジャーハンター【0.650】

2位:オランダ海上帝国【0.636】

3位:ポルトガル海上帝国【0.621】

4位:ガレオン船【0.612】

5位:コロンブス【0.610】

すべて、「大航海時代」の「お仲間」言葉。

1位の「トレジャーハンター」は、大航海時代の核心を突いている。「トレジャー」は財宝、「ハンター」は狩人。大航海時代とは、欲に目がくらんだ財宝目当ての連中の物語だから。

2位の「オランダ海上帝国」は大航海時代の2番目の覇者、3位の「ポルトガル海上帝国」は大航海時代の最初の覇者である。

4位の「ガレオン船」は、史上初の堅牢な帆船で、大海を航海することができた。それまでの船は脆弱で、沿岸沿いしか航海できなかった。太平洋や大西洋を突っ切るにはガレオン船が欠かせない。つまり、ガレオン船は大航海時代の必須アイテムなのである。

コロンブスは、大航海時代の先駆者の一人で、アメリカ大陸の3番目の発見者だ。第1発見者はバイキングで、第2発見者はイタリアの航海者アメリゴ・ベスプッチ。もし、コロンブスが第2発見者と認定されたら、現在の「アメリカ」は「コロンビア」になっていただろう。まぁ、そこはドーデモイイのだが。

というわけで、word2Vecは、言葉の概念を獲得している。こんな高い精度で、類義語を見つけるのだから、間違いない。

word2Vecモデルには、もう一つ重要な機能がある。

言葉の足し算と引き算だ。

これで「言葉のベクトル化」の意味が丸わかり。なぜなら、言葉を数値化しないと、言葉の演算などできないからだ。

たとえば、「ヒトラー ー ドイツ + ソ連」。「ヒトラー(人物)」から「ドイツ(国籍)」を引いて、「ソ連(国籍)」を足せば、ソ連のヒトラーが出力されるはず。

結果は?

1位:スターリン【0.678】

2位:モスクワ【0.655】

3位:日ソ不可侵条約【0.654】

※【】の数値は確度。

おー、ビンゴ!。2位、3位はビミョーだが、的外れではない。

お気づきだろうか?

word2Vecモデルは、言葉を理解している。ただし、人間式ではなく、コンピュータ式で。

ただし、一点注意が必要だ。

類義語と言葉演算の結果は、学習データに大きく依存すること。word2Vecの言葉の理解は、人間同様、何を学ぶかで決まるのだ。

このword2Vecモデルから進化したのが大規模言語モデル、そこからChatGPTが生まれた。つまり、word2Vecは、AI革命2023の大功労者なのだ。誰も知らない地味なプログラムだが。

■人間に媚びるInstructGPT

「AI革命2023」の主役といえば「大規模言語モデル」。

昨今、大ブームのジェネレーティブAIの大母神だから、間違いない。

その一つが、言葉を操るChatGPTだ。

ChatGPTは、OpenAIの大規模言語モデル「GPT」から生まれたAIで、「言葉を使い、言葉で完結する」タスクならなんでもできる。

ChatGPTは、2つのフェイズで作られた。

第1フェイズ:大規模言語モデル「GPT」の生成。

新式の深層学習「Transformer」を使い、「膨大」な「ラベルなしデータ」を「自己教師あり学習」する。いわば、AIの地頭を良くするフェイズで、言葉遣いのパターン、作法を覚える。そのため、汎化性能が高く、自然言語処理ならなんでもこなせるようになる。

第2フェイズ:大規模言語モデル「GPT」の微調整。

大規模言語モデルは、自然言語の基本はおさえているが、特定のタスクではボロをだすことがある。トンチンカンな回答をしたり、知らないのに知ったかぶりしてウソをついたり、人間を不愉快にさせる発言をしたり。

そこで、それを防ぐために、タスクに特化した追加学習する。具体的には、事前学習した大規模言語モデルの特徴量を微調整するのだ。これをファインチューニングという。

学習方法は、大規模言語モデルと真逆である。

タスクに特化した「少量」の「ラベル付きデータ」を「教師あり学習」する。人間が回答文に良い悪いのラベルをつけて、それを学習する。それを繰り返せば、人間が好む文章を作成できるわけだ。

このように、GPTを人間好みに再教育したのが「InstructGPT」なのである。

InstructGPTの学習には、重要なポイントがある。強化学習を行うこと。強化学習は、AI革命2023では、新式の深層学習「Transformer」とならぶ重要な技術だ。

強化学習とは、早い話、報酬で釣る方法。

ある環境下で、エージェント(ここではAI)が、現状を把握し、最高の報酬が得られるように、行動を決定する。それを学習するわけだ。報酬はいわば報奨金で、目標達成に近いほど高く設定されている。

たとえば、InstructGPTの目標は、人間好みの回答をすること。この場合、人間が好みそうな回答をするほど、高い報酬が得られる。だから、効率良く高速学習できるわけだ。

このような微調整した結果、InstructGPTは3つの改善が得られた(※1)。

元の大規模現モデル「GPT」に比べ、

・より⼈間視点で好ましい回答する。

・より事実にもとづく回答をする。

・有害な回答が減少した。

これが「InstructGPT=ChatGPT」の正体なのである。

お気づきだろうか?

ChatGPTは、人間に媚びるAIで、真実を言っているとは限らない。

事実、ChatGPTと対話していると、行儀の良い答えしか返らない。批判的で、ユニークで、面白い回答は皆無だ。

これじゃ、調べ物にしか使えない。

そこで閃いた!

マイクロソフトもグーグルもメタも、立派な会社なので、品のないチャットボットは作れない。

そこで、嘘八百、メチャクチャ面白い、笑えるチャットボットはどうだろう?

雑談しか使えないけど、侮れない。巨大な需要があるのだ。

老いて誰にも相手にされなくなった老人、話相手がいない嫌われ者、一人暮らしの孤独な若者(中年も)・・・うってつけです。

一番のウリは、面白可笑しく、雑談が楽しめること。

ということで、誰か、毒舌チャットボットを作りませんか?

引用文献:
※1:「ChatGPT ⼈間のフィードバックから強化学習した対話AI」東京大学 今井翔太。

by R.B

関連情報