motolog

Everything I love in my life.

【入門】文系マンに捧ぐ!機械学習の基本の「き」を学ぶための地道な3ステップ

f:id:show_motto:20180320000418p:plain

人工知能、AI、機械学習といったワードがバズワードかのように飛び交う昨今ですが、文系マンからすると、正直さっぱりですよね(汗)

僕自身、1年程前までは、さっぱりな状態でした。そして、今もめちゃくちゃ詳しいわけではありません。ただ、色々と勉強する中で、「さっぱり分からない」→「ちょっと分かる」にはなれた気がします。

そんな「ちょっと分かる」状態でこのような記事を書くのは中々おこがましくもあるのですが、それでも書くことにしたのは、文系マンにとって「ちょっと分かる」の価値は、ちょっとどころか大いにあると思っているからです。

今後、様々な業種業界でAIや機械学習が当たり前のように使われるようになっていく中で、データサイエンティストとビジネスサイドの橋渡しとなる人材のニーズは高まっていくはずです(この記事ではそのような人材を「トランスレーター」と呼んでいます)。そうなった時に、「ちょっと分かる」と大いに役立つのでは、という話です。

f:id:show_motto:20180320001124p:plain

というわけで、本記事では、機械学習が「ちょっと分かる」レベルの筆者が、文系マン向けに、人工知能・機械学習分野をどう勉強していったら効率がよいのか、自らの経験を元に書いていくことにします。

まずは前提から

このような勉強法の記事を書くと、まず問われるのが「あなたのバッググラウンドは?」という疑問。

事前にお答えしておくと、

  • 某国立大学の経済学部卒業
  • 数学は文系にしてはできた方
  • プログラミング経験は学生の頃にちょろっと
  • 今はアドテクの事業をやっている人

という感じです。

アドテクという業界は、まさに機械学習の最前線でして、膨大な広告配信データやユーザーの行動データを元に機械学習によって様々な予測やリコメンドが行われています。

そのような環境の中で、プロダクトを見る立場の自分は、最低限の知識は持っている必要がある、というモチベーションで勉強をし始めました。

【ステップ1】全体像・何ができるかを知る

f:id:show_motto:20180320001709p:plain

「機械学習について勉強しよう!」となった時に、まず知るべきはその全体像です。これはどの分野についても言えることですが、敵を知れば道筋が立てられるもの。

f:id:show_motto:20180319180305p:plain

機械学習とよく混合される言葉として、人工知能(AI)やディープラーニングというワードがありますが、それらの関係性はざっくりこのような感じ。

人口知能の定義はかなり広いです。たとえば、簡単な例でいうと、エアコンで「部屋の気温が30℃以上になったら冷房をかける」というシンプルな If 文も人工知能の範疇です。一方で、画像から特徴を自ら認識・検出し何が映っているのかを言い当てる、といった高度なことも人工知能に入ったりします。

詳しくはこの記事が分かりやすいので、気になる方は読んでみてください。

leapmind.io

おすすめの書籍

実際どんなことができるのか?どのようなことが既に起きているのか?を知る上では、書籍でよくまとまっているものがあるので、そちらを読んでみるとよいでしょう。個人的におすすめな本を紹介していきます。

人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書)

人工知能は人間を超えるか ディープラーニングの先にあるもの (角川EPUB選書)

人工知能本のバイブルとも言える本。迷っているなら一旦読んでおきましょう。著者の松尾先生は業界内では知らない人はいないという存在。ちなみに、松尾先生の研究室「松尾研」からは、Gunosy や PKSHA Technology 等、急成長を遂げている企業も多数輩出されています。有無を言わさず、まずは読んでおくやつです。

戦略的データサイエンス入門 ―ビジネスに活かすコンセプトとテクニック

戦略的データサイエンス入門 ―ビジネスに活かすコンセプトとテクニック

  • 作者: Foster Provost,Tom Fawcett,竹田正和(監訳),古畠敦,瀬戸山雅人,大木嘉人,藤野賢祐,宗定洋平,西谷雅史,砂子一徳,市川正和,佐藤正士
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2014/07/19
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログ (6件) を見る

ビジネス活用事例で学ぶ データサイエンス入門

ビジネス活用事例で学ぶ データサイエンス入門

「人工知能をビジネスにどう活かすのか」という視点では、これらの本が参考になります。

これらの本では、データサイエンス(=人工知能や機械学習などを用いてデータから何らかの結論を導出すること)によって、実際ビジネスの現場でどのようなことができるのかについて学ぶことができます。

二冊目については、「R」というデータ分析や統計に強いプログラミング言語が登場します。コード部分については、一旦飛ばし読みで内容だけ把握するような読み方でいいかなと思います。

データ分析の力 因果関係に迫る思考法 (光文社新書)

データ分析の力 因果関係に迫る思考法 (光文社新書)

さらに、ビジネス的な視点でいうと、こちらの本も勉強になります。

「データを見てどう判断するのか」にフォーカスした本です。因果推論とよばれる分野なのですが、因果を考慮せずに判断してしまい適切な意思決定ができないというケースは、そこら中に転がっているものです。一度この本を読むことによって、データから判断する際の着眼点や、そもそも検証する上でどのような環境を用意すべきなのか等が分かるようになります。

機械学習も結局はどうデータと付き合うかが根本で大事なはずなので、このような本でデータとの向き合い方について学んだおくことは大事かなと思います。

おすすめのスライド

スライドでいうと、PFN海野さんのスライドがとても勉強になります。一例として、こちらを見てみてください。

こちら以外にも勉強になるスライドをいくつも上げてくださっているので、時間があれば見てみるとよいでしょう。

【ステップ2】Pythonを学ぶ

f:id:show_motto:20180320002033p:plain

次のステップにいくために、ある程度コードを読める&書けるようになっておく必要があります。昨今の機械学習界隈では、ライブラリも豊富な Python(パイソン) が使われることが多いので、Python を身につけていくことを考えましょう。

「え、プログラミングとか無理ゲー…。」

という方も多いかもしれません。

しかし、今は良い時代です。厚い本を読まなくても、ウェブ上で簡単に楽しく学べるサービスが出てきています。ここでは代表的な日本のサービスを2つ紹介します。

Aidemy(アイデミー)

Aidemy は、AIプログラミングに特化したオンライン学習サービスです。「AIプログラミング特化型」ということで、Python についても、基本的な文法から関数やクラスまで、基礎的なところを解説してくれています。

その後の機械学習周りを学んでいく上で必要な部分に絞っているため、短時間でコースを終えることができます。プログラミング学習というと様々なルールがありどこまでやればよいのか分からず挫折してしまうという人もいるかもしれませんが、Aidemy では必要な部分のみに絞ってくれているため、テンポよく進めることができるでしょう。

f:id:show_motto:20180320003615p:plain

ちなみに、画面はこのような感じです。

2018年3月までは全コース無料ですが、4月以降については有料化されるとのことなので、今のうちにいっぱい学んでおきましょう。

aidemy.net

Progate(プロゲート)

続きまして、Progate です。こちらは、AIに限らず、プログラミング全般のオンライン学習サイトです。

プログラミング言語のうちの1つとして、Python のコースがあります。ちなみに、Python は、データ分析周りでの利用の他に、Django というウェブサービスを作る上で便利なフレームワークがあるなどウェブサービスの実装等にも利用することができます。

Progate のコースでは、Aidemy よりボリュームが多く、AIプログラミング以外での利用も想定されて作られていることが分かります。Aidemy をやってみて、もっと Python について知りたいという人は見てみるとよいかもしれません。

f:id:show_motto:20180320004026p:plain

画面はこんな感じです。Aidemy よりも UI/UX は優れている印象です。アプリもリリースされていたので、ちょっとしたスキマ時間や通勤時間に学習するといったこともできそうですね。

prog-8.com

Aidemy と Progate どっちからやる?

最近、Aidemy 代表の石川さんがこのようなツイートをされていました。たしかに、文系マンに最初から Aidemy は難しいかもしれません。やってみて難しそうな場合には、一旦 Progate で修行をするという手順にしてみるとよいでしょう。

【ステップ3】実際にコードを書いてみる

機械学習の全体像とそのビジネスインパクトを知り、Python の基礎を学んだところで、ようやく機械学習に関するコードを書いていきましょう。

「文系マンでそこまで必要なのか?」という疑問はたしかにあります。

ここは自論になるのですが、ウェブサービスやアプリを作る時も同様で、簡単にでもいいから一度自分でやったという経験は、思考を展開する上で重要であると思っています。これは自分の経験から思うことです。

少しでも経験したことがあれば、建設的な議論もできるようになりますし、その分野を本当にマスターしている人に対して心底リスペクトするようになります。これらはチームとしてうまく機能させるために、大事なんじゃないかなと思ったりします。

どんなコードを書くの?

機械学習には様々な学習モデルがありますが、それに呼応する形でライブラリも用意されています。どのように学習が行われるかを確認する上では、一度ライブラリなしで実装してみると非常に勉強になりますが、正直文系マンにとっては too much な感じもします。

そこで、オススメしたい方法は、各学習モデルを理解しそれぞれライブラリを利用して一度動かしてみることです。

おすすめのサービスと書籍

Aidemy(アイデミー)

はい、また出てきました Aidemy(アイデミー)。別にお金はもらっていません。良いサービスだと思うから紹介しています。

Aidemy では、scikit-learn(サイキットラーン)等のライブラリを用いて容易に学習モデルを動かしてみることができます。「容易にできる」というのは1つポイントです。

f:id:show_motto:20180327145714p:plain

書籍でやろうとすると、コンソールの操作であったりパッケージのインストールであったりと、モデルを動かすことに付随して必要な「ベース」となる設定のようなものがいくつか必要です。初心者はそこで引っかかりがちなのですが、そうなると大抵モチベが急降下してしまいます。

その点、Aidemy のようにウェブ上で仮想コンソールを用意してくれていると、学びたいことにフォーカスできて効率がよいというわけです。

ちなみに、アメリカには、DataCamp という Aidemy の元といえるようなサービスがあります。こちらのほうが、前述のR言語もあったりとコンテンツは豊富なので、英語が分かる人はこちらを使うのもありでしょう。一旦は Aidemy でいい気もします。

www.datacamp.com

書籍『実践 機械学習システム』

書籍でいうと、こちらの本がおすすめです。機械学習の基本的なモデルについて、コード実装例と共に解説してくれている本です。

実践 機械学習システム

実践 機械学習システム

Python のコードは Github で公開されているので、解説を本で読んで、コードについては Github からコピペして自分の環境で動かしてみるという感じでいいかなと思います。

github.com

個人的には、ニュースを K-means でクラスタリングしてってあたりとかは実際に動かしてみて面白いなと思いました。なんとなくの感覚が掴めます。

仕事ではじめる機械学習

仕事ではじめる機械学習

あと、最近出たこちらの本も評判が良いので、見てみるとよいかもしれません。僕はまだ手を付けられていませんが、入門書的な立ち位置なのでこちらからやってみるのもありでしょう。

数学が分からない場合は?

f:id:show_motto:20180327152715p:plain

機械学習分野を勉強していると、必ずぶつかるのが「数学」の壁。

文系マン的にはキツイですよね。シグマとか偏微分とかベクトルとか行列とか、、いかがお過ごしでしょうか?

ここについては、自分としても一度きちんと時間とって勉強し直さないとなと思っているのですが、まとまった時間がとれておらず、不十分だと感じています。ただ、理解を深めるためには必要です。

一応自分が「やったこと」と「これからやろうとしていること」を書いておきます。

なるほど高校数学 ベクトルの物語―なっとくして、ほんとうに理解できる (ブルーバックス)

なるほど高校数学 ベクトルの物語―なっとくして、ほんとうに理解できる (ブルーバックス)

まず、このような漫画で分かる系の本をいくつか買って読んでみました。高校数学レベルでも概念忘れていたり、当たり前の法則を忘れていたりしたので、まずはここからと。

悪くはないのですが、これだけだと足りないので、これから手を付けようとしているのが、次の本。

Pythonからはじめる数学入門

Pythonからはじめる数学入門

これはチーム内のスーパーエンジニア氏からおすすめしてもらったものです。「Python に慣れる」と「数学を学ぶ」を並行して進められる本ということで、Python の基礎が分かっている人で数学を学びたい人にはきっとピッタリの本となるでしょう。

まとめ

久しぶりに長文のまとめ記事を書いてみました。いかがだったでしょうか?

学習法は人それぞれですが、何らかの参考になったら嬉しいです。

最後に1つ付け加えるとすると、なんだかんだ「環境」は大事です。自分はアドテクというまさに機械学習を使う業界におり、周りにはその分野に精通している人たちがいます。そして、部署内では「実践機械学習ゼミ」、チーム内では「アルゴリズム勉強会」といった学びを促進してくれる活動があったりします。

その中で、自分で学習するのと並行して、「すぐに人に聞くことができる」&「すぐに学んだことを実践することができる」というアクションを行うことができたのは、最高の環境であったように思います。

というわけで、そんな環境にも興味がありましたら、ツイッターでお声掛けください。僕もまだまだこれからなので一緒に学んでいければと思います。

↓筆者のツイッターはこちら

© 2018 Motoki Yoshida