[CEDEC 2016]自然言語で対話可能なAI「Watson」をゲームで使うには? IBMのエンジニアが利用法を解説

 2011年,米国のクイズ番組「Jeopardy!」に挑戦したIBMのコンピュータ「Watson」が,人間のクイズチャンピオンを破ったというニュースを聞いたことがある人もいるだろう。
 Watsonとは,自然言語による質問に対して適切な答えを返すというシステムで,いわゆる人工知能(AI)の一種だ。だが,IBMはWatsonのことをAIとは呼ばず,「Cognitive Computing System」(日本語では認知コンピューティングシステムといった意味)と定義している。現在はIBMのクラウドを通じて,商用サービスが提供されている。すでにコールセンター業務などへの応用も始まっているそうだ。

 CEDEC 2016の2日めである2016年8月25日,IBMの日本法人である日本アイ・ビー・エムによる,「IBM ワトソン API プログラミング入門 on SoftLayer & Bluemix」という講演が行われた。セッションを担当したのは,日本IBMでクラウド部門のITアーキテクトを務める高良 真穂(たから まほ)氏である。ゲーム開発者にWatsonの仕組みとAPIを説明することで,ゲーム分野でも利用してもらおうというのが,講演の趣旨であるようだ。

高良真穂氏(日本アイ・ビー・エム クラウド事業統括エバンジェリスト&ITアーキテクト)。プロフィールによると,かつてはゲーム開発者を目指したこともあったのだとか
[CEDEC 2016]自然言語で対話可能なAI「Watson」をゲームで使うには? IBMのエンジニアが利用法を解説

 「言葉による質問を理解して適切な答えを返す」というWatsonの能力をどのようにしてゲームに応用するのか,すぐにはピンとこないのが正直なところだが,ともあれ講演の概要をざっくりとまとめてみたい。
 なお,Watsonについては,2015年4月に行われた「Online Game Conference 2015」の講演レポート記事にも詳しくあるので,合わせて参照してもらうと,より深く内容を理解できるかと思う。

[OGC 2015]AI関連のセッションから見えてきた,ゲームの未来



開発者はIBMのクラウドサービス経由でWatsonを利用


 Watsonがクイズ番組で人間に勝利したときは,「数千基のPOWER7で構成」といったハードウェア的な側面が話題になったこともある。しかし,高良氏によると,現在のWatsonは特定のプロセッサやハードウェアに依存したシステムではなく,IBMのクラウドでサービスを提供するシステムになっているそうだ。

 そのWatsonのシステム自体は米国にあり,ユーザー(ソフトウェア開発者)は,IBMのクラウドサービス「SoftLayer」上にある仮想サーバーで動くプログラムを作成して,Watsonの機能を利用する。
 ちなみに,このSoftLayerとWatsonは,10Gbpsクラスの専用線でつながっているそうで,「インターネットによる遅延の影響を受けずに,Watsonを利用できる」と高良氏は豪語していた。

チャットボットでWatsonを利用することを想定したスライド。ソフトウェア開発者が書いたボットのコードは,SoftLayerの仮想サーバー上で実行される
[CEDEC 2016]自然言語で対話可能なAI「Watson」をゲームで使うには? IBMのエンジニアが利用法を解説

 言葉を理解するWatsonは日本語にも基本的に対応しているのだが,驚いたことにWatsonは,日本語を日本語として扱っているのではないという。話し言葉や書き言葉といった自然言語を扱う場合,形態素解析といった手法で文章の意味を解析するのが一般的だ。しかし高良氏は,「Watsonでは形態素解析は使ってない」と説明する。
 ではどうやって質問を解析しているのかというと,機械学習を利用しているのだという。ただ,ソフトウェア開発者側が,質問解析用の辞書を作ったりする必要はなく,それはWatson側で用意しているとのことだった。

Watsonは形態素解析などの従来の手法で日本語の文章を解析しているわけではなく,機械学習を使って質問を解析しているそうだ
[CEDEC 2016]自然言語で対話可能なAI「Watson」をゲームで使うには? IBMのエンジニアが利用法を解説


Watsonの仕組みと各サービスの機能


 Watsonは,どのような機能を提供しているのだろうか。高良氏が示した以下のスライドをもとに説明していこう。

Watsonの構成要素を示したスライド
[CEDEC 2016]自然言語で対話可能なAI「Watson」をゲームで使うには? IBMのエンジニアが利用法を解説

 Watsonはまず,渡された質問のテキストを「NLC」(Natural Language Classifier)というシステムで解析し,「何の質問であるか」を判定するという。この解析システムに,機械学習が使われている。

 質問に対する答えを得るのが,NLCから伸びた矢印の先にある5つのサービスだ。
 1つめの「R&R」(Retrieve&Rank)は,質問に対する回答の検索結果に,どれが適切かランク付けを行ったうえで提示するというシステムだ。
 「Dialog」は,質問者との対話を通じて情報を得るシステムだが,近い将来に廃止となり,新しい「Conversation」というシステムに置き換えられる予定だという。ただ,Dialogは日本語でのやり取りが可能であるものの,講演時点でのConversationは,日本語に対応していない。
 そのほかに,画像を判別する「Visual Recognition」,データベースに登録された定型的な反応を返す「Cloudant」,インターネット上のWebサイトを検索して,天気予報や道路情報を返したりする「外部API」といったサービスも用意している。

 こうしてみると,Watsonは,質問に対する適切な答えを返すことに特化したシステムであることがよく分かる。機械学習による自然言語解析と全文検索やデータベースを組み合わせたエキスパートシステム,といったところだろうか。


質問に対する反応を決定する部分はソフトウェア開発者が決める


 続けて高良氏は,Watsonの各機能をソフトウェア開発者がどのようにして利用するかについて説明した。
 具体的な説明は,高良氏が用意したチャットボット「はる」を例として行われた。なお,はるのソースコードや学習データは「Github」で公開中(関連リンク)とのことなので,興味がある人はチェックをお勧めしておこう。

 さて,ソフトウェア開発者がWatsonを利用するときは,まず,SoftLayer仮想サーバー上で動作するJavaScript環境「Node.js」のコードを作成し,アプリケーションからWatsonを利用する手順となる。

 質問を解析するNLCを利用するためのAPIは,「REST API」として提供しており,Node.js,Java,Pythonといった開発言語向けのライブラリを用意しているという。

NLCはREST APIで提供し,3つの言語に対応したライブラリが利用できる
[CEDEC 2016]自然言語で対話可能なAI「Watson」をゲームで使うには? IBMのエンジニアが利用法を解説

 実際の処理における流れは,APIを使って学習済みのNLCに質問を投げると,NLCが何の質問であるかを解析して返すといったものになる。そこでソフトウェア開発者は,質問内容に応じて質問者に対し反応を返す部分を,Watsonのサービスを使って作成するわけだ。

チャットボットを例に,NLCの動作を示したスライド。「おはよう」というテキストをNLCに渡すと,「『朝の挨拶』である確率が100%」という解析結果が帰ってくる。この結果をもとに,Cloudantで適切な返答を検索して,質問者に示すという流れだ
[CEDEC 2016]自然言語で対話可能なAI「Watson」をゲームで使うには? IBMのエンジニアが利用法を解説

 ちなみに,たとえば「おはよう」というテキストに対して何と返すべきか,どう反応すべきかという「反応決定」の部分は,Watsonではなくソフトウェア開発者が作成する必要がある。Watsonが提供するのは,何の質問なのかをNLCで解析することと,返すべき答えを探すサービスだけなのだ。
 これがWatsonの特徴的なところであり,IBMのスタンスを示す部分なのだと高良氏は強調する。WatsonがAIではなく,Cognitive Computing Systemであると謳われているのも,反応決定――意思決定ともいえる――を行う機能を持たないためだそうだ。

[CEDEC 2016]自然言語で対話可能なAI「Watson」をゲームで使うには? IBMのエンジニアが利用法を解説
チャットボットで使ったコードの一部。70%以上の確度で質問の何か判定されると,反応を決定する「talk_action」を呼び出している
[CEDEC 2016]自然言語で対話可能なAI「Watson」をゲームで使うには? IBMのエンジニアが利用法を解説
反応を決定する「talk_action」のコード。反応を決定する部分はWatsonの仕事ではないので,ソフトウェア開発者が作らなくてはならない

 余談気味だが,なぜWatsonは,意思決定を行わないのだろうか。それは技術的な問題ではなく,人間側の問題があるようだ。「日本には,『鉄腕アトム』を始めとする(友好的なAIを描いた)優れたコンテンツがあるため,AIに対して寛容的だ。しかし,海外は日本ほど(AIに対して)寛容ではない」からだと高良氏は言う。つまり,海外では「AIは人間にとって危険な存在」というイメージが強いため,Watsonは意思決定までは行わない,認知や認識のためのシステムになっているというのである。
 そうなると,日本企業や日本人開発者がWatson的なシステムを開発した場合,意思決定まで行わせるのだろうか? そんな疑問が浮かんだ。

 話を戻そう。NLCは“あらかじめ学習しておいた結果”に基づいて,質問のクラス――この例では質問のジャンル――を確信度,つまり質問の解釈が正しいと思われる確率が高い順で出力する。したがって,NLCは用途に合わせて学習を行わせておく必要があるわけだ。
 その学習は,Excelで作成したCSV形式のワークシートで行えるとのこと。具体例は,Githubで公開中のコードを見てほしいと高良氏は述べていた。

NLCは,確信度が高い順に質問のジャンルが何かを出力する
[CEDEC 2016]自然言語で対話可能なAI「Watson」をゲームで使うには? IBMのエンジニアが利用法を解説

NLCは用途に応じた学習をしておく必要があり,データやフレーズを記録したCSVファイルを読み込ませることで行える
[CEDEC 2016]自然言語で対話可能なAI「Watson」をゲームで使うには? IBMのエンジニアが利用法を解説


Watsonを特徴付けているR&Rの仕組み


 さて,NLCが解析した質問に対する答えを導き出す手段には,先述したようにR&R,Dialog(Conversation),Visual Recognition,Cloudant,外部APIという5つのサービスがあるわけだが,その中でもWatsonを特徴づけているのが,R&Rである。
 R&Rは,オープンソースの検索エンジン「Apache Solr」に,結果のランク付けを行う機能(Ranker)を加えたようなシステムだ。「どの検索結果が適切か」ランク付けを行ったうえで提示するという仕組みなので,適切度合いを判定するための学習が必要になるが,Watsonでは学習機能を含めたAPIとして,R&Rの機能を提供しているという。

全文検索エンジンApache Solrと,R&Rの違いを示したスライド。R&Rは学習結果に基づいて,検索結果にランク付けを行って並べ替える「Ranker」があるのが特徴だ
[CEDEC 2016]自然言語で対話可能なAI「Watson」をゲームで使うには? IBMのエンジニアが利用法を解説

R&RもREST APIとして提供している。対応ライブラリはNode.jsとJavaで,Python対応ライブラリはまだないとのこと
[CEDEC 2016]自然言語で対話可能なAI「Watson」をゲームで使うには? IBMのエンジニアが利用法を解説

ガンダムとクラウドに関するR&Rを構築するサンプルコードが,Githubで公開中
[CEDEC 2016]自然言語で対話可能なAI「Watson」をゲームで使うには? IBMのエンジニアが利用法を解説
 R&Rを構築して利用するサンプルコードも,Github上で公開されている。ガンダムとクラウドに関する質問の回答を検索するサンプルだそうで,それを使えば,R&Rを構築してAPIを呼び出し,実際に利用するまでが可能となっている。

 ところで,R&Rが返す答えは,ランク付けシステムの学習によって精度が向上していくのだが,あらかじめ学習させておくのは率直にいって大変だろう。それを解決するアイデアとして,高良氏は,R&Rの上位ランクを提示して質問者に選ばせることで,徐々に精度を向上させていくという方法を示した。
 この方法は,すでにWatsonを利用しているみずほ銀行のコールセンターで実績があるそうで,運用を続けていくことで,R&Rの精度が向上しているそうだ。

R&Rが選んだ上位の検索結果を提示して,質問者に選ばせることで精度を高める
[CEDEC 2016]自然言語で対話可能なAI「Watson」をゲームで使うには? IBMのエンジニアが利用法を解説

みずほ銀行におけるコールセンターの運用では,実際にこの方法でR&Rの精度を向上できたという
[CEDEC 2016]自然言語で対話可能なAI「Watson」をゲームで使うには? IBMのエンジニアが利用法を解説

 高良氏はそのほかに,Visual Recognitionの仕組みを説明している。入力した画像が何かをJSON形式で出力するというサービスで,その画像が何か,予想される正答率を付けて返答できるとのことだった。

Visual Recognitionの例。「Pok&233;mon GO」のドードーが写った写真を与えたところ,「99%の確率で鳥」「96%の確率で動物」「85%の確率で植物」という認識結果を返してきた
[CEDEC 2016]自然言語で対話可能なAI「Watson」をゲームで使うには? IBMのエンジニアが利用法を解説

 以上のように,NLCやR&R,Visual RecognitionといったサービスをAPI経由で利用し,それらをつなぐコードを自作することで,ユーザーと対話できるボットのようなものが作れるというのが,Watsonの特徴というわけだ。


無料枠もあるので興味のある開発者はぜひ挑戦を


 IBMは,Watsonを有料のソリューションとして提供しているので,利用には料金が必要となる。ただ,毎月一定の範囲内で無料のテスト利用が可能となっており,高良氏がGithubで公開しているサンプルを試す程度なら,無料の利用枠内でも何とかなりそうだ。

Watsonの料金体系。毎月一定の無料枠があり,それを超えると課金が発生するという料金体系になっている
[CEDEC 2016]自然言語で対話可能なAI「Watson」をゲームで使うには? IBMのエンジニアが利用法を解説

 JavaScriptを使って高度な自然言語解析やランク付けされる検索システムが使えるとなれば,いろいろな応用ができそうだ。ただ,ゲームの中でWatsonをどう使うかという具体例までは示さなかった。そこはゲーム開発者のアイデアに期待したいといったところか。
 たとえば,ゲーム内に出現するボットにWatsonを使うといった応用はあり得そうだ。ゲームのルールを,WatsonのR&Rに学習させておくことで,プレイヤーの質問に対して,柔軟な反応を返すボットが作れるのではないだろうか。
 Watsonを利用したゲームのアイデアが思いついた人は,ぜひ挑戦してみてほしい。

IBMのWatson 公式Webページ

CEDEC 2016 公式Webサイト

4GamerのCEDEC 2016関連記事一覧