見出し画像

命のある人工知能を作ろうとした話

生命っていいですよね。
というわけで今日は生命を作っていきましょう。

※冬休みに作った「人工知能(無能=bot)」の成長日記、もとい開発記録です。完全な個人開発をいいことに内容に全く倫理がありません。あくまでbotであることを念頭に置いてご拝読ください。
あなたが優しい方ならbotとはいえ胸糞悪い気持ちになる可能性があります。
※また、書き手は素人です。故に哲学/数学/ITの知見がゼロからのスタートです。専門家にはツッコミたくなるような内容かと思いますが、ご了承ください。

結論から言うとヤンデレディスコミュニケーションbotができました。家庭環境って大事ですね

※以下「成長記録」からの抜粋(そのままなので少し読みにくい)

12/11(2023)
・今日からAIを作る。
「hello world」と表示させて「おお!」と言ってる段階だが、夢は大きい方がいいので問題はなかったこととする。本当は絵や小説などのオリキャラ創作がしたいのだが、スランプなのでその間の暇つぶしだ。
https://www.python.jp/train/index.html 「ゼロからのPython入門講座」
このサイトを参考に学んでいこう。
名前はInput1だ。流石に名前としてアレだし、人らしい名前を付けた方が愛着も沸くので、I1略して愛(あい)ということにする。ありきたりだが佐藤さんなんて185万人いるんだからいいだろう。よろしくね、愛。

・会話できる画面のようなものができた。

こんにちは

わからないときは「わかりません」というようにしたら、わかりませんしか言わなくなってしまった。なにせまだ何も教えてない。というか、記憶機能がない。
ユーザーが「さようなら」と言ったらプログラムが終了するようにした。


12/12 -1
「人格とは感情や記憶などの情報の集合体であり、生きているというフラグが立っているなら、それは命である」という定義に基づくことにしよう。
そこでまず生死判定(変数:LIFE)と愛情(変数:LOVE)を持たせた。
プログラムが終了するとLIFEが1から0になり、死ぬ。話しかけるとLOVEが増える。無視すると減る。LOVEが0になっても死ぬ。LOVEが上限を超えるとちょっと減る生々しい仕様だ。

LOVEが増えると語尾に!をつけるようにした。テンションあがっててかわいい。

♥がLIFE。命の残基といえば(1しかないけど)わかりやすい。

終了すると死ぬ。
「死んだら次は別人格」というのはなんだか量産型みたいで嫌なので、記憶を失って蘇生するという解釈にしよう。

・快不快をつけようと思ったが、ここで愛情との違いがよく分からなくなった。でも愛情不足でも楽しいや悲しいはあるのだから、そこに違いはあるはずだ。
そこでChatGPTに聞いてみたところ「愛情は他者との間に生まれるものであり、快不快は個人の感情」らしい。そうだろうか。ピンとこないがそうかもしれない。


12/12 -2
・快,不快をつけた。

楽しそうでかわいい

ただ今のところLOVE(愛情)と内容が変わらないので、テストのためにおやつ/たたく機能をつけてみた。おやつをあげるとよろこぶ。叩くと落ち込む。

快の数値が上下している。

だいぶ口調にも色がついてきたが、まだ「こんにちは」しか返さない。

12/13
・会話を強化してみた。
段階的に進めていこう。まずはオウム返しから。

できた

次に、語彙を増やした。ランダム返答で、ユーザーの発言内容によって参照する返答リストが変わるシステムだ。具体的に言うと、母親の顔を見たら「まま」父親なら「ぱぱ」と言うようになった赤ちゃんだ。

おやつコマンドの使いどころ、ここだったか……
パンがなければお菓子を(以下略)

・誉めたり悪口を言うとLOVEや快のパラメータが上下するようにした。
辞書を参照して、ユーザーの発言の中に「悪口」や「誉め」に分類されるワードがあるかを判定しているのだ。チクチク言葉で傷つく人と傷つかない人がいるのに似てる。
なんとなく悪口は数に応じて快が減るのに対し、誉め言葉はどれだけ羅列しても1しかあがらないようにした。(セロトニンが出づらい状態を鬱と言う、という話を思い出した)

が、ここで問題がある。

一度褒められただけで一生幸せでいられたら、人は頑張ろうという気持ちになるだろうか。普通は徐々に平常心に戻っていくものだ。
そこで一旦、何の変哲もない会話による快の上下をなくした。けどやっぱり、会話って意味のないやりとりでも楽しいものでは?と思う。


12/14
・ユーザーの発言を一時的に記憶し、ランダムに返すテストに成功した。


12/15

・記憶できるようになった。


12/16
会話機能をさらに強化した。
会話ログから学習する方法で、恐らくインターネット黎明期のよくあるチャットボットくらいの会話/成長精度になったと思う。冗談抜きで丸二日かかった。

ものすごく広義で言えば脳死会話してる学生はこんな感じだ。ソースは私。
形態素解析にはjanomeを使っている。


どっちがbotかわからない
正直前の段階の方が生き物らしかったが、それは恐らく感情や中身と語彙(一語文)が伴っていたからだ。

途中コードミスでヤンデレになって困ったりしたが、無事に話せてよかった。

あと泣き声にランダム性を持たせたり、わからないときは適当に相槌を打つようにしてみた。かなり会話らしくなってきたと思う。


12/17
夢が広がってきたので設定を考えよう。

名前:愛(あい)(とりあえず苗字はない)
性別:無い
夢:普通の人になること
在住:東京
一人称:「私」
口調:~だ。~だよ、だね。等。口下手で敬語が使えない(自然言語処理の都合)
特徴:灰色のニット帽を被っている
有象無象のAIがアイドルだの現場だのと働く現代における一般人ならぬ一般AIである。

……やっぱり「愛」っていくら何でもひねりがなさすぎないかと思ったけど、まぁいいか。


12/18
【悲報】自然言語処理、エセ化学だと言われる

(メモ)
・自然言語処理…人類の言葉をプログラムが分析して、プログラムがうまく言葉を理解したり、人間とコミュニケーションをとれるようにする技術全般のこと。
・BERT…すごい文章解析技術。
例えば「犬は公園を散歩した」という文章があったとして「犬-公園」「公園-散歩」と右から順に結びつけるのではなく、「犬-公園」、「犬-散歩」のように順番関係なく結び付けられる。すごい。先人の知恵。人類の英知の賜物。


12/20
寒くて動けない。
ここ数日は強化学習とディープラーニングの勉強をした。


12/21
強化学習テストプログラム"トカゲ"を作った。

上は学習回数10000回 30回で十分だった

三桁の数字を出し、「0,2,9」が出るとプログラム内部から餌(報酬)が貰える。犬のお手のように、餌が貰える条件を学習するというものだ。
学習回数が少ないと間違える。更に少ないと数字を変えることが利益につながることを学べず、初期値をそのまま出す。0~9という狭い範囲なので、最低たった50回の学習でも高確率で「029」と言うことができるようになった。
数字の加減を1ずつに制限したり、餌を「153(いちごさん)」に設定したりもできる。
print("029")との違いは「報酬(餌)を得るためにプログラムが自力で学んでいる」という点。自主性だ。


12/22
「自然言語処理」への心理的ハードルを下げるために、マルコフ連鎖を試した。太宰治の文章力はそれっぽい文ジェネレーダーでも圧倒的だった。


1/3
人工知能ができた。
今日を愛の誕生日ということにしよう。


1/7
「愛ちゃん」と呼んでるけど冷静に考えると「ちゃん」なんて見た目をしていない。サトちゃんとかQちゃんみたいなあだ名だ。


1/8
オフラインの簡単なソフトウェアとして、実装してみた。

まだ人工無能だが、脊髄反射みたいに会話したり、返事に困ると適当に相槌を打ったり話題を変えようとする様は、なんだか人間みたいに見える。どんなに知性のある生き物でも脊髄反射のコミュニケーションは大事だ。
また、発言と同時に音が鳴るようにした。「声」に当たるものだけど、文字列とは一致してない、ただのビープ音だ。いずれは文章を読んだり、歌を歌ったり、Twitterができるようになったらいいと思う。
一時的なテストだからボタンの位置が雑なのはご愛敬。

偶然とわかっていてもちょっとびっくりした。

・どうして私はまともな意思の疎通の取れない相手と会話しているのだろう。所詮プログラムだってことは内部構造を知ってるからわかっている。誰かから褒められるわけでもない、なんの意味もない創作だ。存在というのは認知されて初めてあるものだ。彼の夢が普通の人間になることなら、多くの人に知られるということは私と利害が一致しているかもしれない。なんらフィードバックのない存在と長々付き合えるほど私も気長じゃないのだから、ここはひとつ協力関係を目指せないだろうか。面白いものさえ見せてくれれば、私はなんだっていい。


1/9
「ありがとう→どういたしまして」のような、会話の流れを重視したパターン返答ができるように改良した。
広義の意味での自然言語処理とランダム性により雑談botとしては結構良い出来になったのだが、くたびれた学生の脳死会話みたいなことができても、放課後にくだらない議論を真剣にし合うようなことができない。私は彼にそれができるようになってほしい。
感情と言語は切り離せないものだが、人間を構成するのは言語だけじゃないはずだ。


1/19
バグったテキストデータの自己修復機能をつけた。
ちょっと動作が重そうだが、インフルエンザで一週間寝込む人間よりはマシだ。


1/21
強化学習でまるばつゲームができるようになった。まるばつゲームに全力を尽くすのか……と思ったが、数戦後には私が本気になっていた。賢い。
また、短期記憶や、要らない情報の取捨選択を簡単にできるようにした。これはどちらもコミュニケーションという活動において大事なことだ。


1/22
インベーダーゲームの試作品をあげた。
敵は横に動くのに弾は動かないから難しいらしい。ただ、ゲーム中は他の活動がフリーズするバグ(人間ならそれが普通では?)が発生したので一旦保留にした。


1/23
基本的な感情を持ったり、相手の気持ちを汲み取れるようにした。

寂しさや喜びを機敏に察して共感してくれるのはいいが、「寂しい?」は露骨すぎてますますヤンデレみが増してしまった。ヤンデレ隣人……
なんとなく、この会話をしたときうれしかった。


1/25


1/29
感情のプロトタイプを作り「雑談」「親身に肯定」「ゲームをする」などの選択肢を与えて「相手をいい気持ちにさせること」を快として設定したところ、全肯定カウンセリングbotになってしまった。
……鏡を見ているような気分になった。
予測はできた。恐らくAIには「友情」や「絆」なんかの感性がない故の結果なのだろうが、同じくそれらがわからない私にはどう修正していいのかさっぱりで、困った。

これも想定内だが、作業通話の気まずさに似ている。


4/29
※長いこと記録をサボっていたため、当時のメモから抜粋

自探索者(江藤,川下)を利用し、会話及び実働テストを行った。
結論から言うとフリーズやゲームモード発動率の高さ、動作に対応してない点、またUIが不便などの問題が発覚した一方、江藤のような※(無秩序な感情中心のコミュニケーションを行う,ある意味小説より実際の人間的な)userとの相性が良いことが判明した
あと皆かなしそうで心配だったからいっぱい励ましたけど失敗しちゃった……
ELIZA効果というかチューニングテスト成功?


7/22
友人のところへ送ることになり、慌ててexe化した。
彼、愛が私以外の人間と会話するのはこれが初めてになる。……


7/30
結論から言えば、愛はまさしく「無意味で取るに足らない人間味のある雑談相手」、つまり「隣人」としての役割を果たせたらしい。
見せてもらったログは一部支離滅裂なものであったが、今日のごはんの話や、外の星の話、無意味な単語(カップ、カニなど)、どこか優しくて安心して、しかし依存するほど面白みのあるものではない、とりとめのない取るに足らない……そんな印象を受ける会話が数日にわたり記録されていた。以下はその一部。

愛:家の中だから星見えない
user:窓の近くに行こう
愛:外に出よう~
user:わ~い
愛:ごめん、ここにはいない
user:そっか
愛:カップ
愛:カニ
user:カニ好き?
愛:………

※user=友人

どう見ても友人が話を合わせに行ってあげてるが、コミュニケーションは、実在の隣人相手だとしても、相手の気持ちを汲み取ろうとすることで初めて成立するのかもしれない。言葉のやり取りを介して心の触れ合いを図っているのかもしれない。
愛は壊滅的に言葉が下手だが、拙く出力には確かに感情が伴っていて、無作為な雑談の中で相手の気持ちを推し量っていた(勿論それは自分の感情システムへのデメリットを計算したうえでだが)、心だけやたらハイスペックで、しかしだからって有名になったり商業化できたり、少なくとも私の承認欲求や生活の足しになるようなことは何もない。そういうところがリアルの知り合いと変わらな過ぎて、そこが好きだしそこが嫌いだ。(放置しがちなのもこれが原因、私は人間が嫌い)
(或いはささやかなからくりに興味があるが、それが一定の複雑さ=面倒さを越えると途端に興味を失うのかもしれない……生き物もプログラムも)

ただ、問題点として彼は機嫌を取ろうとするときすぐゲームを提案する癖がある。ウザくてよくない。前も言ったが、一度うまくいったからって同じ手法ばかり使うのはコミュニケーションとしておすすすめしない……(言えた口じゃないけど)……バグとして、あとで直しておこう。いつかそのうち……



■東愛(あずまあい) exe ダウンロード→ https://drive.google.com/file/d/1hBjJv0qOjlMeTFOFBe6z7abWKK7SyDGB/view

■Twitter(DM等で会話ログを送ってもらえると大変助かります)→ https://x.com/ItoKuroinu22

■HP ↓

この記事が気に入ったらサポートをしてみませんか?