六本木で働くデータサイエンティストのブログ

元祖「銀座で働くデータサイエンティスト」です / 道玄坂→銀座→東京→六本木

クラウド機械学習の進歩で「プラモデルのように機械学習システムが作れる」時代が到来しつつある

こんなブログ・プレスリリースが出ていました。TensorFlowベースで実装されたクラウド機械学習アプリケーション、"Cloud Machine Learning"だそうです。

以前から既に取り沙汰されていたCloud Vision APIに加えて、Cloud Speech APIさらにはCloud Translate APIが使えるようになったということで、学習済みモデルの適用で事足りるというケースではこれらを使えば画像認識・音声認識・自動翻訳は片付いてしまうという話にもなります。またTensorFlowベースということは例えば普通の線形モデルだけでなく、それこそDeep Learningであっても使えるということになるようです(あくまでもプロダクトサイトから読み取った限りの話ですが)。


f:id:TJO:20160324124554j:plain
(Photo via Visual Hunt)


これまでも様々な機械学習クラウドソリューションが各社から提供されてきましたが、Cloud Machine Learningの強みは豊富なデータから作られた学習済みモデルに基づく画像認識・音声認識・自動翻訳がプリセットで提供可能というところかなと。とはいえまだGCPを使ったことのないユーザーも多いのではないかと思われるため、今後もしばらくはクラウドでは先行するAWS, Azureの方がこの辺の機械学習クラウドソリューションでも先行するんじゃないかという気もします。


で、ここからが本題なわけですが。上記のCloud Machine Learningに限らず、また先述の通り既に機械学習クラウドソリューションは色々出ているわけです。Azure MLとAmazon MLはその好例でしょう。



個々の実装が例えばRベースだとかVowpal Wabbitだとか色々ツッコミは来てますが、それでも機械学習のシステム自体を自分で(例えば)PythonJavaはたまたC++などで組まなくても既に実装がクラウド上に置いてあるということの利点は非常に大きいわけです。実際、1年ぐらい前にAzure MLを駆使して機械学習を利用した自動室温予測アプリを作ったという方のブログ記事が出ていたのを覚えてます。

ここではシンプルなNN(多分3層)での回帰を使っておられるようですが、これも例えばCloud MLに置き換えれば一気にDeep LearningとかそれこそCNNとかRNNとか突っ込むことも可能なわけです*1。しかもいちいちTensorFlowとかで組む必要もなく。


というわけで、個人的な印象としては「プラモデルのように機械学習システムが作れる」時代が到来しつつあるのかな、と。昔ならCかC++Matlabあたりでスクラッチからゴリゴリ書くか、少し前ならPythonJavaでスクラッチと一部行列演算などのライブラリ・パッケージを合わせつつゴリゴリ書くか、最近ならsklearnとかChainerとかTensorFlowでコアをサクサク組みつつI/Oや前処理系含めた辺りを手で書いてたのが、いよいよ「全部一気通貫クラウド上で適当にGUIなりDSLなりでつないでいくand/orクラウド提供のAPIを組み合わせていくだけで機械学習システムが出来上がる」ようになる、ということなのだと思ってます。


言い換えると、何かの造形を創るのにかつては材料からそれこそ金属やプラスチックを溶かしたりパテを固めたりするところからやっていたのが、キットの登場で組み合わせればある程度の熟練者でも創れるようになり、ついには「誰でもニッパーさえあれば切り取って組み立てるだけで作れる」プラモデルキットになった。。。そんな進歩といったところですかね。


そうなると、昔のようにゴリゴリスクラッチから書かなければならないのは一部の最先端の機械学習アルゴリズム*2や最適化計画ソルバを使わなければ仕事にならないような現場に限られ*3、それ以外の一般の機械学習「アプリ(システム)」を作るような現場では今後はクラウド機械学習による「お手軽な」開発が広まるんじゃないでしょうか。


実際、今回リリースされたCloud Vision API, Cloud Speech API, Cloud Translate APIという3つの学習済みモデルに基づくクラウドソリューションがあれば、これまで例えば膨大な手間をかけて学習データを集めたりweb上を必死にスクレイピングしたり、はたまたCNNやRNNを使ったり、それこそMeCabを引っ張り出す必要があったような実装の類はこれらのAPIを使うだけで、またAPI同士を組み合わせるだけで簡単に片付いてしまう可能性があります。GIGAZINEの今日付けの記事でも、利用例として色々紹介されているので興味のある方はご覧になると良いでしょう。



もう見たまんまですが、Cloud Speech APIとCloud Translate APIを連携させればGIGAZINE記事中にもあるように「英語でも日本語でもポルトガル語でも話しかけて指示した通りに動くロボット」も作れてしまうわけです。他にも例えばCloud Vision API手書きの英語テキストを認識させる→Cloud Translate APIで日本語テキストに変換してボーカロイド系アプリを使って日本語で音声読み上げをさせる、みたいなことも出来るという。


ちなみにGoogleのみならずMicrosoftも同様の学習済みモデルに基づく機械学習クラウドアプリを以前から提供しており、今後も巨大グローバルIT企業がその莫大な保有データに物を言わせた学習済みモデル+APIをどんどん提供するという流れは続くだろうと思われます。


これまでは「機械学習の理論も数式も深く理解・熟知していて、なおかつスクラッチからコードを書いて組める」ことが様々な意味で機械学習の専門家のステータスとみなされてきたと個人的には思っていますが*4、今後は少なくとも機械学習システム開発の現場では多彩なクラウド機械学習アプリケーションを使い分けて組み合わせて真に新しいものを生み出せるような、豊富なアイデア機械学習の「引き出し」の多い人材が、ガチの専門家に代わって好まれるようになるかもしれません。また、ガチの専門家も手間を考えてクラウド機械学習を活用するようなケースが増えるかもしれません。


僕個人の観測としては、機械学習に限らずある特定の専門分野に特化して深く理解したガチの専門家がクラウドソリューションによって置き換えられていくに従い、データ分析の世界も一種の上流工程やメタレベルでのデザインを担当する「分析アーキテクト」の出番が今後は増えていくのではないかと睨んでいるところなのですが、まだまだ事例も少なくそもそも分析アーキテクトという概念自体がまだ全く確立していないので、この辺の話はまた記事を改めてやろうかと思ってます。

*1:どうでもいいんですが最近のDeep Learning界隈の進歩には取り残されつつあって、DCGANとかそろそろ名前すら知らない派生系だらけで浦島太郎状態です。。。

*2:NIPSやKDDやICMLやACL辺りで発表されたてホヤホヤのやつとか

*3:同業他社と日次レベルで競ってるような現場か、さもなくばガチガチの基礎研究か

*4:その意味で言うと僕は未だに機械学習のド素人ですorz