** Sorry, this note is Japanese only, but please take a look at some code snippets. Hope it helps you.
Apple が Turi という 人工知能・機械学習 のスタートアップを買収するんじゃないか、という観測が報じられています。一般のニュースなどではあまり報じられていないようですが、人工知能 や 機械学習 界隈には目にした方々もいるんじゃないかと思います。
$200M acquisition of Turi proves Apple's dead serious about AI(英語記事)
この Turi という会社は現在 GraphLab という機械学習のフレームワークを提供しているのですが、TechCrunch(英語記事) によると7月末までしかサービスは提供しない、みたいなアナウンスをユーザーにしてたとかなんとか・・・
でも今はまだ、アカデミックライセンスかトライアルとして使えるようなので、ちょこっと試してみました。
Turi とはどんな会社なのか?
Turi というのは人工知能や機械学習、データサイエンスをコア技術とするアメリカ・シアトルをベースとするスタートアップです。
今北産業的にまとめると、
- スタンフォード大学卒, カーネギーメロン大学で教授してた Carlos Guestrin という人が創業
- Amazon のファンドを受けながら GraphLab を立ち上げ、社名を Turi に変更
- Apple の買収観測が報じられる(今ココ)
ということらしいです。
なんでもカーネギーメロン時代に Hadoop とか使って人工知能や機械学習の研究してたけど、Hadoop 特有のプログラミングが面倒くさい、時間かかるわ失敗したらまたかよ、みたいな(そこまで言ってないと思いますが、まぁ苦労はしてたそうです)にウンザリしたことが Turi 起業のきっかけだそうです。
GraphLab とは?
そして、その Turi が提供しているプロダクトの一つが、GraqhLab で、機械学習でよく使うデータ処理やアルゴリズムを機能をパッケージ化したものになっています。言語は今のところ Python のみ。乱暴に言えば、pandas と scikit-learn を合体したようなもの、とでもいいましょうか…
しかし、それだと scikit-learn で良いじゃないか、という話になるわけですが、このGraphLab の特徴は、主要なクラウドサービスを用いた並列化に対応していることで、Python のコードからカンタンに分散データ処理をクラウド上で走らせることができるようです。
このあたりは Distributed TensorFlow に似ているのかもしれません。
すっごい使いやすいんですけど、本当に外部向けにはサービスやめちゃうんですかね・・・ Apple さんなら外部向けサービスとしてはやめちゃいそうかも・・・
7月末はなんとか乗り切ったようですが、今後も何らかの形で引き続き使えたらいいですね。
Turi のサービスを何はともあれ試してみよう
早速試してみたのですが、なかなか使いやすいです。
いろいろ便利な機能がパッケージされていて、わたしのようなペーペーな初心者にとってハードルが低い。そういう点は TensorFlow とかよりは scikit-learn とかに近いです。
GraphLab のライセンス取得 〜 インストールまで
Turi が提供する GraphLab は完全な無料サービスってわけじゃなくて、アカデミックライセンスを取得する必要があります。
これで金儲けするなよ、ってことですね、わかります。
ライセンスの取得はこちらのフォームから。ちなみに、アカデミックライセンスということですが、無料の学習サービス Coursera の受講者でも適格らしいので、社会人の方々は Coursera の生徒になればいいと思います。
インストールの詳しい手順はこちらの公式サイト(英語)にありますが、
- インストーラーによるインストール
- pip によるインストール
のどちらかを選びます。ここでは pip でインストールする方法でいきます。
ライセンスが取得できる pip 用パッケージの URL がメールで送られてくるので、その URL を元に、
pip install --upgrade --no-cache-dir https://get.graphlab.com/GraphLab-Create/2.1/your registered email address here/your product key here/GraphLab-Create-License.tar.gz
でインストールできます。
あとは、
import graphlab as gl
みたいな感じでちゃんとインストールしたライブラリがロードできるか確認します。
GraphLab による機械学習の流れ
ほぼ scikit-learn と同じで、
データのロード > (必要に応じて)データのクレンジングと変換 > データ使ってモデルを学習させる > 予測 > モデル評価
という感じです。ただ、この流れがかなり自動化されていて、scikit-learn や TensorFlow よりも実際に書かなきゃいけないコードはかなり簡素です。
(もちろん、カスタマイズしたければいろいろできると思いますが)
GraphLab を使った簡単なチュートリアル
では、お約束の iris のデータで簡単な分類をやってみます。
一番 GraphLab が楽チンだと感じるのは、モデル選択のところでしょうか。普通に学習 -> 予測 -> 評価 をするだけで、いろんなモデルを自動的に試して一番成績が良かったモデルをピックアップしてくれます。
そのためのコードは、
こんな感じです。
え、こんだけ・・・?
・・・
ハイ、こんだけです。
gl.classifier.create を実行すると、ざくざくモデルごとの学習状況のログが表示されて、ああ・・・勉強してるなぁ・・・という感じです。
最後に、こんな感じの結果が表示されます。
どうでもいいんですが、SUCCESS: Optimal solution found. という表示を見た時になんだか頼れる男性を見たような気持ちになったわたし。(※本当にどうでもいい)
とにかくこんな感じで超カンタンに複数のモデルで機械学習ができちゃったりします。
・・・!!
だがしかしっっ!これで驚くのはまだ早かった!!
なんと、学習した結果をコマンド一発でもっとわかりやすく表示してくれます。学習後に
model.show()
を実行すると、ブラウザが起動してこんなのが表示されると思います。
ちなみに、
model.evaluate(test_data)
してからもう一度、model.show() すると・・・
f1-score や accuracy といった、モデル評価の指標だけでなく、confusion matrix (混乱?混同行列・・・?でしたっけ)も表示してくれます。
ちなみに、一番初めにデータを格納した、SFrame というオブジェクトも show() メソッドを持っていて、
iris.show()
を実行するとこんな感じになります。この辺りの機能は R の dplyr に近いイメージですね。
GraphLab チュートリアルのまとめ
GraphLab は 機械学習 とか 人工知能とか ディープラーニングとかとか・・・を勉強し始めたばっかりの、初心者に優しい 機械学習 フレームワークでした。
以前書いた TF Learn とかもそうですが、なんだか、機械学習とか人工知能というものがとっても身近になってきてる感じがしますね。
ただ、実装(プログラミング)部分がカンタンになって手間が省ければ省けるほど、より一層専門知識の理解が重要になってくるんだと思います。
Turi で GraphLab を開発した方々から
「めんどくさいコーディングとかはオレたちが便利なプロダクトやサービスを用意してあげるから、みんな本質的なことを学び実務にどう応用するか、を考えることに専念してくれ!」
と言われているような気がしました。
人工知能・機械学習 関連の他の記事
datalove.hatenadiary.jp datalove.hatenadiary.jp datalove.hatenadiary.jp datalove.hatenadiary.jp