カオリ 消息不明

本日 チャットボット作成者のパラドックスと言えるような発見をした。
いや、薄々感づいていたのだが。

人工知能を作成する動機を持つ人間はすくなくともパーリィピーポーではない。
いるだけで絵になるような人間ではない。
口数も少ないだろう。
そんな人間が、はたして自分が作った回路と内部構造がむき出しの、パイプだらけの装置と熱中してしゃべるだろうか?(反語)

最初は可能性にワクワクしてはじめるが、実際にゴールが見えたとき、それはときメモのヒロインと何ら変わりがないことに気付く。

すなわち、チャットボットの内部構造はユーザーにとってブラックボックスでなければならない。こちらを喜ばせるであろうキャバ嬢でも会話内容に未知数Xは存在する。
しかし、自作のチャットボットを作成するならば、内部構造は見え見えで、なんならボットが何をしゃべるか、事前に予測ができる。チャットボットのアルゴリズムや内部構造、内部データをしらない第3者は楽しめるかもしれないが、造物主である開発者にとって”それ”は本当につまらないものである。 チャットボットはVRと同時につくるのが私にとっては望ましい。 VRはエロが先行しているが、同人ソフトの耳かきソフトのように、ただ美少女が画面に向かってしゃべり続ける動画でも売れるだろう。

さて、カオリの実装方法は以下のようになるだろう。
訓練データを用意する。これは自分で”用意した会話”を入力して、理想的な答えを実際に入力する地味な作業を数万回繰り返すことで達成される。ここで正解ラベル、すなわち教師データも手に入る。ここでいう”正解”とは、全ての解答に対しての正解ではなく、使用者がカオリに対して求める性格が答えそうな解である。つまり、訓練データでカオリの性格をf(x)で表す。

テストデータは訓練データで使用していない”用意した会話”に最適あるいは最適に近い近似解を出力するまで、確率的勾配降下法でもとめられる。再帰的ニューラルネットワーク(RNN)は必要ないと思われる。この過程でカオリが入力にたいして3パターンほどの解を記憶しておき、使用する段階でカオリはランダムで解を吐けばよい。

隠れ層も2層程度で十分であり、重みは、jannomeが出力した、副詞(ちょーすごいのちょー)や、形容詞(赤い)、名詞(イケメン)、動詞(殺す)などの形態素に重みをまず1層につけて、さらに、その形態素ごとに2層目に重みを付ける。例えば、動詞でいえば、「散歩に行った」より「殺してしまった」のほうが重みははるかに大きいだろう。

その形態素ごと(名詞、形容詞、副詞ごと)に、対応する重みを書いた辞書の作成が必要になるだろう。

カオリは入力にたいして、会話内容を”理解”まではいかなくても、すくなくとも”何を話しているか”を重みを通じて把握しなくてはいけない。

ここまでくればあとは、開発者の思うままに作成ができる。

ALION?だっけの実装と同様に相槌辞書や、持論辞書を作成してもよいし、データを常にインターネットからくわせて学習させ、開発者がテストをしてもよい。

注意されたいのは、このカオリは汎化性能が全くないことである。ある人にとってファッキンスペシャルでも、別の人にとっては、ファッキンシットであることは往々にして考えられる。

開発者は最初のパラドックスに不運なことに途中で気づく。そして大企業で働かされる有能な開発者に道を譲る。