6/1 NSStudy No.7 機械学習入門CloudVisionAPI & TensorFlow report に参加してきました!

機械学習とかTesorFlowとか勉強してみたいなーとずっと思っていた所、以下の良いイベントを発見したので、参加してきました:
「機械学習入門CloudVisionAPI & TensorFlow」 #NSStudy No.7

以前、発表者の佐藤さんの別の発表(BigQuery)を聞いたことがあったのですが、とてもわかりやすかった印象があったので、いいチャンスだなと思いました。

今回のイベントは、Build2016に関するLTと、機械学習に関する講演、という内容でした。
ちなみにBuild2016というのはMicrosoftのカンファレンス。

ではでは、以下メモと感想が入り混じったものです。





# LT – Build2016で注目した3つの技術

ネクストスケープ 松永氏

タイトルの3つというのは「CognitiveService & Bot」「Xamarin」「Hololens」でした。

## CognitiverService & Bot

CognitiveService ( https://azure.microsoft.com/ja-jp/services/cognitive-services/ )というのは、Microsoftが持つ深層学習技術を元としたサービスを利用することができるAPIサービス。音声認識とか感情認識とかできるAPIがあるっぽいですね。
こういうAPIって増えていくんですかねぇ。でもベンチャーとかだとリソースの準備とかトレーニングデータの準備とか、提供側に回るには参入障壁が高いかもですね。

Bot については、以下の紹介がありました:
Bot Builder SDK
Bot Connector: SlackとかSkypeに繋ぎやすい
Bot Directory(Coming Soon): Bot の iTunes Store版みたいなやつ

個人的にはまだまだBotってあんまり便利に使えていないんですが、AIが普及してくると、そのインターフェースの一つとしてBotも流行ったりするのかな。

## Xamarin

C# でiOS, Android, Windowsアプリが書けるプラットフォーム。どうやら昔は高かったけど、今回無料になったそうです。
しかもiOS, Android, Windowsアプリ間で75 – 90%のコードが共有できる、と謳ってるそうです。

## Hololens

オキュラスとかとは違って、現実世界に投影するタイプの、マイクロソフトの新しいデバイス。
VR(Virtual Reality)ではなくMR(Mixed Reality)だそうな。なるほど。
工場とか業務で使うことを想定していて、Unityとかで開発できるとのこと。

## 全体の感想

C#を書けるようになると、色んな所に適用できる – スマホアプリ、Webアプリ、3D、MR、…。
前職で、ちょっとC#を読む機会があったんだけど、特に抵抗なく読めたのでC#入って行きやすいかも。

# 講義:機械学習入門「CloudVisionAPI & TensorFlow」

Googleの佐藤さんによる、Googleにおける機械学習にまつわる話や、Googleが提供するAPIの紹介でした。

## 基礎的なお話

まず、ニューラルネットワークとは何かというと、(学習する)関数である、というお話。
色々難しい話もあるけれど、データを入れると、データが出てくる、という意味では関数である。
ニューロンの動きを、ベクトルと行列の計算で模している。

一昔前は、職人のような人間が特徴量の抽出を行っていたが、今は教師用データを大量に用意しさえすれば、あとはコンピュータがやってくれる。

…と、ここで例の紹介として以下のサイトが紹介されました:
な、なんとtensorflowのプレイグラウンドがあるとは…!!
ぱっと見ただけでは使い方が難しいかもですが、実際に操作してもらっているところを見ると、とても面白かったです。
とりあえず↑のサイトにアクセスして、
DATAの右下の渦巻きを選び
FEATURESをx^2_1とx^2_2を増やし
newronsを2回+して6にし
再生ボタンを押してみると、ちょっと面白いかもです。
これをやると、四角のどの位置が青に属すのかオレンジに属すのかを、学習して分類してくれます。

なお、渦巻きや円形のデータとかは非線形なので、1段のニューラルネットワークではうまく解けず、隠れ層を追加してやる必要があるそうで、
隠れ層のニューロンを増やすと、いい感じに分類してくれるとのこと。

で、実際の応用例として、ゲームをスクリプトとか使ってチートしようとしているユーザを検出するのに、複雑なニューラルネットワークが使えるかもしれない、とのことでした。なるほどー。

一方、制約というかなんというか、上記のplaygroundにあったようなパラメータとかは、最適なものを決めるセオリーはまだなく、人間(職人)が決める必要があるそうな。

## Googleでの応用の話

Googleでの機械学習の応用はかなり進んでいて、検索結果のランキングにも、2015年から裏側ではDeepLearningを使っているそうです。
GooglePhotoの画像の分類もDeepLearningを2~3年前から使っているそうです。
DeepLearningベースのOCRは飛躍的に精度が上がってるそうで、元々OCRと縁の深い業界に居た身としては気になるところ。確かにOCRと機械学習は相性良さそう。
Googleでは20を超えるサービスでDeepLearningを使っていて、既に枯れた技術となってきているが、日本では実運用でDeepLearningを使っているところは少ないらしい。ふむふむ。
DeepLearningを枯れた技術って言えちゃうのすごいなぁ。

## Googleが提供するAPIの話

### Cloud Vision API

グーグルが学習済みのモデルを提供してくれる、画像認識API。
このAPIは、その画像に何が含まれているかをラベルで返してくれたり、人の顔を認識して感情を測ったり、ランドマークから場所も推測してくれたりします。すげぇ。
機械学習のスキルは不要。
説明動画もあります:

以下は、このAPIを使ったデモWebサービス。大量の画像を読み込ませて、学習させた結果で分類しているようです。
グリグリして近づくと画像を表示でき、どういう要素がどれくらい含まれてるかとか、写ってる人の感情の度合いとかを表示してくれます。すげぇ。

### Cloud Speech API

こちらも、グーグルが学習済みのモデルを提供してくれる、音声認識API。
リアルタイム処理もバッチ処理もいける。

こちらも、説明動画も有ります:

音声認識を試せるでもサイトも有りました:

### Machine Learning APIs

そんなわけで、Googleは既にいくつかの機械学習を利用できるAPIを提供しています。
今後ももっと増えるかもしれませんねぇ。
そしてこれらは、機械学習の知識がなくても使えます。
…ただ、当然ながら、その分制約を受けます。

というわけで…

### TensorFlow

機械学習の知識があって、提供されたAPI以外の特殊な用途とかに使いたい人には、
TensorFlow
というものがあります。
これは、Googleが提供する、オープンソースの、機械学習を利用するためのライブラリ。
Google社内の機械学習にも基本的にはこれが使われているはず。
このTensorFlowをつかって、きゅうり仕分け機を作ってる人もいるそうです。
ただ、ソフト面で機械学習は使いやすくなっても、個人ではハード面の問題が…と思いきや、
Cloud Machine Learning (Cloud ML)
というこれまたGoogleのサービスが有って、TensorFlowをフルマネージドの分散学習環境で使えるそうな。

すげぇ。

# 感想

ありきたりかもですが、Googleみたいな巨大なところがプラットフォームを提供し、ベンチャーは良いアイディアの実現方法としてそういったプラットフォームを利用する、という構図が進んでいくのかなーと思いました。
でも、アルゴリズムとハードウェアをGoogleが提供してくれたとして、トレーニング部分からってうまくできるもんなのかなぁ。
例えばトレーニングのために非常に大量のデータをGoogleに提供しなきゃならないとなったとき、普通にネットワーク越しに転送するとかでいいんだろうか、それとも他になにか良い方法があるのだろうか。
…なーんてことが気になりましたが、なにはともあれ機械学習面白そうだなぁと思ったのでした。
あとこういう話を聞いちゃうとアカデミックな話をもっと聞きたくなってまう。

コメントを残す

メールアドレスが公開されることはありません。