2015年12月27日日曜日

SVN(Support Vector Machine)を調べたときに役立ったサイトメモ

Support Vector Machineの原理を調べてるときに役立ったサイトを張っておく。

一昔前に一世を風靡した手法だが、まじめにロジックを追うと数学的な知見が結構使用されていた。

どれか一個を見れば、完璧!見たいのは残念ながらなかったが私の場合は下記のサイトをいったりきたりしながら読み込んでいったら大体理解できた。

もちろん、これ以外のサイトも多数見たが、よくわからなかったり、明らかに間違ってたりといった質的にいまいちなサイトも多くあったことを記しておく。


名古屋大学の人が書いた説明
短くまとめられているので、全体像を把握するのに役立った。
付録として掲載されているKKT法の例も有益。

静岡理工大の人が書いた資料
一般的なSVNでは多次元を前提として説明されているので、数式が若干追いづらい。
このサイトでは、入力が2次元であることを前提に説明しているので、論理展開がわかりやすい。
数学的厳密性は気にしてなかったので非常に重宝した。

個人的には、2次元で説明しているために、マージンの距離の求め方が、単に点と直線の距離の距離の公式を使って求めているに過ぎないことがわかり、これのおかげでつまづきが解消された。マージンの距離については、必ずしもそういう説明をしてくれないサイトも多かったんだよね。

産業技術総合研究所の人が書いた資料
一番教科書的に使える資料。ただし、式の展開などはわかっていることが前提でさっくり飛ばしているので、初学には向かない。俗に言うインデックスとして資料するのにお薦めな資料。

海洋大学の人の書いた資料
KKT方について調べるのに役立った。

2015年12月23日水曜日

Deep Learning用のモデルを簡単に作成できるLabellioを使ってみた

本記事は Deep Learning Advent Calendar 2015 22日目の記事です。
AlpacaがリリースしているDeep LeaningのWebサービスにLabellioというのがあります。これを使うと、画像データを与えるだけで、自動的にDeep Learningで学習を行いモデルを作成することができます。モデルはもちろんエクスポート可能であり、著名なDeep LearningフレームワークのひとつであるCaffeに対応した形式でエクスポートすることができます。

学習はすべてLabellioの用意するリソース上で行われるので、自前で用意するのは訓練用の画像データとそのラベルだけでよいという優れものです。
訓練データは自前で用意したものをUploadすることもできますし、とりあえず試したいのであればLabellioが提供するAPIを利用してFlickr/Bingから訓練データを自動的に取得させることもできます。

今回は、Flickrから取得したデータを使ってみました。例としてフルーツの画像分類器を作成してみます。

まずモデル名として"Fruits"と指定します。
そして訓練データをFlickr上から取得するように指定します。

SourceとしてFlickrを指定。
LabelにOrange, Apple, Bananaを入力する。



ラベルの入力が終わったらAddを押す。





ここでNextを押すと学習用の処理がLabellioにenqueueされる。



後はTrainingが終わるのを待つ。
今回の場合は150個程度の訓練データしか使ってないようなので、数分程度で学習が終了した。


学習が終わった後、適当にGoogleで見つけたバナナの画像をこの分類器に与えてみる。




結果が出るまで少し待つ




それ程時間がかからずに結果が出る。
バナナな確率0.6。思ってたより数値が良くないのは訓練データが少ないせいだろうか。
そういえば訓練結果のAccuracyも0.57だった。

もう少しいろいろデータを用意して試してみたいところだ。

使ってみた感触


もはや画像データを渡せばいいだけなので、Deep Learningが何なのかといった知識がまったく不要である。また学習のリソースごと提供してくれているのが非常にポイントが高い。フレームワークはオープンソースで無料なのがいくつも存在するが、学習用のリソースはそうはいかない。

営利目的でしっかりとしたものを作るのならともかく、単に学習を目的としていたり、趣味でちょこっと作りたいときなど、学習リソースの調達はネックになることが多いであろう。

そのなかで学習環境もセットで提供されているLabellioは非常に存在価値が高いといえる。


2015年12月20日日曜日

Courseraの講義資料をダウンロードする方法

Couseraで人気のAndrew Ng氏によるMachine Learningの講義資料をダウンロードする方法のメモ。

なお、このスクリプトはCousera全般に対応しているので基本的にはどれも落とせる様子(未検証)

前提条件

講義資料への正しいアクセス権を持っていること。
つまり、普通にブラウザ経由で講義を見れている人が、オフラインで見たいなどのケースを想定。アカウント持ってないけど、資料を見たいという人は、無料なのでまずアカウントを作ってください。

準備

cousera-dlをインストール。
%> pip3 install coursera
詳細はcousera-dlを見てください。

ダウンロード

%> cousera-dl -u <username> -p <password>  ml-005

usernameとpasswordは、couseraにログインするときに使う、メールアドレスとパスワード。
ml-005はAndrew Ng氏のMachine Learningの識別子。

後はスクリプトが終わるまで待つ。
私の環境では10-20分程度は時間がかかった。