ITエンジニアのための勉強会・イベントレポート情報メディア

NSStudy 11 機械学習とBot・Cognitive Services
event

NSStudy 11 機械学習とBot・Cognitive Services

2017.05.09

 
  • このエントリーをはてなブックマークに追加

3月22日、ネクストスケープ社による技術勉強会「NSStudy #11」に参加してきました。今回のテーマは「機械学習とBot・Cognitive Service」。日本マイクロソフトのテクニカルエバンジェリストお二人から、最新の技術とサービス展開への勘所を伺うことができました。

鶴田 展之

1. いまさら聞けない機械学習

一本目のセッションは畠山大有氏による「一度はあきらめたエンジニアのための、いまさら聞けない機械学習」。機械学習を取り巻く技術はここ数年で急激に進歩、普及したため、エンジニアであっても動向を追いきれていない人の方が多いのではないでしょうか。畠山氏のセッションは、あらためて基礎の基礎から理解を深める機会として、とても貴重なものでした。

機械学習とは

そもそも「機械学習」を理解する前提として、「機械が学習する」のではなく「私達が機械に学習させる」と考えることが大切だそうです。機械学習では、機械に大量のデータを与え、その中の「パターン」を解析させる点が大きな特色です。場合によっては、人間が機械に「答え」を教えてあげる必要もあります。

例えば、スポーツの試合の開催・中止に対して、「天気」「気温」「風」といった天候のデータの蓄積があるとします。一般的なエンジニアリングでは、「天気が晴れまたは曇」「気温が○℃から○℃の間」「風速が○m以下」のような条件をロジックとして実装し、if文で分岐するプログラムを書いて、そのスポーツの試合の開催・中止を判断します。しかし、条件を考慮する順番は「天気」「気温」「風」の順でよいのか、それとも「風」「天気」「気温」の順なのかという問題もありますし、そもそも「スポーツ」といってもゴルフもあればテニス、野球、サッカーもあり、種目によって正解となる答えも大きく変わるでしょう。そこで、様々なパターンをどう解析すれば正解に近づけるか、過去に例がない組み合わせに対しても高い確率で正解を導き出せるか、といった側面からアプローチするのが機械学習になります。

Azure Machine Learningを使ってみる

機械学習を活用するにあたって我々エンジニアが行う作業の第一は、「モデル」つまりデータを判断していく順序や条件判断のフローを作ることになります。この時点でもうすでにややこしそうなイメージですが、マイクロソフトが機械学習のモデルを作成するためのツールとして提供している「Azure Machine Learning Studio」を使えば、ドラッグ&ドロップ主体の操作で様々なアルゴリズムを組み合わせて直感的にモデルを作ることが可能です。

ただ、いくらAzure Machine Learning(Azure ML)に多数のアルゴリズムが用意されているといっても、「学習にどのアルゴリズムを使うべきか」を判断するのはモデルを作る人間です。経験もないのに、いきなり最初から最適なアルゴリズムを選べるわけがありません。そこで、アルゴリズムを選択するための手助けとして、マイクロソフトからは「チートシート」が提供されています。Azure Machine Learning Studioでは2つのアルゴリズムを並べて比較したり、モデルの評価を可視化したりといったことも簡単にできるので、チートシートを見ながらトライアンドエラーで操作していけば、わりとすぐにある程度のモデル作成ができるようになるのではないかと感じました。

※Azure ML チートシート。非公式ですが日本語版もあります。

機械学習の勘所

さて、ツールにも慣れて実際の業務プロジェクトで機械学習を手がける場合、特にどのような点に留意すべきなのでしょう。畠山氏は、まず「処理しやすいデータを準備することが大切」と言います。コンピュータは与えられたデータをもとに判断するだけで、人間でいうと2歳児程度の判断しかできません。与えるデータの「列(Feature)」、データに対する「答え(Label)」を適切に作らないと、適切な学習ができないことになります。実は、機械学習のプロジェクトの多くの部分は、実際のトレーニングよりも正しいデータを準備するために費やされることが多いそうです。Azure MLに用意されたサンプルデータは、機械学習のためにシンプルな構造に整理されていて、さらに使用すべきアルゴリズムのヒントも含んでいます。正しい学習のためにどういったデータを用意すればよいかは、サンプルデータを見て学ぶのが効率的になるでしょう。

また、データに関して特に陥りがちな罠に「過学習」があります。過学習とは文字通り「訓練データ」に適合させすぎてしまうことで、訓練データではよい成績を出力するけれどそれ以外のデータを使うと成績が悪くなる、という状態を指します。機械学習の利点は「だいたい正しい答えを返す」汎用性にあるので、過学習によってその汎用性を落としてしまうのは避けなければなりません。多くの場合、訓練データの列(項目数)を増やしすぎると過学習になりやすいので注意が必要です。

2. Conversation as a Platform 〜Chatbotが広げるコミュニケーションの可能性

二本目は、機械学習を含むAIの活用のお話。大森彩子氏が、チャットボットを例に具体的なサービスのイメージを解説してくれました。

Cortana Intelligence Suite

マイクロソフトは、AI秘書「Cortana」、女子高生AI LINEアプリ「りんな」等、AI関連の様々な試みで話題を集めていますが、これらの技術の集合をサービスとして提供するのが「Cortana Intelligence Suite」です。

その中で最もユーザーに近いところを構成するのが、「Cognitive Services」「Bot Framework」です。

Cognitive Servicesは、AIの様々な機能パーツをWeb API経由で利用できるサービスです。具体的には、写真や動画から被写体の性別や感情を判別したり、テキストと音声を相互に変換したり、文章から主題やキーワードを抽出したりといった機能があります。
例えば感情判別のAPIでは、写真のURLを渡すだけで、怒り、怖れ、驚き、幸せ、など8つの感情をスコアとして返してくれます。

Bot Frameworkは、SkypeやSlack、Facebook Messenger等に対応したチャットボットを簡単に作成できる、C# / Node.jsのWebアプリテンプレートです。Bot Directoryに登録すれば、作成したチャットボットを一般ユーザーに公開することもできます。

Cognitive Services、Bot Frameworkは、すでに具体的な活用もはじまっています。高知銀行では、店頭受付にAIボット「頭取くんと秘書子ちゃん」を設置し、顧客の質問を判別して2,000パターンの回答から答えるサービスを開始しました。ナビタイムジャパンも、LINEアプリ「乗換検索Botサービス」を提供。友達とチャットしているような感覚で電車の乗換情報を教えてもらえます。マイクロソフト社自身も、「Microsoft Support Virtual Agent」としてAIによるサポートサービスを開始しています。よくある質問への回答をAIに任せれば、人間はより複雑な問題解決に専念できます。つまり、上手くボットを活用すれば、ITベンダーに限らずどの企業でもサポート業務全体の効率化と対応品質の向上が図れるでしょう。

FAQ Botの作り方

大森氏の元にも、ユーザーからの質問に自動応答するボットが欲しい、という相談が多く寄せられるそうです。ただ、単に自動応答といっても、質問の仕方も回答の仕方もいろいろです。例えばコールセンターによくある「○○のご用の方は1番を押してください」といった、電話の応答システムが既に導入されている場合であれば、ダイアログを出して選択させる形でFAQを提供する方が、既存のルーティングを変えずにスムーズに導入できるかもしれません。自然言語での質問に回答する場合でも、単に単語の意味を受け取ればよい場合、質問の発せられた背景や意図まで考慮しなければならない場合で、複雑さの度合いが変わってきます。さらに、どんな質問にも回答できる汎用性が求められるのか、ある程度絞り込んだ範囲に限定するのか、といったところも検討すべき点になるでしょう。例えば最初の質問は選択式にして、ある程度絞り込んだ範囲で自然言語の質問を受ける、といった構成の仕方も考えられます。

さて、具体的にFAQボットを、Cognitive Services / Bot Frameworkを使って作る場合、全体の構成は以下の図のようになります。

質問者からの自然言語による質問はLUIS(Language Understanding Intelligent Service)等を使って解析し、Azure MLやSearch API、Recommendation APIを使って、Storage、DocDB、SQL DBに保持した回答データを検索します。その上でユーザーとのインターフェース部分を、Bot Frameworkに担当させるということですね。

さらに、Cognitive Servicesにはこれらの仕組みをコーディングなしで自動生成してくれるサービス「QnA Maker」も用意されています。もちろん自動生成なので用途によって向き不向きはありますが、ボットサービスのイメージを簡単につかむことができますので、興味のある方は自社のFAQのデータを使ってボットを作ってみるとよいでしょう。

https://qnamaker.ai

大森氏は、AIをボットサービスに応用するメリットについて、「ユーザーが使い慣れたツールに対応できること」「基本的に1:1のコミュニケーションなのでパーソナライズがしやすいこと」などを挙げます。若者や主婦層ならLINE、ビジネスマンならSlackなど、ふだんから利用しているツール上のサービスならエンドユーザーにとっても利用しやすいですし、ユーザー個々との会話から収集したデータによって応答を変えるようにすれば、ボットそのものをユーザーの特性に合わせてカスタマイズしていけます。特殊なボットでなければ、Cognitive Services,Bot Frameworkを利用することで簡単に作れそうなので、まずは社内向けの簡単なツールや個人的なツールとして作ってみると面白そうだな、と感じました。

今回行った勉強会:NSStudy
https://nsstudy.connpass.com/
勉強会の主催企業:株式会社ネクストスケープ
http://www.nextscape.net/

原稿: 鶴田展之
qnote代表取締役。オープンソースソフトウェアを用いたシステムインテグレーション及びコンサルティングの傍ら、技術書を中心に多数の著述活動を行う。
なお、オフィスには7匹の猫がいる。

NSStudy 11 機械学習とBot・Cognitive Services

この記事はどうでしたか?

おすすめの記事

キャリアを考える

BACK TO TOP ∧

FOLLOW