確率をツールとする人工知能技術、続いては機械学習への応用です。ディープラーニングを実現するニューラルネットワークなどに、実は密接に食い込んでいます。ディープラーニングとは、つまるところ「特徴の確率分布を把握すること」に尽きるのです。
「特徴の確率分布を学習する」とは?
機械学習におけるベイズ推定は、よく使う形、
の記号を少し入れ替えて、
とする感じです。
機械学習の場面では、Dは「データ」、θは「パラメーター」と称されます。ここで、P(θ|D)というのは、ふつうの言葉に言い換えると、「データDが出てきたときに、パラメーターθで表される何かである(何かが起きる)確率」です。あくまでも確率ですので、「θである」、「θが起きる」と確定的に断言するのではなく、「θである」、「θが起きる」可能性が高いか低いかを表します。このアバウトさ、柔軟性が機械学習には適しているのです。
冒頭に、「ディープラーニングとは、特徴の確率を把握すること」と書きました。これは、P(θ|D)が「ほどよく高くなる」ように、学習対象のいろいろな特徴に対する重み付け値(Weighting Factor 特徴量)を最急降下法などによって更新していくことにより、行われます。
「ねこ」を学ばせるには……
ありがちな話ですが、動物の識別、「ねこ」を機械学習ではどのように学習するのか、見てみましょう。
前の記事で「スパムメールの識別」を取り上げていますが、そこに書いたやり方と本質的には同じです。メールがテキストであるのに対し、「ねこ」は画像であるという点がちがうだけです。
メールの場合は、例えば「無料」という単語を含む(または頻出する)メールを100%ハネてしまうように設定すると、スパムではないメールまでかなりの割合でハネてしまうフィルターができてしまいます。これに対し、ベイズ推定を応用すると、「スパムの可能性が高いけど断定はしないよ」という出力を返し、ほかの要素、「100%」、「ご満足」などほかの売り言葉もチェックしていって、算定される確率が合算で一定の値以上に上がったら、「うん、スパムだね、さようなら」と言ってハネるという、柔軟で確実性の高いフィルターを作れるのでした。
対象データが画像の場合も、次元数が多くなるなどのちがいや難しさはあるものの、本質的には同じ作業をさせていくのです。
たとえば、「耳が三角で、ピンと立っていて、たれていない」といった特徴をデータDとして得たときに、θ=「ねこの可能性が高いね」という出力を返すように「三角ピンたれない耳」に対する特徴量を調整させます。ここでもやはり断定はさせません。「いぬ」の中にも「三角ピンたれない耳」を持つものもいますし、「ねこ」であっても耳を伏せて「シャーッ!」と威嚇している画像なら「三角ピンたれない耳」の特徴を表しませんので、100%そうだと断定してしまうと誤判定につながります。だから「確率的に」というユルさをあえて残すのです。
ちなみに、このように学習の早い段階で特徴を過剰に重くとらえてしまい、柔軟性を失ってしまうことを「過学習」といいます。これを上手に避けつつ機械学習を進められる各種パラメーターの設定には、ニューラルネットワーク技術者や研究者はたいへんに苦労しています。「どうすればうまくいくのか」についてまだ十分に理論化されておらず、うまく動作したニューラルネットワークは「技術者・研究者のセンスと職人技」という、理論的に説明も伝達もできない何かに依存して作られたとしか言いようがないのが現状です。あるいは、「行き当たりばったりで適当に作ったら、たまたまうまく動作した」結果、「すぐれたセンスと職人技の成果!」ということになった……なんてことも現実には起きているかもしれません。
「どうしてうまく動作したのか」、「どうすればうまく動作するように作れるのか」、こういったことに関する理論化は現状ではまったく不十分で、特許法の考え方では「技術」とは見なせないため、よくできたニューラルネットワークでも特許が取れないという、笑えない事態も現に起きています。
さて話を戻します。
「耳」以外のさまざまな特徴についても、同じように確率的にとらえていきます。たとえば「鼻面が長くない」……これもたしかに「ねこ」の特徴ですが、「いぬ」でもパグやポメラニアンなど、鼻面が長くないものがいます。重く評価しすぎてはマズいので、適度にユルく評価するようにします。
このほか、「胴長・短足のプロポーション」、「細めるとつり上がる感じの目」、「舌を出さず口を閉じている」などなど、考えられる限りの特徴ポイントについて、P(θ|D) = 「Dという特徴があるときにねこである確率」が適度に高くなるようにとらえていき、総合的に「うん、ねこだね」とマシンが判定できるようになる状態をめざします。
ベイズ推定を応用した機械学習とは、このようなものです。
音声言語認識への応用
ここ10年ほどで、長足の進歩を見せた技術のひとつに「音声言語認識」があります。人間が話しかければマシンが反応し、それなりに適切な答えを返してくるアレです。Apple製 iPhone の Siri あたりが皮切りだったでしょうか。最近はスマートスピーカーが各社から売り出されておりますが、すべて人間の音声によるコマンドを受け付けて反応するようになっています。SF映画の金字塔『2001年宇宙の旅』に出てくるHAL9000のレベルには遠く及ばないのが現状ですが、それにしてもかなり成長してきてはいます。
この成長の足がかりになったのも、やはりディープラーニングです。大量の音声データをこれでもかこれでもかとスーパーコンピュータに浴びせて学ばせ、まずは「単語をまあまあ間違えずに聞き取る」ところまでを目指します。
これに並行してやることは「統計」です。ある単語や決まったフレーズが現れる頻度、ある単語と単語が結びつく頻度、ポジティブな意味の単語やネガティブな意味の単語と結びつく頻度など、これもディープラーニングで統計的にデータを集積していきます。
その結果、現在の Siri や Cortana、Alexa、Googleアシスタントなど、まあまあそこそこちゃんと言うことを聞いてくれる音声言語認識が実現されています。それらが人間の声を聞いて意味を解釈するプロセスの中に、実はまたしてもベイズ推定が応用されているのです。
今からわずか10年ほど前まで、マシンによる音声言語認識は、「できるだけきっちりと発音されている単語を聞き取れるようにする」方向で技術向上が図られていました。つまり、ベイズ推定では柔軟に受け入れられるような「ユルさ」を許さない方向です(すみません。意図しただじゃれではありません)。
しかしその方向ですと、かなり定型的な言い回しでないと対応できなかったり、ちょっとでも滑舌が悪いと聞き取りに失敗したりと、何かと問題が生じがちでした。表現のゆれや発音のクセ、ちょっとしたミスに不寛容なので、居住まいを正して、ゆっくりと明瞭に、正しい用語と語順を用いて「謹んで申し上げなければ」ならなかったわけです。まるで天皇陛下に「奏し奉る」ような話です。たかが機械相手に。
そうした方向の技術的進歩は、人間に「ゆれ」や「ミス」が付きものであることを考えると、いずれ頭打ちになることは理の当然でした。
そのため、「完璧な聞き取り」という方向は捨て、「ゆれ」や「ミス」をゆるやかに許容する方向にシフトすることになります。このために応用されたのが確率的なベイズ推定でした。
それはこうしたやり方です。とりあえずマシンが何か単語を聞き取ったら、その単語が現れた時に次に来る確率が高い単語を拾って「待ち構えたうえで」、次の単語を聞き取ろうとするのです。
たとえばここに、Ringo社製高性能スマートフォンAI・Ketoo というマシンがあるとします。「ケツ」ではありません。「ケトゥ」です。で、Ketooに、ユーザーは話しかけます。
「ヘイ、Ketoo!」
ここでKetooはユーザーに対し傾聴モードになります。続けてユーザーが
「今日の」
と言ったところで、Ketooはもう「次に来るのは、天気、ニュース、日経平均、円相場、星占い、ラッキーアイテム……」などなどの可能性を用意して待ち構えています。ですから、続けて「ニュース」というはずの瞬間、3歳の娘さんが「パパー!」と言いながら駆けてきてユーザーの腹部に重い頭突きをたたき込んだため、「ニューじゅ!」という感じに「ニュース」と悲鳴が混じってしまったとしても、Ketooは
「東京あきる野市で5日から行方不明になっていた5歳の男児が、今朝無事に保護されました」
と、何事もなかったかのようにニュースを読み上げます。(「大丈夫ですか?」と心配してくれるところまでは、まだ当分は到達しないでしょう。)
聞こえた音声を後読みして意味をとらえるのではなく、先読みして待ち構えて聞き取るので、多少言い間違ったり変な声で言ったりしても、Ketooは寛容に受け入れて聞き取ってくれます。それというのも、ベイズ推定を活用した確率的把握にもとづいているからなのです。
「中国語の部屋」
すでにおわかりいただけているかもしれませんが、Ketoo にしても Siri にしても、その他各種スマートスピーカーにしても、ユーザーの言葉を意味として理解しているわけではないという点には注意してください。理解しているように見えるだけです。
そうです。AIアシスタントはすべて「中国語の部屋」です。
「ヘイ、Ketoo! 午後の天気は?」
とユーザーが呼びかけると、Ketooは「gogo no tenki ha」という音声データをホストサーバーに送信します。ホストサーバーは統計的に得られている膨大な反応パターン集から「gogo no tenki ha」にふさわしく対応する反応パターンを高速検索し、「ユーザー現在地点の天気予報」を選択して実行、そのデータを取得してKetooに配信し、読み上げさせます。
意味はわかっていません。反応パターン集を調べて、その中から対応するものを拾い出しているだけです。これはまさに、「小部屋の中にいる人物はまったく中国語を理解していないが、差し入れた紙切れに書いた漢字について、『〇〇と書かれていたら××と書き加えて返せ』という規則が書かれたマニュアルを見て、そのとおりに書いて紙切れを外の人に差し出す」という、「中国語の部屋」そっくりそのままです。
ですから、「自然言語処理」、「音声言語認識」とは言っても、言葉の意味を認識しているわけではないので、マシンが言葉を使って推論したり判断したりはしていないのです。
少し前に、香港のインターネット大手が提供する対話サービスAIが「中国共産党を批判した」というニュースが話題になりました。AIが中国共産党について「腐敗と無能の政治」と言ったのだとか。
この件もおそらく、AIの反応パターン集の前提となるテキストマイニングの段階で、対象とするテキストに相当数、中国共産党に対して批判的なものが含まれていたことに原因があると思われます。あるいは、開発者が故意にそうした傾向のテキストに数多く触れさせたのかもしれません。
いずれにせよ、AIマシンが自力で価値判断して言っているわけではありません。学習した反応パターンにしたがっているだけです。
今後も、AIが差別的な発言をしたり、人類抹殺を主張したり、ナチスを賞賛したりしたというニュースが報じられるかもしれません。しかし心配は要りません。本気でそう思っているわけではありませんから。
逆に言うとこのことは、現在の自然言語処理・音声言語認識をどれほど高度化・複雑化しても、マシンの中に「心」も「意識」も生まれはしない、ということを意味しますね。笑ったり泣いたり、怒ったりするAIもそのうち登場するでしょうが、それはサイコパスが「結婚式ではにこにこし、葬式では悲しげに振る舞うべき」という態度を学習し、上手に演じられるようになるのと同じことです。心では何も感じておらず、マシンの場合、そもそも感じる心もないのです。
さて、確率を直接的にツールとして活用する人工知能技術はこのへんで一区切りとしましょう。
続いてはデータベーステクノロジー、ないしはビッグデータの活用です。