Azure Machine Learning Studio

これはなにか

ウェブブラウザ上でブラフィカルに機械学習パイプラインを構築し、モデルをデプロイすることのできるフレームワーク
Azure Machine Learning と呼ばれていたものに、いつのまにかStudioがついた。たしかにMachine Learning だけだとあまりに何をやってるのかわかりにくかったから、この名前は妥当なのだろう。
マイクロソフト的にはCognitive Serviceはディープニューラルネット系、Machine LearningはSVMとか決定木とかのアルゴリズム、という切り分けになっているようだ。Machine Learningの方にもニューラルネットは一応あるみたいだけど。

Machine Learning Studio の機能

Machine Learning ではデータの前処理がそれなりに面倒なのだが、それをいろいろなモジュールを並べることで実現できるのが最大のウリ。いわゆるビジュアルプログラミングと言うやつで、プログラムが普通にかける人間から見ると、面倒なだけで何もいいことがないのだけど、できない人にとってはそれなりに有意義らしい。
相関分析とかをExcelでやってるという話も聞くので、それに比べれば遥かに素晴らしい環境だとは言えるだろう。加工したデータの中間状態の可視化もしてくれるので試行錯誤も楽だろう。
ビジュアルプログラミングはデータの前処理などのデータフローを表現するのには適しているが、機械学習全体をのフローを表現すると、矢印がデータというアナロジが破綻している。アルゴリズムからtrainに引いている矢印は一体何を意味しているんだ。個人的には気持ち悪くて仕方がないのだが、それでいいという人がいるのなら仕方がない。

PythonとR

モジュールをPythonとRで書くことができる。たとえばデータのプリプロセスをするスクリプトをRで書いていたのなら、それをそのまま取り込むことができる。

Webサービスとして公開

訓練できたモデルをWebサービスとして公開することができる。スイッチひとつで、予測用のデータフローのからデータ入力用のフォームまで生成してくれる。結果のページはかなりシャビーだが、まあ使える。この公開したWebサービスで発生する計算量の課金がどうなるのかわからないが、まあ、当然提供している側が支払うことのなるのだろう。

所感

ちょろっといじってみた感じではよくできていて、特定の層には有用なのではないかと思われる。にも関わらず使ってるという話を聞かないのは、お試し版への導線が破綻しているからだろう。それなりにこの種のものに慣れているはずの私でも、コンソールを開いて何かを始めるまでに数時間試行錯誤しなければならなかった。Microsoftの人はこのあたりもうすこし真面目に考えたほうがいい。

MS Azure Cognitive Service

マイクロソフトブランディングがコロコロ変わったり、ユーザコミュニティを作るのがすごく下手だったりするのであまり知られていないような気がするが、機械学習クラウド系ではGoogle Cloud Platformよりもかなり先行している。たぶん。Cognitive Service は機械学習系サービスの総称。

分類

以下の5つに大別される

  • Vision
  • Knowledge
  • Language
  • Speech
  • Search

この内のSearch は既存のBingのサービス群なので、その他4つを調べてみる。

Vision

視覚系のサービス。

  • Computer Vision API : 一般物体認識
  • Face API : 顔の検出、認識
  • Content Moderator: 画像、テキスト、動画のモデレーション
  • Emotion API: 画像中の顔の感情分析
  • Video API: 動画中の物体トレース、動画の手ぶれ補正、動き検出、シーン検出によるサムネイル作成
  • Custom Vision Service:画像認識をユーザのデータを使ってファインチューン
  • Video Indexer: 動画へのインデックスの付与

Speech

発話、音声認識系のサービス

  • Translator Speech API : 音声認識翻訳サービス どのくらいつかいものになるんだろうか。
  • Speaker Recgnition API : 発話者識別サービス 認証につかえということか。これもどのくらい精度がでるんだろう。
  • Bing Speech API : 音声認識、発話サービス 日本語もサポートされている。
  • Custom Speech Service: ユーザ固有の言語モデル、音響モデルを構築しデプロイする事ができる

Language

自然言語処理系サービス

  • Language Understanding Intelligent Service: 音声認識の際に可能な文章を予め指定して効率よく認識しようとしている?
  • Text Analytics API:文章に対して、言語や感情を推定。キーフレーズの抽出も行う。
  • Bing Spell Check API:Spell をチェックして修正してくれる。スラングの指摘もするようだ。グラマーチェックはないようだ。
  • Translator Text API:テキストベースの翻訳API
  • Web Language Model API :スペースがない文の分割、共起確率、条件付き確率、次の単語の予測など。
  • Linguistic Analysis API:文章を解析して構文木を返したりtaggingしてくれたり。

Knowledge

知識処理?

  • Recommendation API:いわゆるリコメンデーションサービス。よく一緒に買われるものや、個々のユーザに特化したリコメンデーションをするらしい。B2C向けに出してるのか。
  • Academic Knowledge APIMicrosoft Academic GraphというWebから抽出したナレッジベースがあり、それに対するクエリをかけるというものらしい。よくわからない。
  • Knowledge Exploration Service:自然言語SQLに変換してクエリをかける?よくわからない。自然言語ではなく、特定のテンプレートを解析しているようでもある。
  • QnA Maker API:ドキュメントから自動的にFAQを構築する?
  • Entity Linking Intelligence Service API:単語の意味を文脈依存で解析
  • Custom Decision Service:ユーザ提供のデータを用いて強化学習を使う、判断を補助する?なんだかよくわからない。。

所感

色々ありすぎてよくわからない。。。機能の粒度もまちまちだし、もう少し整理して欲しいところ。しかし機械学習応用の本命はやっぱりこの手のサービスだよな、という感あり。

Watson API

これはなにか

https://www.ibm.com/watson/jp-ja/developercloud/services-catalog.html

IBMのWatsonといえばJeopardy! のチャンピオンを破ったことで有名になったIBMのシステムだが、今現在のWatsonは、いろんな機械学習アルゴリズム、製品全体をさすブランド名になっている。以前IBMの人と話していて、データをWatsonに投げて分類、とか言っていたので具体的には何が起こっているのかをよく聞いてみたら、単なるSVMのライブラリだったという。。

いまはIBMクラウドサービスである IBM Bluemix 上のサービスとしてWatson APIが提供されていて、RESTで利用できるようになっている。

言語

  • 自然言語分類 - テキストを事前に決められた幾つかの軸で分類
  • 検索とランク付け
  • 会話
  • 文書変換 - wordやPDFからのテキスト抽出?のようだが、ここに含める必要があるか。
  • 性格分析 - なんだこれ。コワイ。
  • 画像認識 - なぜ「言語」のくくりなのか。
  • AlchemyLanguage
  • Language Translator - 翻訳
  • Tone Analyzer 感情分析

分析

  • AlchemyData News - ニュースやブログに対してDBのようにクエリを投げられる?
  • Tradeoff Analysis - 復数の目的のトレードオフをさぐる。

所感

画像認識系には全く力が入っていない。音声認識、合成は頑張っているようだが。。しかし、なんというかIBMAPIサービスに参入するとは時代ということか。しかし AGM3者に圧倒されている気がするが、今後どうすすむのか。おもしろい。

Amazon Rekognition

どういうものか

https://aws.amazon.com/rekognition/

AWSの画像系機械学習サービス。Prime Photosで培った技術で作られているとかで、サービス内容を見てもわりに写真サービスに特化した物が多い。

Object and Scene Detection

画像のなかの物体やシーンを認識。ビーチとかサンセットとか識別できるらしい。

Image Moderation

R18画像などを識別するようだ

Facial Analysis

顔の認識。感情の推定、表情の推定、顔の各パーツの位置の同定

Face Comparison

2つの顔の類似度を計算

Facial Recognition

大量のデータのなかから特定の顔を検索。

Celebrity Recognition

有名人の検出

所感

顔の類似にチカラが入っているのは写真ライブラリを整理するために必要な技術だったからだろう。AzureにもGCPにも今現在この機能はない?しかし、GoogleGoogle Photoで同様な技術を持っているはずだし、Microsoftも持ってないとはおもえないのだが。まあ、そのうち出るのか。

Amazon EC2 Elastic GPU

昨年のイベントで発表されていたものがGAになっちょうだ。ネットワーク経由でGPUをEC2インスタンスからシェアリングするというもの。なかなかすごい技術のような気がするがどうやって実現してるんだろうか。

https://aws.amazon.com/jp/about-aws/whats-new/2017/08/now-generally-available-amazon-ec2-elastic-gpus/

  • 目的はリモートデスクトップアクセラレーション。GPU一台分のパワーは必要ないということなのだろう。とりあえずWindowsでのサポートのみのようだ。
  • 1G, 2G, 4G, 8G とメモリサイズで指定できる。
  • OpenGL をサポート。というかOpenGLのドライバがいろいろ吸収してそう。
  • GPUとの通信は普通にTCPを使っている模様。
  • 1Gだと 1時間0.05ドル。値段とサイズはリニアで 8ギガ 0.4ドル/時

所感

DLとかに使えるのかと思ってしまったが、OpenGLドライバ経由なのでNVIDIA GPUであったとしても無理だろう。しかしネットワークをこみにしてもこの構造で速くなるのか。。びっくり。

Google Cloud Functions

https://cloud.google.com/functions/docs/

知らない間にできてた。名前から言ってもAmazon Lambdaの対抗なのだろう。HTTPリクエストで関数をトリガーするもの。GoogleならApp Engineでも良いような気がするが、App Engineよりもコンテナが軽量なのだろうか。リクエストが非常にスパースで、なおかつリクエストに対するレスポンス時間が問題になるようなものなら優位性があるのか。

基本的にはJavaScriptでしか書けないのかな。Functionの中でなにができるのかよくわからない。
例えばメールを出すとか、HTTPにアクセスするとかできるんだろうか。

サンプルプログラムを見る限り、書き方はほとんどApp Engineのハンドラと変わらない。HTTP以外にもCloud Storage への書き込みをトリガにするとか、pub sub のメッセージに対して起動とかできるようだ。
Promise を返すと言うかたちでも書けるらしい。PromiseというのはFutureみたいなものか。

サンプルを動かしてみたのでメモ

"クイックスタート"に従うだけで、非常に簡単だった。面倒なのはプロジェクトをセットアップして課金を設定する部分で、そこができてしまえば簡単。

特にこのページからJSONで実験するだけなら直ぐにできる。対象となる絵はStorageにアップロードして実行するように書かれているが、HTTPのURLを指定してやるだけで動く。

Python からの呼び出し

PythonAPIを使う方法も試してみたが、こちらも簡単。pipでクライアントライブラリをインストールして、呼び出すだけ。

サンプルコードはローカルファイルをアップロードして処理するように書かれているが、これもURLを直接指定することもできる。

import io
import os
from google.cloud import vision
from google.cloud.vision import types

url="絵のURL"

client = vision.ImageAnnotatorClient()
image = types.Image(source=types.ImageSource(image_uri=url))

response = client.label_detection(image=image)
for label in response.label_annotations:
    print(label.description)

所感

簡単便利でいい。詳細度もかなり高く、自動車の車種や犬の犬種も出て来る。イオタはミウラになっちゃったけど。よっぽど特殊なターゲットを扱うのでもなければ、自前で認識器をトレーニングする意味はどんどんなくなってくるだろうなあ。