今日はTechLab Park!で開催された「機械学習ワークショップ」に参加してきました。
主催は中学高校生向けにエンジニア教育をやっているLife is Tech!さんが行っています。今回は学生向けのイベントで参加費はなんと無料!だったので、試しに参加してみようと思いました。
<機械学習とは?>
人工知能(AI)の1分野として、現在、最も注目を集める技術の1つだそうです。
![]() |
| Siriさん(出典:Apple) |
身近なところではAmazonでのオススメ商品やFacebookでの友達候補を推薦する機能、iOSのSiriなどの音声認識、さらには、Google Carなどの自動運転システムに使われてます。
情報を覚えるほど、人と同じように機械がより質の高い情報を提供出来るようになる為、Webサービスから、様々な情報を解析する際に用いられています。
何故機械学習が重要なのか?TEDでGoogle のラリーページが機械学習について述べています。
![]() |
| 出典:TED |
もともと、「コンピューターはまだ人間のコンテクストを理解出来ないので、理解させるようにしたい」と。
そこでまずは簡単なゲームから始めてみたところ、インベーダーゲームみたいなもので機械プレイヤーに学習させると、ゲーマーがやりこむ以上に完璧にクリアしたり、はめ技を極めちゃったそうです。
これは、色んなことに応用出来るのは、Google Carの実験例でもいえますよね。
![]() |
| 出典:Recode |
あとは、合コンでセンサーをつけると、誰と誰がデートに行くのかを85%の精度で特定することが出来たそうですw(会話の速度、口調とか声の量など)
<どんなワークショップ?>
実際にコードを書いて機械学習のプログラムを作ります。
その際に使う言語はPythonです。(バージョンは、2.7か3.4があります。)
こういう、機械学習系のプログラムは、Pythonがよく使われます。
Pythonをダウンロードするにはこちら
ちなみにMacの方は、始めからパソコンにPythonのプログラムが入っています。
Windowsの方は、ダウンロードしないと利用出来ません。
また、今回のワークショップはまだ機械学習をよく知らない人にとっても簡単に
プログラムが作れるように予め教材が用意されています。
今回使うサイトはこちら
Rekognition API
今回はこちらのサイトのAPIを利用しながら画像認識、顔認識などの機械学習を行っていきます。
<実際何をやっているの?>
こうした画像認識や顔認識は属性認識といいます。画像を観察して、それがどんな画像なのか?誰なのか?どこなのか?何なのか?といった属性を機械に認識させることを指します。
機械学習では、データをN次元上のベクトル上で示されます。例えば、かっこよさを1軸、やさしさを2軸とすると、それぞれのパラメータが8だと(8,8)というベクトルに位置すると考えられます。
また、×と◯の区別が最もし易い(×、◯から一番距離のあるところ)で線引きをすると、うまくどんな条件を満たすと◯で満たさないと×なのかが分かってきます。
データがだんだん増えれば増える程、どんな時に識別出来るかを調べることが出来ます。
しかし、もっと精度よく機械に認識させることも取り組まれていて、人間のニューロンの仕組みを模したニューラルネットワークを用いて使われています。
hw(x)=h(w1x1+w2x2+w3x3+…) wは重み付け xは条件
xの条件をどれくらいの重み付け(w)で認識するのか?を設定すると、より精度よく認識されるようになるらしいです。
Facebook等の場合は、数十万という画像データをぶちこんで画像認識の精度を行っているようです。
<実際にやってみよう>
さて、試しにやってみましょう。
Rekognitionにまずは登録して下さい。
次に、こちらから、Basic API entry URLをコピペして見て下さい!
画像認識
http://rekognition.com/func/api/?api_key={api_key}&api_secret={api_secret}&jobs={jobs}&urls={urls}
API_KEY、API_SECRETは登録したアカウントページから取得、画像のURLは自分が見てみたい画像のURLをコピペしましょう。
こんな感じの結果が返ってきます。
もし、改行されてないごちゃごちゃしたコードになっていたら、ブラウザでChromeを使っている方がいたら、JSON Viewを入れてみて下さい。
また、Pythonを使うとこのような形になります。
import json, urllib2 API_KEY = '' API_SECRET = '' jobs = 'face_recognize' #アルゴリズムの種類,faceやscene_understanding_3 pic_url = 'http://pic.prepics-cdn.com/nakai0818/27014912.jpeg' #解析したい画像のURL url = 'http://rekognition.com/func/api/?api_key=' + API_KEY + '&api_secret=' + API_SECRET + '&jobs=' + jobs + '&urls=' + pic_url r = urllib2.urlopen(url) #URLを開く root = json.loads(r.read()) #結果をロードする print(root) print(root[u'face_detection'][0][u'name'])#類似度の結果を表示
上のコードを例えば、"test1.py"として保存して下さい。
こうしたPythonファイルを実行するには、ターミナルというものを使います。
まずは、ターミナルを開いて見て下さい。特定のファイルがある場所に移動する為には、cd ~/フォルダ名と入力します。
出力されたデータには、設定された様々なパラメータが示されています。年齢とか、画像の特徴とか、そういったことが書いてあります。
コードを書き換えることで、それ以外の要素を認識することが出来ます。
いかがでしょうか?こうした画像解析の技術は様々な分野で応用されそうですね!次回も不定期で更新します。お楽しみに!

















