ChatGPTを使ってAGI(汎用人工知能)を作っていく（１）

#
**ChatGPTはAGIかどうかもめてるけど、そもそもAGIを作れるのか？作るとしたらどうやって？？**

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2974126/0e711f7d-af9e-3049-9efd-af8fe419f06d.jpeg" width=70%>


**これは綾波の心を考える話かな？？**

画像は下記ページからあの綾波の有名なシーンのセリフが出てるものをお借りしました:relaxed:

https://minkara.carview.co.jp/userid/2990481/blog/43930910/


# １．ChatGPTの簡単な評価のまとめ

もはや世界のIT業界では誰も知らない人がいない、勉強してない人もいない、というレベルになってきたのは確実なChatGPTや、そのAPI。

自分も最近色々 **LangChain** とかを試しながらテストしてるんだけど。

今これをめぐる話としては、AGIなのか、そうでないのか、そしてAGIは近いのか遠いのか、みたいな話がいろいろな所でされている状況だ。

AGI（Artificial General Inteligense= **汎用人工知能** ）の定義みたいのがあいまいだし、いろんな人が自分の好きなように定義してるんでとても分かりにくい所だけど、まあ人間っぽい感じでいろんな実世界のタスク含めてこなせる、ってあたりが、本来の定義だと思う。

一応、Wikipeadiaを参考に乗せとくね。まあ見てるといろんな人が自分の都合のいいように、定義をあっちこっち移動させてはいろんな話をしているのが現状かなという感じ:thinking:

https://ja.wikipedia.org/wiki/%E6%B1%8E%E7%94%A8%E4%BA%BA%E5%B7%A5%E7%9F%A5%E8%83%BD


だってさ。人間ができるって言っても、 **人間の中でさえ、いろんな人がいて、あるタスクが出来る出来ないあるし？？**

それだけでも、AGIかどうかは、 **全人類を超えないとAGIと認めない、という立場から、いやいろいろ劣ってても、人間の範囲に引っかかってればそれでいいじゃん？？** まで分かれるでしょ？

前者はそれから言うと、　**ASI(Artificial Super Inteligense=超知能)** な感じに近いし、もう一方なら、とりあえず、変なこと言うおやじとか結構おバカキャラのドラえもんみたいになってればOKみたいな話じゃない？

まあとは言っても、 **ELIZA** とか、 **人工無能** とかのレベルをAGIと呼ぶのは今ではさすがに無理がありすぎで、もう少し突っ込んだ話をしないと意味がない状態にはなってる。しかもChatGPT君は実際にむっちゃ賢い。

ChatGPT君が今AGIっぽくできる事は以下のようなことが既に確認されている。

- **チューリングテストは通る**
- **ウィノグラード・スキーマ・チャレンジは通る**
- **心の理論を持っている**

ここでは詳しく言わないけど、少しだけ説明します。

### 1-1 チューリングテスト

https://ja.wikipedia.org/wiki/%E3%83%81%E3%83%A5%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%BB%E3%83%86%E3%82%B9%E3%83%88

まあ要するに、 **チャットで区別つかないくらい不自然さが無くなったら、AIは人間的（AGI？）** と呼ぶって簡単な話。

これはまあ実際もう基本通ってて、実に人間らしい返答を返す。言葉遣いが丁寧すぎるから分かるとかあるけど、それは言葉遣いの話であって知能の話ではないし、実際言葉遣いもChatGPT君は自在に変えられるのが知られてるからそこで難を付けてもほぼ意味ない。

つまりチューリングテストは通ったと言っていい。だから、ChatGPT君は　**「人間的な機械」** とは既に言える。

### 1-2 ウィノグラード・スキーマ・チャレンジ

こんなやつですね。 **ロボットの研究者である「梶田秀司」氏の２０１６年のツイート。**

https://twitter.com/s_kajita/status/759576633250459648

これを実際に自分もChatGPT君相手にやってみたけど、まあ言っちゃうと瞬殺だった。特に４はこれを余裕のよっちゃんで解く。

これはつまり、何を意味するかというと、 **トロフィーとか、カバンとかの基本的な意味や使われる常識を理解** していて、さらに今の状況を類推しないと答えが出てこない。それが特にChatGPT君は普通に解ける。常識もシチュエーションの理解や想像が出来てるという感じだし、何なら、出題者の意図までくみ取ってその点も指摘しながら回答してくるという優秀ぶり。そして出す問題はこれだけじゃないよ。この手の問題はあいまいな受け取り方で引っかかるような感じにならない限りはほぼちゃんと解ける。あいまいなのは実際にどちらにもとれるような問題で、それは人間でも正答率が低いようなもの。

だから、この **汎用人工知能のテストと言われていた、ウィノグラード・スキーマ・チャレンジをChatGPT君は解ける段階に来た** 。だからその歴史的な意味では　**もうＡＧＩと言っていいのはもはや確実** だ。（異論を言う人が多数いるけどね。事実は事実だから）

### 1-3 心の理論

ちょうどこんな話が出てきたね。

https://twitter.com/AiBreakfast/status/1652505387860647936


論文はここ。

https://arxiv.org/abs/2304.11490

**何と人間より上！！！・・・**

これもWikipediで確認してもらうといいい。

https://ja.wikipedia.org/wiki/%E5%BF%83%E3%81%AE%E7%90%86%E8%AB%96

まあ詳細は読んでもらうとして、抜き出すと、

**この能力があるため、人は一般に他人にも心が宿っていると見なすことができ（他人への心の帰属）、他人にも心のはたらきを理解し（心的状態の理解）、それに基づいて他人の行動を予測することができる（行動の予測）。**

てな感じで、いろいろな人に心があるかもって「類推して」それによって他者の行動を理解する、ってな話。これは実は人間でもいわゆる「ASD」な人たちが苦手だ、と言われるタスクになる。でも、これをChatGPT君はやはり余裕で解く。

さて、ここで、問題があるけど、 **「人間でもASDの人に解けない」「人の心を類推して答える問題」をChatGPT君は既に解いてる。**

これは。

**「心の理論」に関しては既に、ChatGPT君は一部の人間を超えている。**

という事だ。

**難易度の高い、人間でも多少障害があれば解けない、特に他者の「心」を扱い、類推する、と言うという重要な部分で、ChatGPT4君は人間を超えている返答を、しかもかなり余裕で、返してくる！！**

これ見て、何でChatGPT4とかに **「AGIでないだろ！！」** って話になるのか、自分にはよくわからない。言ってる人たちは **「政治的な意図」や「自分がそれを実現したと言いたい」とか、「自分の言ってきた発言をひっくり返すとまずい」から言い続けてる可能性がある。**

自分もGPTモデルの限界（と思う事）は何度か書いてきたけど、少なくても今のChatGPT4は **かなりこちらの予想を大きく上回って、AGIとしてのふるまいを既にかなり見せている、というのは確実だ。**


# ２．じゃあAGIなの？？

って話になるけど。自分としてはこれは自分では既に **AGIと呼んで差し支えない** 、と思う。

　でももちろん本当の意味での人間の代わりになるロボットが今いるわけでもないし、Hallucination（幻覚）の問題もあるから、それから言うと、少なくてもChatGPTは４であっても、いくつかの点では、本当にすべて人間っぽくなる、つまり１００パーセントの人達がAGIだと認めるにはちょっとまだ距離が大きそうだ。

ちょっとそういった「ChatGPTはAGIじゃないぞ！」派の方々の件を具体的に整理しよう。

# ３．AGIと呼べない？要素

いまいくつか、そういう人たちの意見は先の意地になってるよね？？みたいな話としても今のChatGPT君にも足りないものもいくつかあって、まずそれをざっくり上げてみよう。

- **Hallucination（幻覚的間違い）がある**
- **感情がない**
- **自律性がない**
- **身体性がない**
- **意識がない？？**

でなあたりを見かける。

自分としては、これはAGIとして対応必須か？？と言われたときに、 **AGIの定義としてそもそもそんなものが必要だとは思ってない。** なぜなら、感情無いと言っても人間的な受け答えはある程度は当然できるし、こちらの感情を「推し量って」来るのは余裕だ。そして例えば。何の感情もわかない、時はじゃあ人間もAGIではないのか？とか、Hallucinationなんか、そこらの人達がいいつも起こして **地球は丸い板だ！とかやってる** し。自律性だって、ない人間いっぱいいるだろ？身体性？目の見えない人は視力を語るなとか？耳の聞こえない音楽家は人間ではないとか？？意識なんて自分以外の人にあるとどうして信じられるの？？

要は全部AGIはまだだ、という時の何か **難癖** になっている気がするんだよね。

**まあとはいえ**

まあとは言っても、上記のようなものはある意味でいうと、なくてはだめというものではないものの、あればより応用が確実に広がる、というところもある。

だからAGIかどうかの議論に用いられるのはおかしい気がしてるんだけど、一方で、よりよりAI、AGIの開発のために、これらをきちんと実装していくことは市場とAIの可能性を大きく広げられるのは確実だと思うんだよね。

だから、ここではその **実用上でAGIと誰でもいえるような存在の設計を実際にどうしていくか** を少しまとめて行こうかと思ってる。


# ４．議論のちょっと出し（Hallucinationの改善）

ここではまず、Hallucinationの改善に関しての方法論と応用的な方向性を書いて行こうと思う。

### 4-1 「わからない」をわからない

Hallucinationは、まあ言っちゃうともともとAIは「わからない」を学習してない、と思う。これは学習の仕方が間違っているのかもと思うんだけど、例えば分類問題でも、評価関数のsoftmaxだけ取っちゃうので、それぞれの可能性をちゃんと評価できてない気がするんだよね。本来はどの項目の評価も低い場合があるから、そういう要素が大きい時、わからない、というようにすべきだと思うんだよね。

これはAIの関係者が「わからない」を連発されにくくするためにあえて無視してきたのかもしれないんだけど、そして実用上は特にCNNなんかでは困らないんだけど、それが問題になって来てる気がする。

だから、「わからない」も認識のカテゴリーに入れて学習を進めるような仕組みがほしいかなという気がする。

### 4-2 Intext Leaningはワーキングメモリー？

既にいろんな人が使ってるけど、Intext LearningないしEmbeddingという手法があって、最初のプロンプトに事実をちゃんと書いておいてあげると、通常はそちらを情報として利用してくれる。これでHallucinationしてる部分は事実とちゃんと置き換えてくれる。これは人間でいえば、カンニングしてるともいうし、一夜漬けとかいうと、ちょっと印象悪いんだけど、最初に少し思い出して置くとか、という事だし、一種の、今覚えているキャッシュメモリー、ないし脳でいえばワーキングメモリーとしてとらえてもよいだろうと思う。

なのでこれはとても役に立つ。試しに、全日本語のWikipediaの項目を読んで答えるように実装してみた。

そうすると前に話していた、 **松田聖子の細かい話題** とかちゃんとついてくるし、もちろんそのほかのかなりマニアックな漫画家とかの話題もちゃんと答える。ポケモンたちの詳細パラメータもしっかり返せるようになる。だからIntextをリアルタイムでネットから引っ張るか、ないしVectorstoreにして保存しておいて、それを呼び出し時にIntext Learningとして利用すれば、基本あまり気にならない、というか、実用上はほとんど困らない範囲でのHallucinationの除去は十分にできる。このあたり「ChatGPT」をそのまま使ってる人たちはちょっとわかってない気がするよね。

下記はまず、ChatGPT4君。こういう **「日本で」かつ「過去の話題」** みたいなものはメジャーでもでも意外に弱いんだよね。

![matsuda2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2974126/59042c50-085d-248f-e94d-7f56cf649675.png)

これを日本語Wikipediaの全情報を持っておいて、それを引っ張ってくるようにテスト的にしたもの。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2974126/8c03a5f2-2a9d-faa1-a710-7d4ff196e320.png" width=70%>

ちゃんと出るし、もう間違わないぞｗ

これでもううちのChatGPT君は日本語のWkikipediaの常識は全部分かるようになったｗそしてライブラリとして切り離せたので、GPT-3-tourboのLLMでもGPT4君を既に上回った。 **これだけでもLLMの日本の知識の保持の性能はかなり上限に近づき、まとめ能力とトークン数があれば知識はそれ以上いらなくなったという事だ。**


他にもやってみよう。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2974126/c7d39b0c-60fc-525e-d82f-dae934aa346e.png" width=70%>

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2974126/ad347283-f003-355c-9b79-e400e4e5933c.png" width=70%>

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2974126/90d65248-86c1-0cc9-0d09-99081f1a028c.png" width=70%>

日本のWikipediaの項目数は今で約４６０万ぐらい。
そんな項目数、既に常人の知識の範囲を大きく超えている。

基本的にこの日本語のWkikipediaの全情報で上書きされるから、ほぼ日常で何か聞くのにも困らない範囲になっただろう。

**まあこんなものBingでもできるぞ、とか言われそうだけど、これを自前で（しかもローカルで今持ってるので）用意すると、今後この情報をいろいろな方法でさらに利用したりするようなAGIとしての応用実装もより具体的に可能になるので、その実装準備の一環と考えてもらえるといいかなと思います。**


だから、ここをうまく実装してあげるだけで、実際には **「うろ覚えで答える」** という意味でのHallucinationはほとんどなくなると言ってもいいと思う。

### 4-3 Intext Leaningの方法論

なので、この部分がとても重要になる。そしてこの構成を行う際に、（通常のAI実装では考えてこられなかったけど今後述べる）感情の実装を行う方法が関連してくる。

Intext Learningの際にはできるだけたくさんの情報を扱えた方がいい。その方がまとめるだけでも「頭のいいまとめが可能になる」つまり実質的には、人間的な頭の良さのかなりの部分がこのIntext Learningの容量＝ワーキングメモリの容量と、そしてそこに引っ張ってくる情報の質、そしてそれをまとめる能力に起因していると思っていいのではないかと思っている。

**このツイートわかりやすいよね:yum:**

https://twitter.com/micorun/status/868415841812873216

長期記憶としてのDB、ワーキングメモリーとしてのIntext Leaning。
そして今のコンテキストに合わせて必要なvectorをDBから引っ張って来て、Intext Learningに配置して利用する。

まずはここがちゃんと機能すればよいという事だ。Lang Chainでこういう事は十分に容易にできる。だから、まずこのHallucinationの問題は既にChatGPTに頼らずともこういった周りの実装で十分に改善が可能であることが明確だ。

### 4-4 連想記憶の実装

まあここまではもはやLLM入門レベルになってる気もするので、ちょっとだけ進もうね。もう一つ、この際に、呼ばれてきた中にさらに重要ワードがある場合、その内容も引いておくことで詳細な議論ができる可能性がある。これは言ってしまうと「連想記憶」の実装だ。いろいろな事項を思い出し、さらにその事項の中の言葉の詳細を思い出して使う。これはまさに人間が連想していろいろな事を思い出す機構だ。vectorstoreの通常のロード時には元の質問文との類似性とかで引っ張ってくるんだけど、もう何回もそこからさらに連想として、キーワードからの必要情報を引っ張るという事。

つまり今のLangChainの実装をもう少しだけ拡張する事で実際の脳でやってるような連想記憶を実装できるし、それによって、AIは大きな知能指数を得ることができるだろうという事だ。だからこの部分は実はAGIとしてのふるまいにはかなり重要な要素だ。数々の実装法が思いつくし、効率的で高速な連想記憶の実装は今後のAGI実装の肝になると思う。ここは後でいう、「感情の実装」とも絡んでくる所になる。

# ５．余談

まずは最初はこの部分だけ書いてみました。上記でわかるように比較的簡単な実装でも、ChatGPT4を凌駕する知識をChatGPT3.5にも持たせる事は十分に可能なことがわかるよね。Hallucinationは全部消すことはたぶんなかなか難しくても、ほとんど目立たない程度までの除去には実はそれほどの難易度の実装は必要がない。

上記はWkikipediaだけど、これを **ゲーム内の世界の知識などで置き換えればメタバース内のNPCにも十分に利用可能になるだろう。** 今後この後のものを書いて行くつもり。詳細は今後の案件でのノウハウや特許にもかかわりそうなので書きにくいけど、大枠の方向性は分かるように書くつもり。

そして上記の頭の良さに関して言えば、これで既に、仮想AGIキャラクターとしてLLMを利用する際に、上記のパラメータを調整する事が、キャラクターの「頭の良さ」パラメータに使えることがわかる。 **頭の良いキャラは、思慮深く、様々な情報を加味して検討した結果を話すし、頭がちょっと足りないキャラ、そして亜人系モンスターの知能指数は低くて、連想能力が弱いしIntext Learningに入る情報量が少なくそしてまとまりのない文章になる。** 口調なんかは既にカスタマイズが可能なので、こういったキャラの脳の特性自体も実際にはパラメータとして調整できることがＡＧＩの応用の際には非常に有効な手段になると思っている。