Azure Machine Learning Studio
これはなにか
ウェブブラウザ上でブラフィカルに機械学習パイプラインを構築し、モデルをデプロイすることのできるフレームワーク。
Azure Machine Learning と呼ばれていたものに、いつのまにかStudioがついた。たしかにMachine Learning だけだとあまりに何をやってるのかわかりにくかったから、この名前は妥当なのだろう。
マイクロソフト的にはCognitive Serviceはディープニューラルネット系、Machine LearningはSVMとか決定木とかのアルゴリズム、という切り分けになっているようだ。Machine Learningの方にもニューラルネットは一応あるみたいだけど。
Machine Learning Studio の機能
Machine Learning ではデータの前処理がそれなりに面倒なのだが、それをいろいろなモジュールを並べることで実現できるのが最大のウリ。いわゆるビジュアルプログラミングと言うやつで、プログラムが普通にかける人間から見ると、面倒なだけで何もいいことがないのだけど、できない人にとってはそれなりに有意義らしい。
相関分析とかをExcelでやってるという話も聞くので、それに比べれば遥かに素晴らしい環境だとは言えるだろう。加工したデータの中間状態の可視化もしてくれるので試行錯誤も楽だろう。
ビジュアルプログラミングはデータの前処理などのデータフローを表現するのには適しているが、機械学習全体をのフローを表現すると、矢印がデータというアナロジが破綻している。アルゴリズムからtrainに引いている矢印は一体何を意味しているんだ。個人的には気持ち悪くて仕方がないのだが、それでいいという人がいるのなら仕方がない。
Webサービスとして公開
訓練できたモデルをWebサービスとして公開することができる。スイッチひとつで、予測用のデータフローのからデータ入力用のフォームまで生成してくれる。結果のページはかなりシャビーだが、まあ使える。この公開したWebサービスで発生する計算量の課金がどうなるのかわからないが、まあ、当然提供している側が支払うことのなるのだろう。
所感
ちょろっといじってみた感じではよくできていて、特定の層には有用なのではないかと思われる。にも関わらず使ってるという話を聞かないのは、お試し版への導線が破綻しているからだろう。それなりにこの種のものに慣れているはずの私でも、コンソールを開いて何かを始めるまでに数時間試行錯誤しなければならなかった。Microsoftの人はこのあたりもうすこし真面目に考えたほうがいい。
MS Azure Cognitive Service
マイクロソフトはブランディングがコロコロ変わったり、ユーザコミュニティを作るのがすごく下手だったりするのであまり知られていないような気がするが、機械学習クラウド系ではGoogle Cloud Platformよりもかなり先行している。たぶん。Cognitive Service は機械学習系サービスの総称。
Vision
視覚系のサービス。
Speech
発話、音声認識系のサービス
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 API:Microsoft 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 - 復数の目的のトレードオフをさぐる。
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
有名人の検出
Amazon EC2 Elastic 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 からの呼び出し
PythonのAPIを使う方法も試してみたが、こちらも簡単。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)