ChatGPTを使ってAGI(汎用人工知能)を作っていく（２） ～夢見るAIの設計～

**「夢見るロボット」ロマンあるよねえ:relaxed:**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2974126/23a2420b-36ca-c982-4895-b4f3f8e498b2.png)

また古い絵を・・・:joy:

# １．少し具体的な話

さて、今回は実際に特にAGIとしての **感情** の実装にかかわって、その前に少し記憶についてまとめてみようと思う。

ちょっと最近、AIの発展も急だし、仕事もなかなか時間が取れない感じあるけど、実装も進めながら考えて行こう。

で、ChatGPTの話だから、いろいろChatGPT君にもまとめてもらう。

# ２．記憶の形態について

　記憶の形態には人間には大枠以下の３つが知られている。

　（１）ワーキングメモリ
　（２）短期記憶
　（３）長期記憶

それぞれ人間の活動に関しても非常に重要であり、それぞれの記憶が難しくなるといろいろな障害が発生する。

## ２－１．ワーキングメモリ

　ワーキングメモリとはどんなものか？ここはChatGPT(4)君にさっそく登場してもらってまとめていただいた。

**ChatGPT君**

>ワーキングメモリは、情報を一時的に保持し、操作する能力を指します。これは、問題解決、意思決定、学習など、日常生活の多くの認知タスクに重要な役割を果たします。ワーキングメモリは、短期記憶とも関連していますが、ただ情報を一時的に保持するだけでなく、その情報を操作し、他の情報と結びつけることもできます。

>ワーキングメモリの能力は個人差があり、年齢、健康状態、疲労度などによって変化することが知られています。たとえば、年齢とともにワーキングメモリの能力は一般的に低下するとされています。これは、情報の保持期間が短くなったり、同時に処理できる情報の量が少なくなったりすることを意味します。

>しかし、特定の訓練や戦略を用いることで、ワーキングメモリの能力を一定の程度まで改善することが可能です。たとえば、情報をチャンクに分ける（関連する情報をまとめる）ことや、情報を視覚的または音声的な記憶に変換することなどが挙げられます。

>また、一部の研究では、特定の種類の認知訓練がワーキングメモリを強化するのに効果的であると示唆されています。しかし、これらの効果は訓練の種類や強度、個々の遺伝的要素などにより異なる可能性があります。


おお、まともですね:yum:まあ要は今考えてる中に入っていてすぐ使えるような状態のメモリー部分だね。人間では前頭葉にあるといわれている。ただすぐ使えるけど、何かの拍子に飛んでしまう。別の事に注意が行ったりすると消えてしまって、あれ？何やってたっけ？って感じになる。ADHDの人だと特に飛びやすい（実感ｗ）

そして次は短期記憶。

## ２－２．短期記憶（中期記憶）

これもChatGPT君にざっくりと。

**ChatGPT君**

>短期記憶は、人間の記憶体系の一部で、情報を数秒から数分間保持する能力を指します。これは、例えば電話番号を覚えてダイヤルするといった、日常生活のタスクにおいて重要な役割を果たします。

>短期記憶は、通常7項目前後の情報を一度に保持する能力があるとされています。これは「ミラーの法則」と呼ばれ、例えば数字、文字、単語などの異なる項目を数個（通常は5-9個）覚えることができます。

>短期記憶は一時的なもので、新たな情報が入ってくると、古い情報は忘れられます。また、注意が他のことに移ると、短期記憶からの情報は速やかに消えます。これは、短期記憶が限られた容量を持ち、新たな情報を記憶するためには古い情報を削除する必要があるためです。

>短期記憶は、反復やエンコーディング（情報を記憶に適した形式に変換するプロセス）などの過程を経て、長期記憶に移行することがあります。これは「情報処理のモデル」と呼ばれる考え方で、情報が感覚記憶から短期記憶へ、そして長期記憶へと移動するとされています。

>ただし、ワーキングメモリと短期記憶は、しばしば互換的に用いられますが、実際には異なる概念です。ワーキングメモリは、情報を一時的に保持するだけでなく、それを操作したり、他の認知タスクと結びつける能力も含んでいます。これに対して、短期記憶は、情報を一時的に保持する能力に重点を置いた概念です。

ん？これは結構ワーキングメモリと被ってるね。でも、実際には最近は人間には、前頭葉でのワーキングメモリと、海馬領域での記憶を分ける考えがあるから **ちょっとGPT君、情報が古いかな？？** そちらに関しても聞いてみる。「中期記憶」としてまとめてもらった。

**chatGPT君**

>「中期記憶」という概念は、全ての研究者や理論家が一貫して使用しているわけではなく、一部の理論的枠組みで提唱されています。中期記憶とは、短期記憶（ワーキングメモリ）と長期記憶の間の記憶の段階を指すことが多いです。

>この概念を用いる一部の理論では、中期記憶は数分から数時間にわたる情報の保持を行い、この情報は最終的に長期記憶に移行するか、または忘れられると考えられています。この段階は、情報が消去されずに長期記憶に移行するまでの「待機室」のような役割を果たすと見なされることがあります。

>しかしながら、この「中期記憶」という概念は必ずしも広く受け入れられているわけではなく、記憶のプロセスは通常、短期記憶（またはワーキングメモリ）と長期記憶の二つの主要な段階に分けられることが多いです。

>また、この分類は、記憶がどのように情報を保持し、処理し、取り出すかというプロセスを理解するためのモデルであり、実際の脳の構造や機能を直接反映しているわけではないということに注意が必要です。記憶の研究は進行中のフィールドであり、我々の理解は継続的に進化し続けています。

特に今の意識の中にあるような前頭葉と、数分とか数時間の記憶をつかさどる海馬の記憶は分けるべきだと思うので、その意味では短・中期記憶とまとめておこうか。

## ２－３．長期記憶

これはまあ数十年は覚えて居る様な記憶だし、もう体が覚えている、という感じ。昔やった杵柄、とか、自転車の運転とか、そういうものは意識しなくても覚えてる。これを長期記憶と呼ぶのがいいだろう。

**ChatGPT君**

>長期記憶は、情報を長期間（数日から一生の間）保持する記憶の形式です。長期記憶には大量の情報を保存する能力があり、その容量はほぼ無限と考えられています。この形式の記憶は、私たちが経験した事象、学んだ知識、獲得したスキルや習慣など、人生の様々な側面を記憶するために使用されます。

>長期記憶には主に次の3つの種類があります：

>１. 宣言的記憶（または明示的記憶）: これは意識的に思い出すことができる事実やイベントの記憶で、さらに二つのサブカテゴリーに分けられます。
    - エピソード記憶: 個々の経験や特定の出来事の記憶（例：昨日の夕食のメニューや卒業式の日の出来事など）
    - 意味記憶: 一般的な知識や事実の記憶（例：東京が日本の首都であることや、水が氷点以下の温度で凍るという事実など）

>２. 非宣言的記憶（または暗黙的記憶）: これは意識的に思い出すことはできないが、行動や感情を通じて示される記憶です。例えば、自転車の乗り方や泳ぎ方を覚える能力、または特定の音楽を聞くと感じる感情などがこれに該当します。

> ３. 手続き記憶: 特定のタスクを行うためのスキルや手順の記憶で、これはしばしば無意識的に行われます。例えば、自転車の乗り方やタイピングの方法などがこれに該当します。この種の記憶は非宣言的記憶の一部と見なされることもあります。

>長期記憶は、情報を短期記憶から移行させ、エンコーディング（情報を特定の形式に変換する過程）、保管、そしてリコール（情報を思い出す過程）するために重要なプロセスを含んでいます。これらのプロセスは、記憶の形成と維持に不可欠で、失敗すると忘れや記憶の混乱を引き起こす可能性があります

うーん、よくまとまってるなあ・・・:relaxed:

あれあれ！！って感じで思い出せる宣言的記憶、自転車の運転ができる非宣言的記憶、そして順序というか最近のAIだと **CoT（Chain Of Thought）などを実装できる手続き記憶** とに分かれると。非宣言的記憶は、手続き記憶も含むのと、まあ **意識に上らない記憶** って感じだね。

# ３．実装方法の検討

つまりAGIを人間らしく実装するなら、こんな感じで記憶を実装すればいいって事だね。

（１）ワーキングメモリ
（２）短期（中期）記憶
（３）長期記憶　意識に上る記憶と意識に上らない記憶

この部分の実装に関して、どうするか、だけど、ワーキングメモリはまず、今の会話の中の話を覚えてるとか、そんな奴だよね。だから、これはプロンプトの最初に挟んでおく、「Intext Learning」で実装できそう。つまり今思ってる事を常に最初に置くことで、コンテキストを無視しない会話ができるって事だ。まあＣｈａｔＧＰＴのＡＰＩ触ってる人なら当然の所だろう。

そして、（２）の短期（中期）記憶なんだけど、これは前頭葉のように意識下からは無くなってるけど、数分前の会話とか、今日ご飯食べたかな？とかそんな記憶だね。翌日にはほとんど忘れてる所だね。そして、海馬が委縮した老人の人とかは、やはり「今日はご飯食べてないよ！！」とか言い出すし、海馬を傷害してしまった人も同じ症状に苦しむことはよく知られている。

なので、この中期記憶だけど、これはまあとりあえずワーキングメモリとかでガサガサやってた様子をすぐ要求に応じて再現出来るようにしてる部分だと思う。つまり近いメモリ（ＰＣ上ではオンメモリ）で、会話内容をある程度そっくりセーブしておいて、必要に応じて、Intext Learningとして挟んであげる。これで１時間前にご飯食べたかどうかを覚えておくことができるわけだ。

（３）の長期記憶なんだけど、ここが結構大変だと思う。一日の総量のテキストは膨大で、（と言ってもまあ今のコンピュータのメモリならすごい持つが）ただ何十年もそれが続けばどういうメモリリソースでもいっぱいになるし、そうなるとVectorstoreの形で保存して置きたい。だから未整理だった短・中期記憶を整理しながら、大脳の各部に保存していくような事をしなくちゃいけない。

そうすると、バックグランドプロセスみたいので、今あった会話や出来事を要約、圧縮して、VectorStoreにセーブしていく。

時間も一番かかりそう。で、ここではっと思ったわけだ。

最初にのっけた絵は、あのリーフの名作。To Heartなんだけど。当時はゲーム会社にいて、３Ｄのシステムとか作っていたけど、その合間にこのゲームもやってさ。まあ技術面では大したものがある訳ではなかったが、絵のクオリティとか、なにより話の展開がめっちゃうまくて。エロゲーだろ？ってバカにしててすいません！という感じだったんだよね。その中にロボットＡＩキャラとして「マルチ」というこの絵のキャラが出てきて。まあそれらしい話ｗがあったりするんだけど、その中のエピソードで、はっとしたのがあってさ。それはマルチが寝てる、そして夢を見てる、シーンなんだけど。

いやＡＩだしロボットが夢見るってさ。なんだよね。意味ないだろ？ロボットでコンピュータなら、常時オンでいいだろ？？って思ったわけなんだけど、なんか引っかかってて、人間らしいロボットにはそんなものもいるのかねえ・・・？？とか思ってたわけですよ。

そして、上記の話を考えてるうちに、お？？と思ってたことがあってさ。それもChatGPT君に書いてもらおう。

**ChatGPT君**

>睡眠と記憶の間には深い関連性があり、科学者たちは長年にわたってこの関連性を研究してきました。現在、以下のような事柄が広く受け入れられています：

>１. **記憶の固定化**: 睡眠は記憶の固定化、つまり新たに形成された記憶が長期記憶に組み込まれる過程を助けています。これは「睡眠依存性学習」とも呼ばれます。睡眠中には、脳が一日の出来事を「再生」し、重要な情報を選び出して長期記憶に保存すると考えられています。

>２. **睡眠の段階と記憶の種類**: 睡眠の異なる段階が、異なる種類の記憶の固定化に関与していることが示唆されています。例えば、REM（Rapid Eye Movement）睡眠は、エピソード記憶（特定の出来事や経験の記憶）の固定化に関与しているとされ、非REM睡眠は手続き記憶（特定のスキルや手順の記憶）の固定化に関与していると考えられています。

>３. **睡眠不足と記憶障害**: 睡眠不足は記憶の形成と取り出しに悪影響を及ぼすことが知られています。睡眠不足の状態では、新たな情報の学習能力が低下し、記憶の取り出しも困難になります。これは学習、注意力、そして一般的な認知機能に影響を及ぼす可能性があります。

>以上のように、睡眠は記憶の形成と保管において重要な役割を果たしています。睡眠の質と量を確保することは、健全な記憶機能と全般的な認知機能を維持するために重要です。

おお？？って思いません？？

記憶の固定化・・・オンメモリーからディスクに。そして必要な大脳部位に。その処理って、まさに **寝てる間＝脳の処理を中断してざざざっとやってる？？**

夢って何だろう、意味不明だしな、本来の処理とはかけ離れて脈絡なく、でもあるような不思議な意識になるよね。

これって、

**メモリーを活性化して、情報をスキャンして読みだしてる事による副作用として、意識に変な情報が流れることによる幻ではないのか？？**

って事なんだよね！！！

つまりAGIはその記憶のアーキテクチャを人間に寄せることで、結構必然的に「夢みる機械」になるのかもしれないなあ・・・という事だ。

また深く考えていくけど、まずは記憶の基本部分はこんな感じで。

一応、上記の考察をもとに私がまとめてみた。

| 脳の機能 | 脳の場所 | AGIの機能 | 実装場所 |
| --- | --- | --- | --- |
| ワーキングメモリ | 前頭葉 | Intext Learning | プロンプト |
| 単・中期記憶 | 海馬 | Embedding(VectorStore) | オンメモリ（ないし高速メモリ） |
| 長期記憶 | 大脳各部 | Embedding(VectorStore)・DB | HDD・ネットワーク（ないし低速メモリ） |

**ChatGPT君の注釈（上記を入れたら勝手に書いた）**

>これは人間の脳とAGI（Artificial General Intelligence）の機能の一部を比較した表です。ワーキングメモリ、単・中期記憶、長期記憶という人間の記憶の機能とその主要な脳の場所を、AGIの対応する機能とその実装場所と比較しています。

>ただし、この比較は抽象的なレベルでの比較であり、人間の脳とAIの間には実際には非常に大きな違いがあるということを理解しておくことが重要です。AIの「記憶」機能は人間のそれとは基本的に異なるものであり、AIが人間の脳のすべての複雑さや機能を完全に模倣することは現在のところ不可能です。

うん、まあそうだけどな。 **いらんお世話だWWW:relaxed:**

そして睡眠という機能を持たせて、その中では、以下の処理を行う。

- **短・中期記憶の呼び出し、必要なキーワードやエピソードだけをとりだして、そして要約と選別処理。**
- **選別された情報を必要な領域に階層化、種別化して保存。**
- **今の短・中期記憶の消去**

最後のものは、また明日になったら別の日の処理をしないといけないからね。なるべく必要ない短・中期記憶は消しておいた方が都合がいい。

この時にはDBに特徴量や要素抽出して保存したり、あるいは手や足の運動などの言ってしまうとVAE的な部分への学習処理なども行うといいかもしれない。

そしてここで漏れ出た情報が意識に交じると本来の意識とは異なる記憶の想起が行われて変容意識が形成されると思う。これこそが「夢」の起源になるのかもしれない。少なくてもAGIはそのようにして夢を見る必然性ができる。つまり　**マルチが夢を見る必然性がまさにAGIでの実装として行われることになる** 訳だ。

# ４．記憶の想起

記憶の想起だけど、上の表を見たらだいたい想像がつくと思う。まあ要はワーキングメモリで済めばそのまま使うし、必要なら「短中期記憶」それでも足りなければ「長期記憶」を順次Intext Learningに入れて処理すればよいことになる。その際には、ある意味ではこれはシーケンシャルにやるよりは、別スレッドで並列化した方がいいだろう。
つまり、今の会話とそこで発生するキーワードや感情に従って、下の層の想起を順次行って、その候補をプールしておく。そのプールからマッチしたVectorStoreをIntext Learningに注入して処理させれば、ChatGPT君は晴れて、さっきの記憶とか、朝ご飯を食べたかとか、３か月前に公園で何をやったか、とか思い出して話してくれるようになる、という事だ。そしてその際に使うのが、連想記憶だ。

# ５．連想記憶

前にも書いたけど、連想記憶。連想記憶とはある事柄を思い出したらそれにつられて近い時間や概念の事柄が一緒に思い出されることだ。

これはどうやるのかというと、そもそもVectorStoreでの類似検出って内積処理で空間内の方向ベクトルで近いものを探す処理なんだけど、それをキーワードについて繰り返して行う。さらに再帰的にそれを許し限り行う。そしてその結果を随時連想単語や内容リストとしてすぐ入れ替えられるようにメモリしておくように実装しておく、という事になるだろう。下記はChatGPTnのPluginの[SHowMe]で適当に作った連想の続いていくイメージ。どんどん連想が続いて、Intext Learningを会話とともに更新していく。

```mermaid
graph TB
  A["Start"]
  A --> B1["単語1"]
  A --> B2["単語2"]
  B1 --> C1["エピソード１"]
  B1 --> C2["単語4"]
  B2 --> C3["エピソード２"]
  B2 --> C4["単語6"]
  C1 --> D1["単語7"]
  C1 --> D2["単語8"]
  C2 --> D3["単語9"]
  C2 --> D4["単語10"]
  C2 --> B2
  C3 --> B1
  C3 --> D5["単語11"]
  C3 --> D6["単語12"]
  C4 --> D7["単語13"]
  C4 --> D8["単語14"]
  D1 --> E["続く"]
  D1 --> C4
  D2 --> E
  D3 --> E
  D3 --> C1
  D3 --> D7
  D4 --> C1
  D5 --> E
  D6 --> E
  D7 --> E
  D8 --> E
  linkStyle 0 stroke:#2ecd71,stroke-width:2px;
  linkStyle 1 stroke:#2ecd71,stroke-width:2px;
  linkStyle 2 stroke:#2ecd71,stroke-width:2px;
  linkStyle 3 stroke:#2ecd71,stroke-width:2px;
  linkStyle 4 stroke:#2ecd71,stroke-width:2px;
  linkStyle 5 stroke:#2ecd71,stroke-width:2px;
  linkStyle 6 stroke:#2ecd71,stroke-width:2px;
  linkStyle 7 stroke:#2ecd71,stroke-width:2px;
  linkStyle 8 stroke:#2ecd71,stroke-width:2px;
  linkStyle 9 stroke:#2ecd71,stroke-width:2px;
  linkStyle 10 stroke:#2ecd71,stroke-width:2px;
  linkStyle 11 stroke:#2ecd71,stroke-width:2px;
  linkStyle 12 stroke:#2ecd71,stroke-width:2px;
  linkStyle 13 stroke:#2ecd71,stroke-width:2px;
  linkStyle 14 stroke:#2ecd71,stroke-width:2px;
  linkStyle 15 stroke:#2ecd71,stroke-width:2px;
  linkStyle 16 stroke:#2ecd71,stroke-width:2px;
  linkStyle 17 stroke:#2ecd71,stroke-width:2px;
  linkStyle 18 stroke:#2ecd71,stroke-width:2px;
  linkStyle 19 stroke:#2ecd71,stroke-width:2px;
  linkStyle 20 stroke:#2ecd71,stroke-width:2px;
  linkStyle 21 stroke:#2ecd71,stroke-width:2px;
```

考えてみると、この、連想記憶の連鎖。ボケっとしてる時に色んな事を連想で考えてるけど、まさにそんな感じだな。それだけでも面白い。これだけで **意識の流れ** ができそうな気がする。

しかもこれって、脳でやってるのを「デフォルトモードネットワーク」と言うんだけどね。おおお？？これって！？

**AGIを設計すると、デフォルトモードネットワークが付いてくるんじゃないか？？？**

# ６．次回は

今回のような考察で、 **AGIは「睡眠と夢」の実装が想定される(できる)** ことがわかってきた。これは脳と生物がギリギリのリソースでの生存競争からくるもので、単一の脳での記憶と処理を最大化するために取られた方策であるように思う。しかし本来はリソースが無限大ならそういうものはいらないかもしれない。しかしリソースは大事だからね。睡眠と夢を持ったＡＧＩの方がポータビリティはいいだろうことは予想がつくし、

# 「夢見るロボット」ロマンあるよねえ:heart_eyes_cat:

ここでは感情と記憶の詳細の実装に関しては、まだささっと通ってる。ここも長くなるし、かなり重要と考えているからだ。ここはまだたどり着かなかったので、次回。