「仕事ではじめる機械学習」を読んだメモ

書籍をレビューさせていただいたご褒美に「仕事ではじめる機械学習」を電子的にご恵贈いただいたので、(レビューでひと通り読みはしたが、いま一度) 読んでみたメモというか個人の感想を残しておきます。

ソフトウェアエンジニアとして機械学習と付き合う

ソフトウェアエンジニアという立場で「機械学習」と接すると、機械学習の「理論的・技術的な面白さ」を味わったり「機械学習によってなにか凄い結果が得られるんじゃないか?」といった期待を持つと同時に、「どうやってプロダクションのシステムに組み込むのか?」とか「はたしてシステム的かつ精度的に安定して運用できるのか?」といったエンジニアリング面の悩みに苛まれることになるかと思います。

さて世の中に出回っている機械学習関連の書籍を俯瞰してみると、かの「機械学習プロフェッショナルシリーズ」のように理論寄りの書籍もあるものの、多くは特定の機械学習ライブラリ / フレームワークの活用方法について書かれた書籍やデータサイエンティスト向けの書籍などで占められている印象を受けます1。そして、ソフトウェアエンジニアにとって関心があるであろう、先に挙げたような Real-World なシステムへの組み込みであったり運用の観点で書かれた書籍はあまり見かけないように思われます2

アプリケーションコードを主に書くソフトウェアエンジニアにとっては、機械学習ライブラリやフレームワークの使い方なぞなんとなく要領さえ掴めればどうでもよく3、また具体的な機械学習アルゴリズムも理論レベルで理解したいのではなくて極論を言ってしまえばアルゴリズムの特性さえ理解しておいてあとはブラックボックス的に利用すればいい4、すなわち「機械学習は目的を達成するための手段の一つに過ぎない」と考えていることでしょう。

そういうわけで、有賀さんの エントリ にもあるように、

実際仕事で機械学習のプロジェクトを進めるときはどうすればいいんだろう?

という悩みを持っているソフトウェアエンジニア5 こそ、まずはじめに この書籍「仕事ではじめる機械学習」を読むといいんじゃないか? と思うのでした。

この本を読んで得られるもの

この本を読むことで「機械学習を利用した機能を (プロジェクトが立ち上がってから) システムに組み込むまでに 何をしなければならないのか?」とか「システムに組み込む際には、どのような構成がありうるのか?」といった知識を身につけることができるかと思います。

一方で「整形されていないログとかはあるんだけど、ここから特徴エンジニアリングをどうやればいいの?」とか「リアルタイム予測に耐えうるような予測モデルと特徴ベクトルってどうやって作ってどこに保持すればいいの?」とか「コールドスタート問題は結局どうやって乗り換えればいいの?」といった具体的かつ詳細な実現方法をこの書籍で身につけるには、ちょっと難しいかと思います。

まとめ

今回は、ソフトウェアエンジニアの観点で「仕事ではじめる機械学習」についての個人の感想を綴ってみました。

とりあえず、機械学習そのものの知識の有無に関わらず「お仕事で機械学習を活用した機能をシステムに組み込む必要が出てきそうなんだけど、どうしたものか…」と悩む人はまず手に取ってみてはいかがでしょうか?


  1. 個人の感想です。 

  2. 個人の感想です。なくはないと思うのですが、機械学習関連の書籍をすべて読んでいるわけではないので把握できてないだけです。 

  3. 個人の感想です。時間・空間効率的に最適な処理を実現するには、実装レベルで理解をしておく必要があります。 

  4. 個人の感想です。当然ながら、理論レベルで理解していることに越したことはないです。 

  5. 個人の感想です。書籍の対象読者はソフトウェアエンジニアに限らず、機械学習 (もしくは人工知能ってやつ) を用いて何かしようとしているプロジェクトに関わっている人になるかと思います。