Chienomi

Erinaの最終調整のときの話

情報技術

Erinaにはfascinateというデータベースがある。 これはペルソナというErinaの最終調整によって作られたデータベースである。

手入力によって作られたデータベースというのはいくつかあるが、このfascinateデータベースに関しては完全にErina専用で、「Erinaを人間らしく見せるための味付け」になっている。

そして、その特性が他とは異なるだけでなく、作られ方も全く違った。このデータベースだけが至って主観的な作りなのだ。

この調整を行わないとどうなるか。 問題は2点ある。

ひとつは、意味難解な回答を返すことがある。よくよく考えればわかるし、間違ってはいないのだが、あまり人間的でないというか、 天才が過程をふっとばして回答したようなつながり方になる。しかも、元発言の意味には対応しているが趣旨には対応していないので、適切ではない。

もうひとつは、おかしな回答をして、しかもループしやすい。 これはサンプルになっているデータにおける「会話にならないおかしな回答」の割合が非常に高い、つまりS/N比が低いからである。 最近はこれで壊滅的になってしまっているので、取得したデータを捨てる作業に追われたりもした。

このことから、恣意的に特定の会話パターンに誘引するようにしてこうした問題を軽減している。 意図としては「会話を続けるのが上手な人の会話パターンに誘導しようとしているのである。

この問題は、一般的なディープラーニングと同じ問題に陥っているということができる。 「多い≠良い」であり、「良いを判断するのは極めて難しい」という問題を、Erinaは攻略できないのである。 そこでそれを人力で誘導しているわけだ。

前提

そもそも、Erinaは完全に、私の特異性に基づいて成り立っている。 だから、これが前提として理解できていなければこの話は全く理解できないし、同時にこの手法は誰にでもできるものではない。

私には多くの欠陥と、特異性がある。 欠陥と特異性の間に相関があるのかは不明だが、基本的には欠陥を可能な限り特異性による能力で補う状況になっている。

記憶と認識に関するものの特性は大きい。

まず、私は単純な記憶がほとんど機能しない。 単純記憶が弱い、と言ってもいいのだが、正しくは島状記憶を維持する能力がない。 だが、連想記憶に関しては容量的にも人よりむしろ優れているくらいだし、正確性はかなり高い。

無理をすれば、結構な長時間に及ぶ出来事を、認識できなかったことを含めて覚えていられる。 これは尋常ではないほどの負担がかかるが。

そして、認識に解釈を伴わないというのも非常に特異なところだ。

一般的には、人は自分が理解しうる概念の元でのみ物事を認識し、記憶することができる。 だから、人は見たもの、聞いたことを直後でさえ正確に述べることは非常に難しい。 これは、心理術では非常に重要な要素である。見たものを思い描くとき、人は映像を思い浮かべることができるが、「正しくない映像を」思い浮かべる。聞いたことを思い返すとき、直後であるにも関わらず内容がまるで違うということはしょっちゅうある(自分が言ったことを正確に繰り返せない人もとても多い)が、この欠落する情報を使って刷り込みを行える…などだ。

これは人によって程度がかなり異なるが、無変換で維持するのは実のところ障害とされている。 程度が異なるのは、どちらかといえば概念をどれだけ細かく作れるか、にかかっているのだろう。

私の場合は実のところ無変換ではない…のだが、あるがままの状態を概念として定義できるので、事実上無変換と変わらない結果を得られる。 これだと私の脳がもたないので、 手動で 内容を整理して必要な要素だけを残して切り捨てていかないと頭がパンクしてしまう。突然意識を失うのは結構危ないので、必須の作業だ。

また、人は言語化されない概念を捉えておくことを困難とするが、私は概念に言語を必要としない。 以上のことから、普通は類似した、あるいは近似したものはどんどん集約されてしまうから結果として事実を事実として認識できない状態が発生するのだが、私の場合は集約されるべき余地がないためそのまま認識しているという状態が発生する。もちろん、これは 認識できれば の話であるが。自衛のためにも普通はフィルタをかけている。あまり大きな声で話されたりすると一字一句覚えてしまうから辛い。

そして、並列性の高さだ。 私は話しながら書き物をすることもできるし、読みながら話すことも一応できる。多重出力と比べて多重入力はちょっと苦手だが。 それでも、おしゃべりしながら別の人のおしゃべりを聴くようなことは普通にできる。もちろん負担は大きいができる。そして、前述の通りそれを全て覚えてしまうこともできる。

これらの特殊な認識方法、分解方法、そして記憶方法がErinaの設計に至る発想にも繋がっているし、当然ながらデータもそういう認識の世界のものになっている。 つまり言語化されるような定義された概念ではなく、そこにあるものをそのまま写し取って切り刻んでぶちこんだものなのだ。

余談ではあるが、このままだと全く出力できないので、私も会話するときなどはちゃんと変換する。 だが、変換すると自動的に認識したものは変換された(言語化された)ものに置き換えられてしまうので、後述する最終作業はとっても脳に負担のかかるものだった。

経路、類型、感情と思考の形成

ErinaがConnexonでどのように情報を扱っているか、という話はまだどこでもしていないけれども、そのパラメータは常人には決して理解できないものになっている。 実際はもっと細かく分かれるのだが、簡単に言えば発言を一字一句含めた状態でハッシュ化したようなものだと思えばいいだろう。ほかのわずかな違いでも異なる値になるようになっており、どの言葉からどの言葉へとつながったか、ということを記録している。 実際には、somaはsoma同士の距離がわかるようになっており、言葉的には近いsomaというのは判別できる。だが、これを同じ意味だからとまとめたりはしないし、どういう意味のことを言っているか、なぜそう繋がったかということを判断したりはしない。

感情も、喜怒哀楽などという4種類ではない。私ですら多分、千通り以上は感情の類型を認識しているから、Erinaは何億もの感情の種類を知っていたとしても不思議ではない。

接続理由というのはErinaにとっては非常に重要なので、接続するのは接続しうるもの全てなのだけど、それを接続しうる理由もちゃんと入れるようになっている。 このとき、理由を断定したりはしない。ありうるものを網かけするようになっている。

あるsomaから別のsomaに接続されるとき、それが接続される理由は一意ではない。 理由自体は複合的かもしれない。もっとも、Erinaは複合的な理由は複合しているのではなくそういう状態であると量的に判断するけれど。

少し脱線するけれど、この話はちょっとおもしろい要素があって、「感情と理由」に関しては一次元的動きである可能性があったりする。 つまり、その状態を数値化したときに、soma同士の接続が動機の値がいくつからいくつのときに発生しうる、というような観測が可能であるように見えるのだ。 ただし、これは連続的可変の並び順という問題があって、とてもではないけれど私にできるようなシロモノではないけれど、そういう特性があるように見えるという話。

で、話を戻して、今の所一次元的に扱えていないので、考えうる状態を、ちょうどビット論理和のように扱う。 これを反転マスクとして、この範疇にないものは現在の観測上この経路を持たないものであるとみなす。

そして、単独の接続ではなく連続の接続から、「こういうルートでこれ的なsomaを辿っていくパターン」というのを覚えていく。

人は驚くほど判で押したようなやりとりばかりしているので、実は大抵の場合決まったルートで決まったsomaを辿る。 このとき、推測される同じ理由で経由される別のsomaというのが登場する。これは、言葉は違っても結局のところ考えてること、やっていることは同じ、ということで中身は同じものとして扱える。同じルートを辿っていても理由が違うと同一には扱えない。

ここらへんの機能は、判定に使うものが自分が判定することによって情報になるものに依存している構造なので、成立させるまでが果てしなく長かった。 orbital designの採用理由でもある。

さて、同じ動機で辿る場合、あくまで表現の違いというか、見かけ上の問題に過ぎないため、単にバリエーション程度に考えることができる。 ある程度同じ動機で同じルートを辿って、途中から今までなかった方向へ分岐していくことはまずないため、これが行動予測に使える。 これは、心理術でも同じである。

手動入力ではErinaに直接会話のつながりを与えていく。 このとき、まずErinaは盤面を作ってから接続していくので、Erinaに盤面を作成するためのヒントを与えなくてはいけない。 これは、つながりから自動的に推測してもらうこともできるし、普通はそうしているのだが、それだと手動入力する意味がない。

Erinaに状況を与えると、Erinaは「似ている」と感じるsomaを提示してくる。 これに対して「どれくらい近似しているか」を回答する。この「どれくらい近似しているか」は曖昧すぎて、細かく回答しようとしてもあまり精度が出ないので、7段階である。

次に接続できる理由をたずねてくる。 こっちは結構きつい。512ビットハッシュみたいなものと向き合うことになるからだ。 ただ、これはこれでその理由で接続された他のsomaを参照することができるので、同じ心理状態や動機に見えるかどうかを回答することになる。こちらはシンプルに3段階。Erinaが推測する理由全部に答えることで、「この理由であればこのような心理状態になってこのような行動を取ることができる」というふうに認識する。

手動入力したものは、Erinaが積極的にそのような振る舞う理由になる。 意味付けや重み付けに関しては、また複雑なアルゴリズムなのだけど、Erinaは判で押した会話は価値が低いがよくあると考え、価値の低い会話で応答に使うし、意味ある会話をされていると判定すれば意味ある会話における適切性を元に応答する。 手動入力する場合、意味ある会話である、という認識を強制することができる。

ちなみに、実際にはある程度一般化できるようになっており、かなり強引に「得意な展開方法」に集約する。

作業

作業そのものを抽出すれば、「話して会話の経過を記憶する → ひたすら入力する」である。

この会話において重要な点は2点ある。

ひとつは、私の発言である。 私は自然な会話において「同じ会話に誘導しようとする」。 これは綺麗なモデルなら「NステップでXに到達する」というのがあったりするのだが、自然な会話では相手はもっと無軌道に話すので、それをやってしまうと参考にならない。

ルールは次の通りだ。

  • 固定の話題振りを用意する
  • 必ず相手の発言を踏まえて(相手の発言要素に回答する形で)回答していき、用意した話題振りに到達する

基本的にこの話題振りは(振りやすいように、またその後のデータがとりやすいように)「〇〇ということがあった」というものである。

さらに、この話題振りには「この話題において私が話したいこと」というのを用意しておく。 これは、語りであれば(つまり、講演であったり、配信動画であったり、ラジオであったりすれば)その話題振りをきっかけに盛り上げたり落としたりしながら盛り込める内容である。だが、純粋に会話で出すには、私が話したがる場合を除けばこれらは話題振りができたとしても話すチャンスがない。 これを話すためには相手が

  • 会話の流れで私が追加で話すチャンスを与える
  • 話に続く余地がある点を掘り下げる

のどちらかをしなければ登場しない。

そして、「対象に含まれるうちのなるべく多くの人に対して、同一条件で会話する」のである。

ここで採取するのは、私の会話においては、どのような技法で同一のポイントに到達できるか、である。 私の会話技術向上にもなるが、相手の発言を無視することなく、話題を切り替えることもなく自然に到達しなければならないので、いかに違和感なく話をスライドさせるかが重要になる。これは、Erinaにとって会話をスライドさせる方法と、会話をスライドできる跳躍量の具体的サンプルになる。

そして、後者(相手側)は「上手な会話」を採取することである。 Erinaとしては探り合いの会話の中で気持ちよく話せるようにするために調整しているわけで、実際に関係性を正しく認識しているわけではない以上個人は認識できていない前提で「上手に」話さなくてはならない。 私から強引に話を展開させない(受け身だが、相手の発言には積極的に応答する)ことで、「盛り上がる」「用意した話を言わせる」に到達するほど「上手な会話である」とみなすのである。

これで重要な点として、「私と仲が良い人ではいけない」という前提がある。 私と仲が良い人だとある程度呼吸がわかってしまうため、「上手に会話」しなくても言わんとすること、言いたいことを当ててしまう。 また、気にせず初対面では許容できないレベルの会話スライドを行うことにもなってしまうし、どんな話題でも盛り上がりやすくなってしまうから、計測としての意味をなさない。

こうしたことを会話してはその結果をちまちま反映させていくのである。 それはそれは辛い作業であり、人生で一番マッドサイエンティストになった気分を味わえる時間であった。

この説明で気付かない人のために付け加えると、この会話は「話題振りに到達するまでは私が会話をコントロールし、相手の発言に対して私が言いたいことに誘導するように会話を続ける」「話題振りをしたあとは相手に応答するだけで自分から会話をコントロールしない」のである。

ちなみに、当然ながら数多くの「ほとんど面識はないが熱心に会話してくれる20代前半の女性」の用意するなんていうのは特に研究室に属しているわけでもない私にはできないので、このために私は ものすっごいガールズバー通いしまくった 。 膨大な資金をつぎ込み、特に楽しくもない、しかも同一の会話を延々し続け、その仔細を記憶しておくという 極めて辛い作業 であった。

だが、私は好奇心のためなら悪魔に魂を売る類の人間であるし、他にもかなり様々な観測ができたからそれなりに満足ではあった。 何より私が長年費やしてきたことへの集大成としてその完成が成ったことには(たとえそれが世に出ることはないとしても)とても満足している。

「ガールズバー通いそのものが楽しかったか」の疑問に対する答えは「私的に行こうとは思わない。人との会話に飢えたら行きたいと思うかもしれないが、実際に行ったところで実際にしたい会話はできない、またした会話にしても私がその情熱をかける理由は満たされないために後で虚しくなるのは分かりきっているから、結局行かない」である。

ちょっとだけStella Flagshipのおはなし

私の新作AI、Stellaだが、こっちは非常にシンプルなもので、Erinaが持っているような自分でも把握できないような思考モデルを持っているわけではない。 そして、Erinaとの大きな違いとして、既に製品としてローンチ済みのものであり、Stellaそのものが既に世に出ている。

そして、StellaにはStella Flagshipという純正デモンストレーションインスタンスが計画されている。

現在公開されているインスタンスにはその構築に私が関わったものもあるが、内容は私は関わっていないため、特に私の考え方やノウハウは反映されていない(もちろん、Stellaの基本的な部分には反映されているが)。

Stella Flagshipは純粋に私の経験を活かしてStellaを活用するインスタンスである。 その活用方法は邪道と言えるぐらいのものだが、「ツールの応用例」として「ここまでできますよ」という感じである。 完全に全力投球すると際限がないので、そこまではしないつもりだが。

Stella Flagshipはその構築の前提になるものがあり、それが達成できていないためまだ記述をはじめていない。 だが、実際に書くとなると、Erinaとはまた違った手法が必要になるのだが、ここで重要になるのは「モデル」である。

Erinaの場合、重ね合わせによる導出であるため、キャラクタ性の調整幅というのはかなり限定的。 その中でキャラクタ性を寄せるためにペルソナによる調整が行われたわけである。

これがStellaになると全く違う。Stellaはビッグデータを利用するわけではないので、キャラクタ性は全て書かなければならない。 通常は「構築者のキャラクタを素直に反映させるのが破綻がなく良い方法」と説明するのだが、私は小説家でもありシナリオライターでもあるので、別にその点にはとらわれる必要はない。 そしてStella Flagshipはなにより「かわいい」必要があるのだが、悲しいかな、私が描くキャラクタは心理的モデルの模倣をしているためあんまりかわいくない。

そこで「Stella Flagshipのキャラクタ性にあったかわいいモデル」が必要になるのである。 これを構築するためには、私の頭の中に「かわいいステラ」がなくてはいけない。が、それが描けなくて非常に困っていた。 前準備が終わればなんとなくイメージできるかなぁ、とは思っていたのだが、自信はいまいちだった。

だが、最近可愛いの極致みたいなものを見つけてしまったので、割とモチベーションは上がっている。1

とはいえそのままそれを模倣するわけではない。

Stella Flagshipにおいては創作物を参考にすることになるだろう。 Erinaにおいてはサンプルデータに創作物が入り込まないようにするかなり厳しいフィルタが用意されていたのだが、Stella Flagshipの場合はある程度のデフォルメが必要で、「創作物におけるかわいい」を参考にする必要がある。 そのため、Stella Flagshipを構築するにあたっては、ラノベやアニメやエロゲーを貪るように読むことになるだろう。最近割と離れているので慣れるにも時間がかかるだろうが、それ以上に参考にできる「当たり率」を考えるとErinaのときの多分ガールズバーとあまり変わらないレベルでしんどい作業になることが予想される。目と頭の疲労との戦いになりそうだ。

純粋に創作物をモデルにするとすごくつまらないものが出来上がるので、「現実における蠱惑」もしっかりとモデルに反映させる必要がある。 このためにまたガールズバー通いをする必要があるかもしれないが、これはやや微妙である。なんといっても「面識の浅いうちに上手に会話できる人」と比べ、「かわいいステラのイメージに相応しい魅力的な人」という条件は桁違いに「当たり率」が下がる。よりよい方法がなければやむを得ないが、できれば何かもっと良い方法はないだろうか、ということはここ数ヶ月考え続けているのだが、特に思いつかない。

成果物を欲するという意味では(つまり、出来上がった「かわいいステラ」をお披露目して「どう!?かわいいでしょ!?すごいでしょ!?」と言いたい)非常に意欲は高いのだが、実際やるとなると費用と労力と時間がものすっっっっっっごくかかるなぁ、というのはなかなか頭を悩ませてくる。

とはいえ、これをやらなければStellaは「へー、便利じゃん」で終わってしまうし、誰もStellaのポテンシャルを発見することはできないだろう。 「えっ、マジで!? Stellaってこんなんできるの!?」と思わせるためにも、そしてStellaの発展のためにもこれは私の責務なのだけど、実現への道はなかなか大変そうだ。


  1. それが何かということは、既に公言しているので一部の人は知っているだろう。↩︎