仕事ではじめる機械学習を読んだ(1章)
今年もおつかれさまでした。読みたかった本を少しずつ読んでます。
この本を読んだ動機
現在、機械学習システム(と真に呼べるものか分からないが)の運用や構築をちょくちょくしていて、ベストプラクティスを再確認したいなというのがありました。この本を手に取りました。以下は、読書メモです1。
機械学習プロジェクトの流れ
- 問題を定式化する
- 機械学習をしないで良い方法を考える
- システム設計を考える
- アルゴリズムを選定する
- 特徴量、教師データとログの設計をする
- 前処理をする
- 学習・パラメータチューニング
- システムに組み込む
- 1と2:問題設定
- 3から6:道具選びと前処理
- 7:モデルの作成
- 8:サービスへの組み込み
という4STEPの流れ。この中でデータをEDA(Exploratory Data Analysis)して可視化したりする部分は1と2に当たる部分なのかなと。つまり、自分が関わった多くのプロジェクトは3に行く前に終わったなーというのが多い…笑
おもしろいのは、明示的に 2.機械学習をしないで良い方法を考える を流れに含んでいる点。その原因はモデルのメンテナンスコストが大きいこと。以下、6つの例をあげている。
機械学習システムを維持するためのメンテナンスコストが多くある点と時間とともに変わるデータのトレンドの変化から100%正しい結果を常に出すとは限らないので、誤りを運用でカバーする仕組みが必須 というところは理解してもらわないといけない。
そういうところをちゃんと理解した上で、さらに導入をする前に、MVP(Minimum Viable Product)を作る点。これにより、本当にもっと高度な方法が必要かが明らかになる。いきなり難しいことをするのではなく、まず一番簡単なモデル(たとえば、平均値を返すモデル)でシステムの性能をチェックし、そのモデルに満足しない場合、エンジニアリング技術(次節で必須になる)とともに、改善していくのが正しい道と読めました。
実システムにおける機械学習の問題点への対処方法
その大きなメンテナンスコストに対して、著者らは以下のポイントを述べています。
人手でゴールドスタンダードを用意して、予測性能のモニタリングをする
予測モデルをモジュール化をしてアルゴリズムのA/Bテストができるようにする
モデルのバージョン管理をして、いつでも切り戻し可能にする
データ処理のパイプラインごと保存する
開発/本番環境の言語/フレームワークは揃える
とくに、機械学習システムは一度作って終わることはないので、高度なアルゴリズムを作れる人だけではなくて、エンジニアリング技術が必須になってくる というのがこのポイントからも明らか。
機械学習システムは本来アップデートが激しいところが多いはずなので、パイプライン作りとバージョン管理 も間違いなく必要になります。
さらなるベストプラクティスについてはRules of Machine Learning Best Practices for ML Engineeringを参考にあげていた。また時間あるときに読みたい。
機械学習を含めたシステムを成功させるには
重要なプレイヤーとして、4人のプレイヤーをあげている
- プロダクトに関するドメイン知識を持った人
- 統計や機械学習に明るい人
- データ分析基盤を作れるエンジニアリング能力のある人
- 失敗しても構わないとリスクを取ってくれる責任者
とくに、現場・分析者・エンジニアの3人+責任者1人 の存在が必要。構築や運用ではこのとおりなんですが、その機械学習システムを作って見せる人(利用者)もプレイヤーとして出てきます。その利用者からの無茶振りも色々ある。なので、その利用者も機械学習プロジェクトの流れを理解して、長く付き合ってくれるか もありますね。その辺の説明(説得?)方法での良い資料が欲しいですね。
まとめ
読んだのは1章だけですが、道筋を明確に記述して読みやすかったです。1章だけでも、チーム全員必読してもらって、議論して理解を深めたいなと思いました。
-
しかし、すでに多くの方がレビューしているみたいなので、内容が被りそうですが、あまりその辺は気にしていません。↩