フューチャー技術ブログ

技育祭登壇しました。これから機械学習を学びたい方向けへの自分の経験談とおすすめの本、サイトの紹介もします

geeksai_logo

TIGの玉木です。去年の12月までは主に機械学習エンジニアとして機械学習案件を任されていましたが、今年の1月からはITコンサルタントとして業務の幅が広くなりいろいろやっています。

先月技育祭 1と呼ばれるイベントの勉強会という枠で、同僚の上野さんと一緒に「初心者必見! 機械学習エンジニアがあれこれ話します。〜基礎から実社会応用まで〜」というタイトルで発表しました。この記事では技育祭の簡単な紹介と、当日あったこれから機械学習学びたい方向けへの本、サイトの紹介をします。

技育祭とは

公式サイト 1から引用させていただくと、

技育祭は「技術者を育てる」ことを目的としたエンジニアを目指す学生のための日本最大のテックカンファレンスです

とのことです。元2ちゃんねる管理人のひろゆきさんや、東京大学の松尾豊先生など、豪華なゲストの方々が参加され、学生向けにためになる話をしてくれるイベントでした。講演セッションが3つ、勉強会セッションが2つ同時に進み、我々が話した勉強会セッションの裏ではRuby開発者のまつもとゆきひろさん、AtCoder社長のchokudaiさん、株式会社ドワンゴの川上量生さんが話されていました。こんな豪華なメンツが講演している中勉強会きてくれる人いるのかと不安だったのですが、当日は50人超の学生の方々が参加してくれました。

当日の内容

当日の発表スライド_ワクチン開発における教師あり学習

「初心者必見! 機械学習エンジニアがあれこれ話します。〜基礎から実社会応用まで〜」と、かなり抽象的なタイトルで話しました。私は教師あり学習について少し説明したあと、以前ブログに書いたワクチンの話を簡単に紹介し、word2vecなどの事前学習モデルについて説明したあと、それを使った案件への応用を紹介しました。上記の図は当日話したスライドの1部で、自然言語処理のタスクの1つである感情分析の説明をしたあと、ワクチン候補を見つけるのも感情分析と同じ枠組みで解けることを説明している図になります。上野さんは主に画像処理での案件への応用を紹介していました。

当日はチャットが大いに盛り上がりました(書き込んでくれた皆様ありがとうございました! )。よくあった質問が「どうやって機械学習勉強しましたか?」「おすすめの参考になる本などありますか?」という質問でした。その場で口頭で答えたものの、初心者向けの本、サイトを紹介するというのは一定の需要がありそうなので、この記事では

  • 私がどうやって機械学習を学んだか
  • 今ならどうやって機械学習を学ぶか

を紹介しようと思います。これから機械学習関係の研究室に入ってガッツリ学ぶ方向けというよりは、当日勉強会に参加していた、機械学習ちょっと学んでみたいぐらいのレベル感の方に向けてこの記事を書きます。

私がどうやって機械学習を学んだか

私は大学院から自然言語処理の研究室に入り、現職では自然言語処理の案件や、ワクチンの案件に配属されて、機械学習のデータを作ったり、機械学習モデルを作ったりしていました。Kaggleと呼ばれる機械学習のコンペティションサイトではKaggle Expertぐらいの実力です(凄くないです)。
私が入った大学院の研究室はできたばかりの研究室だったこともあり、多くの部分を独学で学びました。最初に参考にしたサイトは、東京都立大学の小町先生が書かれた「自然言語処理を独習したい人のために」「自然言語処理を学ぶ推薦書籍」というサイトです。当時非常に参考になりました。

上記のサイトは私が学生のときにはすでにあり、現在も更新されています。実際に当時私が読んで役に経ったなと思っている本は

の2つです。「言語処理のための機械学習入門」は今はあまり使われないようなモデルも紹介されていますが、大学院で研究をする上での基礎になりました。「Python 機械学習プログラミング」はコードを書いて結果が出るので、その分楽しく読めた記憶があります。本ではありませんが、

  • courseraのAndrew Ng先生の「Machine Learning
  • PFN海野さん、東工大岡崎先生といった方々が公開されている論文紹介の資料
  • 論文

を見たり読んだりして知識をつけました。courseraのAndrew Ng先生の「Machine Learning」は英語に抵抗がなければおすすめします。最近はDeep Learning用の別の講座もできていて、そちらを見るのがいいのかなと思います。かなり時間がかかるのがネックですが、内容はとても良いです。Andrew Ng先生のYouTubeに上がっている授業の方は結構難しいのですが、courseraの授業は易しめだと思います。

実験面や機械学習のコードに関して最も参考になったのが、Kaggleと呼ばれる機械学習のコンペティションサイトです。当時Quora Question Pairsというコンペが開催されており、データや内容に興味があったため参加しました。その後もぼちぼち興味のあるコンペティションに参加し、知見を得ています。またその他に、kerasやchainerのサンプルコードや、論文の実装を参考にして当時は機械学習のコードの書き方を学んでいきました。

今ならどうやって機械学習を学ぶか

今もし1から自分が機械学習を学び直すとしたら、Kaggleでたくさん実験するところから始めると思います。本をただ読むよりも、コードを実際に動かして、実行結果がわかることが自分の好みというのがあります。そのような方に特にKaggleがおすすめできます。Kaggleはある程度データや環境がすでに用意されており、いきなりコードを書き始めることができます。公開されているデータの種類も多岐にわたります。余談ですが、弊社もコンペティションではないですが、データの公開を行っています]。Kaggle上でGPUやTPUも制限付きで使うことができます。参考になるコードや議論も公開されています。Kaggle上に公開されている内容が全くわからないと最初はなると思います。その中でおすすめなのが以下の2つです。

Machine Learning Crash Courseは前述のcourseraの授業に比べて量もそんなに多くなく、最初に学ぶ内容として必要なことが一通り揃っているように思います。
PythonではじめるKaggleスタートブックが出たときすでに自分はKaggleに出たことがあったのでこの本は読んだことがないのに紹介してしまい申し訳ないのですが、本の紹介、レビューを見る限り良さそうだなと思います。当社ブログでも紹介しています

上記2冊に比べて内容は難しくなりますが、

もおすすめします。機械学習モデルの精度をあげる工夫ももちろん載っているのですが、正しくモデルを評価する、データを変換するといった基礎的なことも学べます。実務で機械学習をやっていても、この点難しいと感じることが多いのですが、Kaggleで勝つデータ分析の技術は一通りまとまっていて今でも参考にしてます。

まとめ

技育祭でよくあった質問の「どうやって機械学習勉強しましたか?」「おすすめの参考になる本などありますか?」に対する答えとなる記事を書きました。現在もKaggle上でいくつかコンペティションが開催されているので、機械学習に興味のある方は参加してみてはいかがでしょうか。