マルコフ連鎖系botとかについて思うこと

別にC#記事専用ブログになったわけでもないので、普通のエントリも書く。
最近身の回りでマルコフ連鎖を使ったtwitterbotが人気になっている。詳しく知らない人のために説明すると、意味があるようなことを話させるためにマルコフ連鎖というアルゴリズムを使ったbotのことだ。マルコフ連鎖というのは(自分も詳しく知ってるわけではないが)簡単に言うと、「この単語の次にはこの単語が来る確率が高い」というデータを統計から出してどんどん文章を作っていくアルゴリズムだと思ってくれればいいと思う。もし試してみたくなったら携帯で適当な単語を打ち込んだあと、予測の最初の単語を適当にポチポチ~と押してみれば大体同じようなことができる。今自分の携帯でやってみると「マルコフ連鎖をくるんで枕にしてたことを思い出す」と出た。
これはまぁその分野に詳しいかどうかはあまり関係なくわかる事実だと思うのだが、「人間の思考を機械で模倣する」という試みは今のところあまりうまくいってない。なので最近はお手軽なデータ的アプローチとしてこういうマルコフ連鎖が流行ってるんだと思う。たとえば機械に「花」は「美しい」ものだと理解させることは困難そうに思えるが、「多くの人間が『花』という単語のあとに『美しい』という単語を並べている」という事実はすぐに認識できる。その結果、意味なんて解析しなくても「花は美しい」と話す機械ができるというわけだ。
勿論ちゃんと意味を認識して言葉を紡いでいるわけではない以上、よくぼろが出る。先ほどの「マルコフ連鎖をくるんで~」の文章も崩壊している。そういう発言からたまに新鮮な言葉の選び方が発見されてうれしくなることがあるのはわかる……のだが……
結論を言うと、本当に会話らしきものを機械と行おうと思っているのならこのマルコフ連鎖的アプローチは袋小路だと思う。一見ものすごい近道で、すぐそれっぽい言葉を話すようになるけれど、その先はない。本当に大量のデータを集めて、文章的には全く文句のない言葉しか吐かなくなっても、その後ろに「認識」や「意思」はない。それはあまりにも悲しいのではないか。
人間の脳の仕組みすらあんまりわかってないのにそのプロセスを模倣しようとしていること自体が無謀な気もするが、別に同じものを再現する必要はないと思っている。機械には機械の思考があっていいのではないか。だから統計的手段に逃げないで、そのあたりの人は何とか工夫してbotの頭を作ってほしいなぁ、なんて思ったりする。