ChatGPTにまずポケモンの素早さを尋ねた友人に困惑したエンジニアが、ChatGPTの仕組みを詳しく解説する記事がこちらです。性質や仕組みについて分かりやすく解説します。
ChatGPTの仕組みを知りたい方とポケモントレーナーには面白く御覧いただける内容となっています。ぜひ最後まで読んで、ChatGPTの謎に迫ってみてください。
事の経緯:ポケモンの素早さを尋ねる友人にChatGPTも私も困惑
ChatGPTはサインインするとシンプルな入力欄が表示されます。初めてでは何を入力するでしょうか。

私は「ChatGPTとは」でしたが、説明を受けてアカウントを作り終えた友人は、何でも良いと聞いてこう尋ねました。
「50レベルのガブリアスの性格が陽気の場合の最高の素早さはいくつですか?」と。
(意訳:ポケモンの素早さは?)


この記事を理解するのに読んでいただく必要はありませんが、ChatGPTの回答は以下でした。
ガブリアスは、ポケットモンスターシリーズに登場するポケモンです。陽気とは、ゲーム内でポケモンの性格の1つで、陽気なポケモンは素早さが上がり、特攻が下がる特徴があります。
ガブリアスの基本的な素早さの基本値は102です。50レベルの場合、性格補正が含まれる前の最高の素早さを計算するには、以下の式を使用します。
「50レベルのガブリアスの性格が陽気の場合の最高の素早さはいくつですか」
最高の素早さ = [(基本値 * 2 + 個体値 + 努力値 / 4) * レベル / 100] + 5
レベル50で、31の個体値(IV)と252の努力値(EV)を持つガブリアスの素早さは以下のように計算できます。
最高の素早さ = [(102 * 2 + 31 + 252 / 4) * 50 / 100] + 5 = 139.5
この値は切り捨てられるため、139となります。ただし、陽気な性格の場合、素早さはさらに10%上昇します。
陽気な性格の最高の素早さ = 139 * 1.1 = 152.9
この値も切り捨てられるため、陽気な性格のガブリアスのレベル50での最高の素早さは152となります。
正解は169なのだそうで、回答がいきなり不正解でした。続けて話しかけます。
「あってないんだけど」
申し訳ありません、誤った回答をしてしまいました。もう一度回答いたします。
「あってないんだけど」
ポケモンの性格が陽気の場合、素早さが上昇する効果がありません。陽気の性格は攻撃が上昇し、特防が下降する効果があるため、素早さが上昇する性格とは異なります。
したがって、50レベルのガブリアスの最高素早さは、種族値と個体値、努力値、持っているアイテムによって異なります。陽気の性格の影響はありませんので、素早さステータスは標準的な値で計算されます。ガブリアスの基本素早さは100ですので、最高の素早さステータスは252の素早さ努力値を振り、素早さを上昇させる持ち物を持った場合、約143になります。
謝罪して回答してくれることに私は親近感がわきましたが、答えも再び間違えて、さらに言い方を変えようとして事実無根なことを、もっともらしく説明し始めています。(取り消し線部分)
こうして友人とChatGPTとの戦いは始まり、さらに細かい条件を指定し何度も訂正を依頼しましたが、正しい答えは返しませんでした。
私は困惑しました、なぜその質問なのか。ChatGPTも感情があれば困惑したでしょう。
たまたまではありません:ChatGPTの性質が関わっています
ポケモンに詳しい方なら、条件の指定が間違っているのではと思われるかもしれません。しかし間違いはChatGPTの性質によって起きているのです。あやまりを指摘したら逆に間違いばかりを書くようになった事もおそらく後述の仕様です。
逆に詳しくない方なら世界的に有名とは言えゲームのことを間違えても、どうでも良いのではと思われるかもしれません。
しかしこの一件はChatGPTとは何かに始まり、ChatGPTで出来ること、どうすれば良い結果が得られるかという事全てが関わっているのです。
友人には最終的にChatGPTの性質を理解してもらい、ChatGPTから正解を返してもらえ、ChatGPTと和解しました。

ChatGPTなどよりむしろ、ポケモンとガブリアスをよく知りたい方
この記事の理解にポケモンの知識は必要ないのですが、なぜピカチュウでなくガブリアスなのか、そして素早さに何の意味があるのかは知っておきたい方もいらっしゃると思います。
友人によりますと、ガブリアスは素早さがあるラインより高くなるため先に攻撃することもでき、それ以外にも総合的に強く、長くトップに君臨しているのだそうです。だからガブリアスの素早さはトレーナーの重要知識ですと。そうなのですか。
高さ1.9メートル、重さ95キロの設定が大谷選手とほぼ同じであるため、侍ジャパンの活躍を受けてtwitter でガブリアスがトレンド入りしたのだそうです。それだけ親しまれているようですね。
何となく納得しましたので、ChatGPTのお話を進めましょう。
ChatGPTは何者なのか:AIによる言語処理技術
ChatGPTは、WEB上の膨大なテキストデータを学習した「AIを用いるチャットサービス」です。
大量のテキストを学習したモデルはLLM(Large Language Model:大規模言語モデル)とも呼ばれます。ですから「LLMを使ったチャットサービス」ということも出来ます。
ChatGPTは人が普段使う自然言語で利用できます。自然言語はプログラミング言語とは違い、同じ単語で異なる意味があり、何に言及しているのかか分からないなど本来AIでは取り扱いにくい言語でした。
それがここ数年の進歩で一般の人も使えて、人間が書いたものと見分けのつかないような自然言語の回答を生成するようになったため、わずか2ヶ月で1億人のユーザーを獲得しました。
急速な進歩の発端は2017年にGoogleから発表されたTransformerという技術です。これの特徴は以前のものより多くの部分で並列処理が可能で、回答も良いという事でした。
並列化し易いということは、コンピューター単体を高性能化させなくても、資金力で沢山用意すれば高速で大量のデータを学習できることになります。
また人間の脳で言うところの「神経のシナプス数」に相当する「パラメータ数」を増やすと、どんどん賢くなっていくことが明らかになりました。
AIを研究する組織の一つであるOpenAIはこのTransformerを使用した自社のAIにGPTと名付け、大規模化などの改良を加えていきました。
GPTとは、Generative Pre-trained Transformerの略です。意味は「(文章等を)生成する、事前学習されたTransformer」と言えます。 ChatGPTは大規模化を重ねて行ったGPTのver3.5を、Microsoftも加わって人間の手も加え、Chat用に最適化したものです。
ChatGPTは何をしているのか:文脈の統計処理
ChatGPTの性質を理解するにはその中身であるTransformerを使って何をしているかの理解が必要です。開発段階での事前学習と、WEB上に公開した利用の二段階に分けて説明します。
【事前学習】Transformerに大量のテキストデータを用いた事前学習を行い、単語とその位置関係、つまり文脈を学習させます。これによって自然言語の特徴を表したモデルを構築します。
【利用】学習済みのモデルを使って、与えられた文章の文脈から、統計的に次に来る可能性が高い単語を順番に並べます。
「こんにちは」と話しかければ挨拶を返す可能性が高いですし、「~とは」と聞かれれば関連性の高い単語を並べます。
こう聞くと意識のないAIが機械的に文字を並べている、昔ながらのチャットボットと同じように感じます。 実は大きく違いはしません。しかしモデルが巨大で膨大な文章を学習しているために、人間と区別できないような返答を返し、ときおり感情があるようにも感じるのがChatGPTの画期的なところなのです。
GPT3ベースの別のチャットボットが、英語圏の5ちゃんねるのようなものである大規模掲示板のRedditで、気付かれて止められるまで人に混ざって一週間チャットしていたなどということもありました。気付かれた理由も文章が不自然だったからではなく、思慮深い長文の投稿を大量にしていたからです。

ChatGPTの性質
ChatGPTが文脈の統計処理を行っているということを念頭におくと分かりやすいです。
数字は間違える:計算してはいない
ChatGPTは計算が必要な課題があっても別途計算したりすることはなく、通常どおり次に出現する確率の高い文字を並べます。
1+1=程度の問題であればほとんどの場合次に2が来るので正解しますが、桁上りがあるようなものはすぐに間違えます。
1793 × 4721は、8450293になります
「1793 × 4721=」
(正解は8464753です)
計算が必要になった時に別途プログラムを呼び出すように改良されるまでは、計算の仕事は任せられません。
またChatGPTは出現確率の高い文字を並べているにすぎないため、なんとなく意味が似ていれば正解になる文章の生成より、数字の関わる事が不得意です。
以上のことから数値が答えになるような質問は避けたほうが良いです。
検索エンジンではない:情報は古いもの
ChatGPTのインターフェースはまるで検索エンジンのようですが、事前学習したモデルから文章を生成しており、質問を受けてから検索しているわけではありません。
したがってChatGPT3.5は2021年9月以前の出来事しか答えられません。次世代のChatGPT4もそこは同じです。
また検索エンジンではないので、「レベル50のガブリアスの性格が陽気で努力値252で素早さの個体値が31の場合の最高の素早さ」がWEBの何処かに書いてあったとしても答えてくれるとは限りません。ごく稀な法則性を持った単語の羅列にすぎませんので。
ハルシネーションを起こす:AIが嘘をつく。宿題につかうとどうなるのか
ChatGPTは文字数やテーマを指定するとその通りに文章を生成してくれるので、公開直後から早速小論文などの課題に使われて問題になりました。
ですがもともと課題を自力で出来そうにもない方が使うのはおすすめしません。ChatGPTはスラスラともっともらしい嘘をつくからです。これを「ハルシネーション」(Hallucination)と呼びます。
「Hallucination」を訳すと「幻覚」ですが、AIに関してハルシネーションと言う場合は人間と同じ仕組みとは限りません。
こういうときにハルシネーションとカタカナで書いておくと、日本語訳の発明を待たずに注意喚起しながら使用できるのが日本語の素晴らしいところですね。
AIにおけるハルシネーションは学習元になったデータには書いてないことを、さまざまな事を学習した結果AIが自信を持って回答することです。つまり、AIが幻覚でも見ているのかな?ということですね。
間違いとは言え統計レベルで高確率な関連単語を、人類共通規格レベルで自然な文脈で並べてきますので注意深く事実確認をしないと間違いに気づけないことがあります。ポケモントレーナーは騙せなかったようですが。
つまり、翌朝提出する宿題には向かないということです。
基礎を学んだ学生には簡単にわかることを自然な言い回しで、致命的に間違って書いていたらChatGPTの利用が疑われ、先生は0点をつけるでしょう。 教育界では明確に利用を禁止したり、検出プログラムを利用したりするなど早速対策が行われています。
結局どう解決したのか:より良いプロンプトは
これまでの性質をご理解いただければ、回答を慎重に確認しなければいけないことがご理解いただけたと思います。
また、間違っていると指摘したら回答が悪化した事も理解できます。ChatGPTの仕様は公開されていませんが、具体的な情報もなく間違いを指摘すると最初の回答と変えるために、より低い確率で正しいと思われる回答が出力される設計だと推測できます。
さて、友人とChatGPTとの戦いはどう終結したのでしょうか。数値が正確でない可能性があるので全て確認します。検索エンジンではないので数式も知識と再検索で確認します。問題はないようです。でも答えは違います。
計算が間違っているのです。 そこでプロンプトエンジニアリングを行います。プログラムを作り変えるのではなく、動作中に指示を変えることでより良い結果を出すテクニック全般をこう呼びます。
プロンプトエンジニアリング:ステップバイステップで
ChatGPT に限らずLLM共通で応答を改善する呪文として「ステップバイステップで」というものが報告されています。
少しずつ文章を出力させることで、ChatGPTも正解する可能性が高まります。
今回は最初から「ステップバイステップで」と付けてやり直す代わりに数式だけ再入力して見ましょう。そうするとChatGPTでは文章と一緒に出力したときと違い、少しずつ数字を並べるので同じような働きをします。
「[(102 * 2 + 31 + 252 / 4) * 50 / 100] + 5 =」
この計算を実行すると、以下のようになります。
[(102 * 2 + 31 + 252 / 4) * 50 / 100] + 5 =
[(204 + 31 + 63) * 50 / 100] + 5 =
(298 * 50 / 100) + 5 =
149 + 5 = 154したがって、陽気でない性格の場合、レベル50のガブリアスの最高の素早さは154です。先程の説明で計算ミスがあったことをお詫び申し上げます。陽気な性格での最高の素早さを再計算すると、以下の通りです。
陽気な性格の最高の素早さ = 154 * 1.1 = 169.4
この値は切り捨てられるため、陽気な性格のガブリアスのレベル50での最高の素早さは169となります。
「[(102 * 2 + 31 + 252 / 4) * 50 / 100] + 5 =」
幸運にも正解が得られました。幸運とは、厳密には計算していないからという意味です。
ChatGPTは事前の出力結果を記憶しているので、なぜその計算が指示されたのか、そして以前の回答が間違っていることに気づいて訂正とお詫びをしてくれます。 それだけでなく続きを計算して最初の質問の答えを返してくれました。
とても賢いですね。
まとめ
さてポケモンの例で始まりましたが、ChatGPTの本質をご理解いただけたと思います。 まとめますとお伝えしたいことは二つです。
ChatGPTの真の性質を知ることの重要性
ChatGPTの性質を理解せずに課題をやらせたり、検索エンジンの代わりにしたりすると、深刻な不利益を被る可能性があります。また、正しく答えてもらうには性質を理解して指示する必要もありました。
最終的に素早さの正しい答えは得られましたが、使い方として良くないこともご理解いただけた思います。
ChatGPTに限らずLLMとして今後も注目していきましょう。
利用には注意が要りますが、応答を見ると分かる通りとてつもない可能性を秘めています。
LLMの一つであるChatGPTはOpenAIとMicrosoftの協業ですが、潜在能力の高さから各社も他のLLMの開発を進めています。
Transformerの開発元であったGoogleは先にBERT(2018)を発表していましたし、LaMDA(2022年1月)やPaLM(2022年4月)も発表しています。
また続々と他のIT大手(Meta, Amazon, Baidu, etc.)も開発しています。
今後も新サービスが出てきますので、サービス名ではなくLLMやTransformerという言葉を覚えておくと類似の技術だね、と新しい話題を理解しやすくなると思います。
Comment