Microsoft Cognitive Services

はじめに

日本マイクロソフトの大内山です。このページでは、マイクロソフトの人工知能サービスの一つであるMicrosoft Cognitive Servicesをご紹介します。といっても、いわゆる製品紹介だけではなく、その背景にある昨今の"人工知能ブーム"、および、"マイクロソフトの人工知能に対する方針"なども併せてご説明します。

人工知能ブーム

本ブログを執筆している2016年11月現在、人工知能は第3次ブームの最中であると言われています。このブームは、ビッグデータブームからの機械学習ブーム、そして2012年ごろから急速に注目されたディープラーニングブーム、そういった複数のムーヴメントに支えられながら徐々に形成されていったものと考えられています。そして現在では人工知能の研究成果や企業の人工知能ビジネスなどに関するニュースが連日伝えられるくらいにまで拡大し、かつ、世の中に浸透してきました。

さて、「ブーム」というとその終焉が気になるのは私だけでしょうか。第1次ブームも第2次ブームもその後必ず冬の時代が到来しており、それまでの盛り上がりが嘘だったように沈静化しています。第3次ブームにも同様の事象が起こり得るのでしょうか。少しネガティブな話題ですが、人工知能の利用を検討するうえでは意識しても良い情報でしょう。

この問いに対しては、人工知能学会が出版している「人工知能学会誌 2016/5 Vol.31 No.5」内の記事においてヒントとなる記述がありますので抜粋かつ要約した内容をご紹介します。

”人工知能の第2次ブームはルールベース技術を中心に盛り上がったが、技術を生み出す側がそれを利用する側よりも盛り上がってしまったことがブームの終焉を引き起こしたと考えられる。

一方、第3次ブームも機械学習やディープラーニングといった技術が先行しているように見えるが、それらを容易に利用するための基盤(H/W、S/W)が充実してきている。したがって、技術を生み出す側よりも利用する側の方が盛り上がっている状態とも言え、今後ブームがシュリンクするというよりは、偏在化していくのではないかと考えられる。”

この記事からは、少なくともブームがシュリンクし消失するようなことにはならないことが期待できます。"偏在化"という言葉が出てきておりますが、どの領域において人工知能が生き残れるのか?、それを見極めるための試行錯誤が現在あらゆる分野で行われている最中です。そしてこの試行錯誤が続く限り、ブームの熱が冷めることはないものと言えるかもしれません。

マイクロソフトが考える人工知能

さて、マイクロソフトは人工知能をどのように考えているのでしょうか。その答えは2016年9月26~30日にアトランタにて開催されたMicrosoft Igniteにて提示されました。(Microsoft Igniteの各セッションは下記サイトにてオンデマンド動画が公開されております。)

Igniteでは、CEOのSatya Nadellaから“Democratizing AI” (AI の民主化) という表現でその方針が示されました。これが意味することは、人工知能 がもっと一般的に利用され、身の回りのあらゆるITサービスで使われる状況になることです。つまり、より利用者視点に立って、かつ、より利用者に寄り添うような人工知能サービスを世に展開していくことを意味しています。前セクションにて、人工知能第3次ブーム継続の要として、"技術を生み出す側よりも利用する側が盛り上がること"、という内容をご紹介しましたが、“Democratizing AI”もまさに同様に利用者ファーストなコンセプトだと言えます。

技術的な側面に着目すると、この“Democratizing AI”は4つのテクノロジーグループによって支えられています。

  1. Agent・・・ユーザーとのUI部分
  2. Application・・・情報を活用、洞察を得る、次の一手を提示する部分
  3. Services・・・いわゆる頭脳に相当し、情報の分析や解析を行う部分
  4. Infrastracture・・・アプリケーションやサービスを支えるプラットフォームとしてのクラウド

ここで特に注目したいのは「3. Services」です。このグループには、具体的には、Azure Machine Learning、Bot FrameworkなどAIアプリケーションを開発するための重要なサービス群が属しており、このページでご紹介するMicrosoft Cognitive Servicesも同グループに属しております。

それでは、(前振りが長くなってしまいましたが)Microsoft Cognitive Servicesを次のセクションよりご紹介します。

Microsoft Cognitive Servicesとは

Microsoft Cognitive Services(旧称:Project Oxford)は人間の認知機能をモデル化し、そのモデルをAPIとして提供しているサービス群の総称です。(認知機能とは、視覚や聴覚といった外部のモノを判別するための能力を指します。)本サービスは、主にディープラーニング技術による既に完成されたモデルをAPIとして提供していることからSaaS型のサービスとも言えます。つまりユーザーは、ディープラーニングエンジンを用意したり、アルゴリズムを実装したり、膨大なデータを与えて学習させたり、、、といった従来の構築作業を省略し、利用すること(つまりアプリケーション部分)に注力できます。

本サービスの特徴は大きく下記の3点です。

  • 容易性
    • サービスはすべてREST APIとして提供されています。したがって、サービスの呼び出しも簡単ですし、既存のシステムへの統合もシンプルに達成できます。
  • フレキシブル
    • 前述したようにREST APIであるが故、HTTPリクエストを投げられ、HTTPレスポンスを受けられる言語であれば何でも使用できます。
  • 実績
    • マイクロソフトの各分野(リサーチ部門、Bing、Azure Machine Learningなど)のエキスパート達により開発されています。充実したドキュメントやサンプルも提供しており、コミュニティサポートも行っています。

中でも特筆すべきは「実績」です。Microsoft Cognitive Servicesの多くのAPIで使用されているディープラーニング技術について、マイクロソフトはImageNetが開催するコンペILSVRC2015にて、エントリーした5分野すべてで1位を獲得しました。こうした、研究実績に裏打ちされた世界最高峰の技術をお手軽に利用できることこそがMicrosoft Cognitive Servicesの意義であります。

Microsoft Cognitive Services API一覧

Microsoft Cognitive Servicesは複数のサービス群の総称であると書きました。ここでは、どういったサービスが含まれているかを一挙にご紹介します。

まずサービスは大きく5つのカテゴリに分類されます。

  • Vision・・・画像や動画に含まれる情報の抽出、顔認識、表情分析
  • Speech・・・音声入力/出力、話し手の識別、翻訳
  • Language・・・言語識別、文章解析からのニーズ推測
  • Knowledge・・・知識DB (Web、学術情報、内部データなど) を使った分析~予測
  • Search・・・Webにあるページ/画像/動画/ニュース などの情報を収集 (Bing)

では、各カテゴリごとにどういったサービスの内容を見ていきましょう。

Vision

  • Computer Vision
    • Analyze Image:画像または動画の内容をタグや記述形式で返してくれます。アダルトコンテンツ判定なども行えます。
    • OCR:画像の中の文字列を読み取り、テキストとして返してくれます。日本語対応。
    • Thumbnail:画像の内容に応じて数パターンのサムネイル画像を自動生成してくれます。
  • Content Moderator
    • コンテキストに応じて独自のルールやポリシーのセットを適用し、問題を含む可能性のある画像やテキストのコンテンツを自動的に検出できます。
  • Emotion
    • 画像または動画の中の人物の顔の表情から、感情(喜び/驚き/悲しみ/怒り/恐れ/嫌悪/軽蔑/中立)を読み取ります。
  • Face
    • Face Detection:画像または動画の中の人物の顔を識別し、そこから年齢や性別などを予測して返してくれます。
    • Face Verification:二つの人物が移った画像を比較し、それが同一人物であるか否かを検証します。
    • Face Identity:複数の顔画像の中から特定の顔にマッチする画像を検索します。
  • Video
    • Stabilizer:動画の揺れを自動補正します。
    • Detect Motion:動画中の動くものを検知します。(監視カメラなどでの利用が考えられます。)

Speech

Language

  • Bing Spell Check
    • スペルチェック、および、是正をしてくれます。また、ちょっとした文字の欠損やスラングなども正しいものに変換してくれます。(注:2016年11月現在 日本語未対応)
  • Language Understanding Intelligent Service (LUIS)
    • 自然言語認識により、文章から文意やキーワードを抽出します。日本語対応。
    • 専用サイトが用意されています。
  • Linguistic Analysis
    • 自然言語解析により、文章の構造を解析してくれます。(注:2016年11月現在 日本語未対応)
  • Text Analytics
    • 言語判定:文章がどの言語かを判定してくれます。日本語対応。
    • キーフレーズ抽出:文章から主要ポイントとなるフレーズを抽出します。日本語対応。
    • トピック抽出:複数の文章から共通的に話題となっているフレーズを抽出します。
    • ポジネガ分析:文章の内容がポジティブなのかネガティブなのかを検証します。(注:2016年11月現在 日本語未対応)
  • Translator
  • Web Language Model
    • 文章から関連性の高いキーワードを抽出します。
    • ある単語に続く言葉を推測して返してくれます。
    • 単語間を適切にスペースで切ってくれます。

Knowledge

  • Academic Knowledge
  • Entity Linking
    • 文章中の文脈に応じて同一のキーワードであっても異なるエンティティにリンクをします。(注:2016年11月現在 日本語未対応)
  • Knowledge Exploration
    • 構造化データに対して自然言語でのインタラクティブな検索をできるよう支援します。
    • 別途、Knowledge Exploration Service SDKをダウンロードする必要有。
  • Recommendations
    • ユーザーの商品に対する評価データ、および、商品マスタをアップロードして、モデルを構築することでお手軽に商品レコメンデーションの機能を構築できます。
  • Bing Autosuggest
    • 検索キーワード入力時の入力支援、または、関連ワードの推定をします。
  • Bing Image Search
    • 様々な検索パラメータを使用して、画像の検索を行えます。
  • Bing News Search
    • ニュース記事を検索します。
  • Bing Video Search
    • 様々な検索パラメータを使用して、動画の検索を行えます。
  • Bing Web Search
    • Web検索を行えます。

Microsoft Cognitive Servicesの始め方

下記サイトにて、使用したいAPIの無料版(Try for Free)、または、有料版(Buy on Azure)のボタンを押下し、手続きを行ってください。(有料版の使用にはAzureのサブスクリプションが必要です。)

https://www.microsoft.com/cognitive-services/en-us/pricing

Microsoft Cognitive Servicesを利用するプログラムサンプル

Microsoft Cognitive Servicesには豊富なSDKやサンプルコードが用意されています。下記サイトをご覧ください。

Microsoft Cognitive Services - SDKs & samples, https://www.microsoft.com/cognitive-services/en-us/SDK-Sample

また、最近は特にFaceなどのVision系サービスやLUISなどのLanguage系サービスをMicrosoft Bot Frameworkと連携して使用するのをよく見かけます。こちらについても下記サイトにサンプルコードがありますので、ぜひご覧ください。

Microsoft Tech Summit 2016 ~ Bot Framework と Cognitive Services による AI の民主化, https://blogs.msdn.microsoft.com/bluesky/2016/11/10/tech-summit-2016-bot-framework-cognitive-services-ai/

Tips

このセクションでは、Microsoft Cognitive ServicesのTipsを紹介します。SaaS型サービスであるが故、サービス自体の内部構造は意識せずにすみますが、使用するうちに細々とした疑問点が出てくるのではないでしょうか。そのような疑問点に少しでも応えることが目的です。

(注:本セクションは随時追加・更新します。)

  • Microsoft Cognitive Servicesはどこのデータセンターで動いているのか?
  • Face APIやCompute Vision APIなど、画像解析系のサービスに画像を入力(アップロード)すると、それらの画像はサーバ上にどの程度保管されるのか?
    • 通常、画像データはサーバ上に24時間残存した後、自動的に削除されます。ただし、例えばFace APIのFaceListなどアップロードされた画像を永続保管する機能もあります。なお、FaceListに関しては、登録画像の削除処理を実行すると、即座に画像は削除されます。
  • Face APIのVerificationについて、横顔の画像などはサポートされるのか?
    • Face Verificationのアルゴリズムは基本的に正面を向いた顔を前提とします。ただし、正面から30度ほど傾いた状態も検知可能です。従って、"横顔"の定義にもよりますが、いわゆる真横を向いた状態では顔として認識しない場合もあります。
  • Face APIのVerificationについて、同一人物の"真顔"とそれ以外の表情(例えば"力んだ顔"など)は正常にマッチングされるか?
    • 現在のアルゴリズムではそういったシナリオが確実に成功するか保証できないというのが実情です。こちらはユーザーサイドでサンプル画像等を用いて様々なパターンを試行されること推奨します。
  • Compute Vision APIのOCRはどういったところに記載された文字が前提となっているのか?
    • OCRは基本的に文書や書類に印字された文字を読むことを前提としています。これ以外の媒体に記載された文字に関しては読み込むことを保証できません。手書き文字に関しても保証はできません。

参考リンク