[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を説明することで,ゲーム分野でも利用してもらおうというのが,講演の趣旨であるようだ。
「言葉による質問を理解して適切な答えを返す」というWatsonの能力をどのようにしてゲームに応用するのか,すぐにはピンとこないのが正直なところだが,ともあれ講演の概要をざっくりとまとめてみたい。
なお,Watsonについては,2015年4月に行われた「Online Game Conference 2015」の講演レポート記事にも詳しくあるので,合わせて参照してもらうと,より深く内容を理解できるかと思う。
Watsonがクイズ番組で人間に勝利したときは,「数千基のPOWER7で構成」といったハードウェア的な側面が話題になったこともある。しかし,高良氏によると,現在のWatsonは特定のプロセッサやハードウェアに依存したシステムではなく,IBMのクラウドでサービスを提供するシステムになっているそうだ。
そのWatsonのシステム自体は米国にあり,ユーザー(ソフトウェア開発者)は,IBMのクラウドサービス「SoftLayer」上にある仮想サーバーで動くプログラムを作成して,Watsonの機能を利用する。
ちなみに,このSoftLayerとWatsonは,10Gbpsクラスの専用線でつながっているそうで,「インターネットによる遅延の影響を受けずに,Watsonを利用できる」と高良氏は豪語していた。
言葉を理解するWatsonは日本語にも基本的に対応しているのだが,驚いたことにWatsonは,日本語を日本語として扱っているのではないという。話し言葉や書き言葉といった自然言語を扱う場合,形態素解析といった手法で文章の意味を解析するのが一般的だ。しかし高良氏は,「Watsonでは形態素解析は使ってない」と説明する。
ではどうやって質問を解析しているのかというと,機械学習を利用しているのだという。ただ,ソフトウェア開発者側が,質問解析用の辞書を作ったりする必要はなく,それはWatson側で用意しているとのことだった。
Watsonは,どのような機能を提供しているのだろうか。高良氏が示した以下のスライドをもとに説明していこう。
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といった開発言語向けのライブラリを用意しているという。
実際の処理における流れは,APIを使って学習済みのNLCに質問を投げると,NLCが何の質問であるかを解析して返すといったものになる。そこでソフトウェア開発者は,質問内容に応じて質問者に対し反応を返す部分を,Watsonのサービスを使って作成するわけだ。
ちなみに,たとえば「おはよう」というテキストに対して何と返すべきか,どう反応すべきかという「反応決定」の部分は,Watsonではなくソフトウェア開発者が作成する必要がある。Watsonが提供するのは,何の質問なのかをNLCで解析することと,返すべき答えを探すサービスだけなのだ。
これがWatsonの特徴的なところであり,IBMのスタンスを示す部分なのだと高良氏は強調する。WatsonがAIではなく,Cognitive Computing Systemであると謳われているのも,反応決定――意思決定ともいえる――を行う機能を持たないためだそうだ。
余談気味だが,なぜWatsonは,意思決定を行わないのだろうか。それは技術的な問題ではなく,人間側の問題があるようだ。「日本には,『鉄腕アトム』を始めとする(友好的なAIを描いた)優れたコンテンツがあるため,AIに対して寛容的だ。しかし,海外は日本ほど(AIに対して)寛容ではない」からだと高良氏は言う。つまり,海外では「AIは人間にとって危険な存在」というイメージが強いため,Watsonは意思決定までは行わない,認知や認識のためのシステムになっているというのである。
そうなると,日本企業や日本人開発者がWatson的なシステムを開発した場合,意思決定まで行わせるのだろうか? そんな疑問が浮かんだ。
話を戻そう。NLCは“あらかじめ学習しておいた結果”に基づいて,質問のクラス――この例では質問のジャンル――を確信度,つまり質問の解釈が正しいと思われる確率が高い順で出力する。したがって,NLCは用途に合わせて学習を行わせておく必要があるわけだ。
その学習は,Excelで作成したCSV形式のワークシートで行えるとのこと。具体例は,Githubで公開中のコードを見てほしいと高良氏は述べていた。
さて,NLCが解析した質問に対する答えを導き出す手段には,先述したようにR&R,Dialog(Conversation),Visual Recognition,Cloudant,外部APIという5つのサービスがあるわけだが,その中でもWatsonを特徴づけているのが,R&Rである。
R&Rは,オープンソースの検索エンジン「Apache Solr」に,結果のランク付けを行う機能(Ranker)を加えたようなシステムだ。「どの検索結果が適切か」ランク付けを行ったうえで提示するという仕組みなので,適切度合いを判定するための学習が必要になるが,Watsonでは学習機能を含めたAPIとして,R&Rの機能を提供しているという。
R&Rを構築して利用するサンプルコードも, Github上で公開されている。ガンダムとクラウドに関する質問の回答を検索するサンプルだそうで,それを使えば,R&Rを構築してAPIを呼び出し,実際に利用するまでが可能となっている。
ところで,R&Rが返す答えは,ランク付けシステムの学習によって精度が向上していくのだが,あらかじめ学習させておくのは率直にいって大変だろう。それを解決するアイデアとして,高良氏は,R&Rの上位ランクを提示して質問者に選ばせることで,徐々に精度を向上させていくという方法を示した。
この方法は,すでにWatsonを利用しているみずほ銀行のコールセンターで実績があるそうで,運用を続けていくことで,R&Rの精度が向上しているそうだ。
高良氏はそのほかに,Visual Recognitionの仕組みを説明している。入力した画像が何かをJSON形式で出力するというサービスで,その画像が何か,予想される正答率を付けて返答できるとのことだった。
以上のように,NLCやR&R,Visual RecognitionといったサービスをAPI経由で利用し,それらをつなぐコードを自作することで,ユーザーと対話できるボットのようなものが作れるというのが,Watsonの特徴というわけだ。
IBMは,Watsonを有料のソリューションとして提供しているので,利用には料金が必要となる。ただ,毎月一定の範囲内で無料のテスト利用が可能となっており,高良氏がGithubで公開しているサンプルを試す程度なら,無料の利用枠内でも何とかなりそうだ。
JavaScriptを使って高度な自然言語解析やランク付けされる検索システムが使えるとなれば,いろいろな応用ができそうだ。ただ,ゲームの中でWatsonをどう使うかという具体例までは示さなかった。そこはゲーム開発者のアイデアに期待したいといったところか。
たとえば,ゲーム内に出現するボットにWatsonを使うといった応用はあり得そうだ。ゲームのルールを,WatsonのR&Rに学習させておくことで,プレイヤーの質問に対して,柔軟な反応を返すボットが作れるのではないだろうか。
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を説明することで,ゲーム分野でも利用してもらおうというのが,講演の趣旨であるようだ。
「言葉による質問を理解して適切な答えを返す」という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は日本語にも基本的に対応しているのだが,驚いたことにWatsonは,日本語を日本語として扱っているのではないという。話し言葉や書き言葉といった自然言語を扱う場合,形態素解析といった手法で文章の意味を解析するのが一般的だ。しかし高良氏は,「Watsonでは形態素解析は使ってない」と説明する。
ではどうやって質問を解析しているのかというと,機械学習を利用しているのだという。ただ,ソフトウェア開発者側が,質問解析用の辞書を作ったりする必要はなく,それはWatson側で用意しているとのことだった。
Watsonの仕組みと各サービスの機能
Watsonは,どのような機能を提供しているのだろうか。高良氏が示した以下のスライドをもとに説明していこう。
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といった開発言語向けのライブラリを用意しているという。
実際の処理における流れは,APIを使って学習済みのNLCに質問を投げると,NLCが何の質問であるかを解析して返すといったものになる。そこでソフトウェア開発者は,質問内容に応じて質問者に対し反応を返す部分を,Watsonのサービスを使って作成するわけだ。
ちなみに,たとえば「おはよう」というテキストに対して何と返すべきか,どう反応すべきかという「反応決定」の部分は,Watsonではなくソフトウェア開発者が作成する必要がある。Watsonが提供するのは,何の質問なのかをNLCで解析することと,返すべき答えを探すサービスだけなのだ。
これがWatsonの特徴的なところであり,IBMのスタンスを示す部分なのだと高良氏は強調する。WatsonがAIではなく,Cognitive Computing Systemであると謳われているのも,反応決定――意思決定ともいえる――を行う機能を持たないためだそうだ。
チャットボットで使ったコードの一部。70%以上の確度で質問の何か判定されると,反応を決定する「talk_action」を呼び出している |
反応を決定する「talk_action」のコード。反応を決定する部分はWatsonの仕事ではないので,ソフトウェア開発者が作らなくてはならない |
余談気味だが,なぜWatsonは,意思決定を行わないのだろうか。それは技術的な問題ではなく,人間側の問題があるようだ。「日本には,『鉄腕アトム』を始めとする(友好的なAIを描いた)優れたコンテンツがあるため,AIに対して寛容的だ。しかし,海外は日本ほど(AIに対して)寛容ではない」からだと高良氏は言う。つまり,海外では「AIは人間にとって危険な存在」というイメージが強いため,Watsonは意思決定までは行わない,認知や認識のためのシステムになっているというのである。
そうなると,日本企業や日本人開発者がWatson的なシステムを開発した場合,意思決定まで行わせるのだろうか? そんな疑問が浮かんだ。
話を戻そう。NLCは“あらかじめ学習しておいた結果”に基づいて,質問のクラス――この例では質問のジャンル――を確信度,つまり質問の解釈が正しいと思われる確率が高い順で出力する。したがって,NLCは用途に合わせて学習を行わせておく必要があるわけだ。
その学習は,Excelで作成したCSV形式のワークシートで行えるとのこと。具体例は,Githubで公開中のコードを見てほしいと高良氏は述べていた。
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の機能を提供しているという。
ところで,R&Rが返す答えは,ランク付けシステムの学習によって精度が向上していくのだが,あらかじめ学習させておくのは率直にいって大変だろう。それを解決するアイデアとして,高良氏は,R&Rの上位ランクを提示して質問者に選ばせることで,徐々に精度を向上させていくという方法を示した。
この方法は,すでにWatsonを利用しているみずほ銀行のコールセンターで実績があるそうで,運用を続けていくことで,R&Rの精度が向上しているそうだ。
高良氏はそのほかに,Visual Recognitionの仕組みを説明している。入力した画像が何かをJSON形式で出力するというサービスで,その画像が何か,予想される正答率を付けて返答できるとのことだった。
以上のように,NLCやR&R,Visual RecognitionといったサービスをAPI経由で利用し,それらをつなぐコードを自作することで,ユーザーと対話できるボットのようなものが作れるというのが,Watsonの特徴というわけだ。
無料枠もあるので興味のある開発者はぜひ挑戦を
IBMは,Watsonを有料のソリューションとして提供しているので,利用には料金が必要となる。ただ,毎月一定の範囲内で無料のテスト利用が可能となっており,高良氏がGithubで公開しているサンプルを試す程度なら,無料の利用枠内でも何とかなりそうだ。
JavaScriptを使って高度な自然言語解析やランク付けされる検索システムが使えるとなれば,いろいろな応用ができそうだ。ただ,ゲームの中でWatsonをどう使うかという具体例までは示さなかった。そこはゲーム開発者のアイデアに期待したいといったところか。
たとえば,ゲーム内に出現するボットにWatsonを使うといった応用はあり得そうだ。ゲームのルールを,WatsonのR&Rに学習させておくことで,プレイヤーの質問に対して,柔軟な反応を返すボットが作れるのではないだろうか。
Watsonを利用したゲームのアイデアが思いついた人は,ぜひ挑戦してみてほしい。