ChatGPTというか、GPTについて酒の席で説明した内容を記事にしてみる

自分の中でなんとなくわかっていることを説明すると
その物事に対する解像度が深まるって経験ってありません？

説明しようとするときに、頭の中においてある知識の塊を
伝わりやすいような形に変えてみたり、
伝わる順番で並べ替えてみたりとしているうちに、
知っていることに対しての再発見をしたり。
そうかと思うと、
自分が知っていると思っていたことに対して
穴があったのに気づいたり。

人に説明するのは、内容がめんどくさいものほどいいなあ、
なんてことを思いました。

さて、酒の席で
ChatGPTを始めとした言葉を生成する諸々について
説明をしていたときでもそれがあり、
もしかしたら誰かの役に立つかも知んない、
なんてことを思いました。
言語生成に絞っての話題だったのでで
違和感を持たれる方も多いかもしれないですが、
酔っ払いのはなしだとおもって、
生暖かい目で見ていただけるとありがたいです。

話した内容の流れをベースに、
ここに読み物っぽい形で書いてみます。

# GPTは賢いけれども、何も知らない子
ChatGPTのGPTってなんでしょ？
意味的には“訓練済みの文章でっち上げ器”って意味らしく、
その意図は、文章を次々と繋いで出力していって、
それっぽい文章を紡いでいく仕組みらしいです。

いまChatGPTでみんなが触っているのは
かなり成長したGPTなんで、話を単純にするために、
生まれたばっかりのGPTの赤ちゃんを想定して考えてみます。
GPTの意味は、
“文章でっち上げ器”を
“訓練したもの”ってことらしいんで、
赤ちゃんGPTは
“訓練されてない文章でっち上げ器”って見方ができます。
なので、できることと言ったら
文章のはじまりの単語をあげると、
それをもとに次から次へとそれっぽい文章を繋げていく、
というのはできる。
って意味合いになります。

その、“繋げていく”というのと、
それっぽい単語を探し出してくる仕組みがGPTの主な機能と思うんで、
そこらへんをちょこっとだけ、深掘りをしてみようとおもいます。
そうすると、GPTが得意なこととそうでないものとの境目が見えてきて、
それが見えると「ChatGPTは平気で嘘をつく」とか、
「ChatGPTは間違った知識ばっかり」なんて言ってるおっさんの
理解の浅さも手に取るようにわかるかもしんないです。

> GPT = Generative Pre-trained Transformer
 直訳すると、生成訓練後の変形器みたいな感じ？

## 作文上手だけど、言葉知らずなのがGPTちゃん
GPTがひねり出してくる文章が、
知っていることや正しい知識を元にしていなくって、
それっぽい繋がりを適切に継いでいるってこと、
と、単語の意味については、辞書的に意味を押さえているんじゃなくって、
その単語が出てくる文章から方向性を見つけ出して、
似たような矢印、そうでなければ真逆の矢印の単語を探し出して、
文章の素材にしている。
ってことがつかめると、
ChatGPTは作文上手だけど、物を知っているわけではない、
って背景が少しが見えてくるかと思います。

こっからあとは、その話の長ーーーーーーい説明。

### 「東京」のあとに、何が来るのがそれっぽいか選手権
仮に、東京って単語のあとに何が続くか、
というのを例えに、
GPTちゃんが文章を繋げていくってときに
何をしてるのかってのを例にして考えてみたいと思います。

で、GPTだとどんな感じのが生成されるかというと、
たぶん、こんな感じが生成されるんじゃないかとおもいます。
- 東京での生活は、忙しくても充実感があります
- 東京には、世界的に有名な観光地が数多く存在します
- 東京は大都市の中心地で、人々が集まる場所です
- 東京への憧れは、多くの人々に共有されています

> ※上記はChatGPTにGPT-1っぽく作ってとオーダーを出して生成したもの。
酒の席では私が適当にでっちあげてた

“東京”を文章のスタートにして文章を作るときに、
東京って単語のあとに続く割合の近い単語を引っ張り出して、
いったん、てにをはをくっつけてみたりして（文法的な処理）、
“東京で”につながるいい感じの単語を探り出して、
というのを繰り返して、
- 東京
- 東京で
- 東京での
- 東京での生活
- 東京での生活は、
- 東京での生活は、忙しく
- 東京での生活は、忙しくても
- 東京での生活は、忙しくても充実感
- 東京での生活は、忙しくても充実感が
- 東京での生活は、忙しくても充実感があります
というふうに繋げていくのがGPTちゃんの基本的な考え方です。

こんな感じで、今の状態をもとに次の状態を接ぎ木していくのを、マルコフ連鎖とかその手前の状態をマルコフ過程なんて言っています。
なんか難しそうに見えるんで、とりあえずは
マルコフさんが考えた“最強の繋ぎ方”の名前とでもとらえておいてください。

> マルコフ連鎖と言ってますが、マルコフ連鎖では文章全体を見渡しての処理はしてなくて、単語と単語の結びつきの近さだけで判断してます。つまり、今の単語をもとに先の単語をつないでいく、先しか見てない生成です。
ChatGPTでは今までの流れを組み入れて生成するのでそこが大きく違います。
ここでは便宜上マルコフ連鎖と言ってますが、ぜんぜん違うものです（酔っ払いの話だから、そんな解像度で）。

### 東京とロンドンは近い、東京とデトロイトは遠い
文章を書いていくのには、単語をたくさん知ってる前提なんですが、
実は、GPTちゃんは言葉の意味をちゃんとは知っていないっぽいです。
知っているのは、いままでに書かれた文章の繋がり方と
その単語がどのような流れの中で出てきたか、
単語がどのような方向性で使われているか、
というところみたいです。
それをもとに判断して、それっぽい単語を引っ張り出してくる、
ってところがGPTちゃんの本領発揮のところで、
それっぽい単語の見つけ出すのに、単語に矢印を付けているのが、
GPTちゃんが言葉を理解するやりかたです。

“東京”という単語だと、
「首都という矢印がある」
「島国の矢印がある」
「歴史の矢印が大きくある」
とか、そんな感じでとらえてると思ってください。
そうすると、ロンドンやワシントンでは
ロンドンは、
「首都という矢印がある」
「島国の矢印がある」
「歴史の矢印が大きくある」
というのがあり、
ワシントンでは
「首都という矢印がある」
「島国の矢印がない」
「歴史の矢印は先の２つに比べて小さい」
なんてみかたをしていると考えてみてください。
じゃあ、デトロイトだとどうなるかというと、
「首都という矢印がない」
「島国の矢印がない」
「歴史の矢印は（この中では）小さい」
という判断になり、
“東京”の仲良しは“ロンドン”。
“ワシントン”は割と近い矢印だけど、ちと違う。
“デトロイト”は違うなー、なんて理解をしているっぽいです。

そういう矢印を大量に読み込んでいる文章から、
この単語は、地名っぽい、とか、
その単語は、大きな経済圏を指している、
とか、そんな感じで吸収して、
矢印を大量に作っている、らしいです。

GPTちゃんは文章生成とか絵を書いたりとかしているけれども、
しょせんはプログラムなので、数字で計算する必要があったりします。
そのときに便利なのが、矢印がどれぐらい同じ向きを向いているか、
というのを計算ではじき出せるコサイン距離って考え方です。
コサインって音が聞こえるだけで、脳みそが止まりそうになると思うんで、
ひとまずは、どんぐらい同じかってのを数字で見る道具ぐらいに考えといてください。
どういうことかというと、
矢印が同じ向きを向いているかってのを数字で見えるようにする、
方法だったりします。
おんなじ向きだと1で、時計の0時と3時みたいに
直角に交わると0、真逆の向きだと-1になって、
どれぐらい同じ向きなのかを数字で判断できます。

じゃあ、GPTちゃんは、どんな感じで見ているかというと、
東京の矢印を、ヨーロッパにあるかき揚げみたいな形をした島に置くと、
同じような向きを向いてる矢印はロンドンだ、って見てます。

> コサイン距離と記憶しているけど、調べてみたらコサイン類似度が正しい呼び方みたいです。
言わんとしていることは変わらないんで、酔っぱらいがこんがらがってると思ってください。

こんな感じで、はじめの単語の矢印を見て、
文章をつなぐもの（いわゆる、てにをは。助詞てやつ）を入れつつ、
その次に来る単語は似たような矢印のものを選んで、
繋げていくというのがGPTちゃんの頭の中だったりします。

よちよち歩きだったGPTちゃんにいろんな文例を読ませて、
単語から次にくるそれっぽい単語のパターンを増やしてみたり、
それと同時に、単語の矢印の数を増やしてあげたり、
そういったトレーニングを積んだのが、
今のChatGPTの中の人であるGPT-3やGPT-4だったりします。

いくらトレーニングを積んだとはいえ、
文章をつなぐ選択肢を大量に持ったり、
矢印の数を増やすのが目的なので、
根本的にはGPTちゃんはGPTちゃんのまま、
というのが今の状態です。

繰り返しになりますが、
言葉の意味を理解しているのではなく、
単語を選ぶ選択肢が人間が太刀打ちできない量だ、
というところで、言葉の理解の方向性が
人間とは大きく違っています。

# つまり、GPTちゃんは何が得意？
それっぽく何でもできるような気がするものの、
根っこはGPTちゃんなので、
文章を継いでいったりというのは大の得意です。

それと同じぐらいに得意なのが、
実は要約だったりします。
考え方としては、長ーーーーーーい文章を読ませて、
そこからその文章に転がっている矢印をGPTちゃんが読み取って、
矢印の向きが変わらないように短くする、
というのができるらしいです。
つまりは、普通の言葉でいうと、
要約ってやつで、旧約聖書だろうがレ・ミゼラブルだろうが、
短歌にしてみてなんていうと、意味の方向を変えずに
それっぽい文章を作ってくれます。

逆に苦手なのが、事実関係を正確に書くことや、
最新の情報に基づくことなんてのは、
仕組み上無理に近いと思います。
> プラグインで解決できるけど、今回はモデルの話なので割愛。

事実関係は、意味を解釈せずに文章を抱えているので、
それっぽくつながれば問題無しとしてしまいます。
あたらしい情報については、
GPTちゃんをトレーニングするタイミングまでのことしか知らないので、
昨日今日Twitterで話題になったことは知らなかったりします。

# そんなこんなをふまえて、ChatGPTの力を最大限に発揮できる方法は？
じゃあ、そんなGPTちゃんが下地にあるChatGPTの力を最大限に発揮させるのは、どういうことかというと、ズバリ、つぎの２つ、＋１になるか、と考えてます。

### わかりやすく書き直し
難しくて、視線が文字を追うのを諦めるような文章、もしくは知らない単語ばっかりの文章でも簡単にしてくれます。

例として、文化庁の
「「公用文作成の考え方」について（建議）」
[https://www.bunka.go.jp/seisaku/bunkashingikai/kokugo/hokoku/93650001_01.html](https://www.bunka.go.jp/seisaku/bunkashingikai/kokugo/hokoku/93650001_01.html)より
>文化審議会は、慎重審議の結果、「公用文作成の考え方」を決定しましたので、別添のとおりここに建議します。
これは、昭和26年に国語審議会が建議した「公用文作成の要領」が示してきた理念を生かしつつこれを見直し、今後、政府内における公用文作成の手引として活用されることを目指し取りまとめたものです。
つきましては、本建議を政府内に周知し、活用を促すよう要請いたします。


この文章を小学生でも読める形で書き直してもらうと、
>文化審議会は、じっくり考えた結果、「公式の文章を作る考え方」を決めました。それをお知らせするために、以下に提案内容を書きます。
「公式の文章を作る指針」というものがありました。それは昔、国語審議会が提案したもので、公式な文章を書くときの基本的なルールを教えていました。今回の提案では、そのルールを見直して、今の時代に合わせた手引きとして政府の中で使ってほしいと考えました。
これからは、この提案内容を政府の中で広く知ってもらい、使ってもらえるようにお願いします。

といった形で、自分が意味を取るのには十分に優しい文章になります。


### 要約
どんなに複雑で、どんなに悪文で、どんなに込み入った文章でも、文意をもとに平易な文章に直してくれます。
それをもとに、言いたいことだけをピックアップしてもらうと、どんな文章でもすぐに意味がつかめるようになります。

さっきの文化庁の文だと
> - 文化審議会が「公用文作成の考え方」を決定しました。
>- 「公用文作成の要領」の理念を見直し、政府内の公用文作成の手引として活用するために、建議をまとめました。
>- 政府内に本建議を周知し、活用を促すよう要請します。

という形になります。

手っ取り早く意味を取るのには、これで十分かと思います。
必要と思えば原文を読めばいいので、大量の文章に埋もれている人にはいいかのしれないです。

### （きちんとお膳立てをしてあげた上での）文章生成
GPTちゃんは物を知らないのと同時に、堅い単語には硬い文章、
薄味の内容にはペラッペラな文章を返してくる傾向があると思います。

また、特定の分野の正確な知識はないので、
そこらへんは用意してあげないといけないです。

じゃあ、どんな感じで命令するといいかというと、
- 文章の前提を提示する
- 文章の中で必要な知識は明示する
- 文体などのオーダーがあれば指示を出す

ということをやってあげると、
内容は正しいし、文章は適切な量で出てくるしで、
いい感じに使えるかと思います。

なので、さきほどの文化庁の文章をもとに、
- 一人称はあちき
- です、ます。は ありんす や しんす
- してください、はしておくんなんし

等々の花魁口調に置き換えるように指示を出して書き直してみました。

> あちきは、じっくり考えた結果、「公用文作成の考え方」を決めたんでありんす。
だから、ここに建議しんす。
これは、昭和26年に国語審議会が建議した「公用文作成の要領」が示してきた理念を生かして、見直してお上で公的な文章を作るための手引として活用することを目指し、まとめたものでありんす。
だから、この建議をお上内に広めて、みんなが使っていけるようにしておくんなんし。