Note 当文書はResourcesを日本語に翻訳したものです。
この文書は、本書で触れたトピックをさらに深掘りすることが目的です。本書には既に膨大な数のリンクや参考文献を掲載しているため、読者が重要なポイントを見落としてしまわないように掲載を見送った情報があります。
- 1章.機械学習システムの概要
- 2章.機械学習システム設計の概要
- 3章.データエンジニアリングの基礎知識
- 4章.訓練データ
- 5章.特徴エンジニアリング
- 6章.モデル開発とオフライン評価
- 7章.モデルのデプロイと予測サービス
- 8章.データ分布のシフトと監視
- 9章.実現場での継続学習とテスト
- 10章.MLOpsにおけるインフラとツール
- 11章.機械学習の人的側面
機械学習システムの設計を学ぶには、ケーススタディを読んで実際のチームが様々なデプロイ要件や制約に対してどのように対処しているかを知ることが有益です。多くの企業(例を挙げると、Airbnb、Lyft、Uber、Netflixなど)が、素晴らしい技術ブログを立ち上げて、機械学習を活用してプロダクトやプロセスの改善に役立てたエピソードを公開しています。
- Using Machine Learning to Predict Value of Homes On Airbnb (Robert Chang, Airbnb Engineering & Data Science, 2017)
詳細かつ洗練されたこのブログ記事の中でChangは、Airbnbが機械学習を使用して重要なビジネス指標であるAirbnb上の住宅の価値をいかに予測したかについて解説しています。この記事では、特徴エンジニアリング、モデルの選定、プロトタイピング、プロトタイプを実環境へ移行するまでのワークフロー全体が網羅されており、さらには、そこから得られた教訓や使用したツール、コードスニペットなども掲載されています。
- Using Machine Learning to Improve Streaming Quality at Netflix (Chaitanya Ekanadham, Netflix Technology Blog, 2018)
2018年時点でNetflixは全世界で1億1700万人以上のユーザーにストリーミングサービスを提供していますが、その半数は米国外のユーザーです。このブログ記事では、ネットワーク品質の予測、デバイスの異常の検出、予測をキャッシュするためのリソースの割り当てなど、直面する技術的な課題とその課題を克服する機械学習の活用方法について解説しています。
- 150 Successful Machine Learning Models: 6 Lessons Learned at Booking.com (Bernardi et al., KDD, 2019)
Booking.comは2019年には既に150個もの機械学習モデルを実稼働させています。これらのモデルは、ユーザーの旅行の好みや同行者数などの広範な予測問題や、ユーザーに表示する背景画像やレビューの最適化問題に取り組むものです。こちらでは、Adrian Colyerが得た6つの教訓について素晴らしいまとめが提供されています。
1. 機械学習モデルはビジネスに大きな価値を提供する
2. モデルのパフォーマンスとビジネスのパフォーマンスは異なる
3. 解決したい問題を明確にせよ
4. 予測を提供するレイテンシーは重要である
5. モデルの品質のフィードバックを迅速に得よ
6. ランダム化比較試験(randomized controlled trials)を用いてモデルのビジネス上の影響をテストせよ
- How we grew from 0 to 4 million women on our fashion app, with a vertical machine learning approach (Gabriel Aldamiz, HackerNoon, 2018)
Chicisimoはコーディネートのアドバイスを自動で提供できるようにしようと、機械学習を用いて人々のファッションの嗜好を定義しようとしました。このタスクには曖昧なところがあるため、問題の組み立て方とデータの収集方法が大きな課題となります。この両方の取り組みが記事の中で言及されています。さらに、すべてのコンシューマー向けアプリが直面するユーザーの繋ぎ止め(リテンション)の問題についても触れています。
- Machine Learning-Powered Search Ranking of Airbnb Experiences (Mihajlo Grbovic, Airbnb Engineering & Data Science, 2019)
この記事は、ランキングとレコメンドに関する問題の典型的な事例をステップバイステップで説明したものです。主なステップは、システム設計、パーソナライゼーション、オンラインスコアリング、そしてビジネスの視点の4つです。この記事では、どの特徴を使用するか、データをどのように集めてラベル付けするか、なぜ勾配ブースト決定木(Gradient Boosted Decision Tree)を採用したのか、どのテスト指標を利用するか、ランク付けする際の考慮事項、そしてどのようにデプロイしてA/Bテストを実施するかなどについて詳しく述べられています。また、この記事の特筆すべき点として、ユーザーごとに異なるランキングを提供するパーソナライゼーションについても採り上げている点が挙げられます。
- From shallow to deep learning in fraud (Hao Yi Ong, Lyft Engineering, 2018)
不正検知(Fraud detection)は、産業界の機械学習のユースケースとしてもっとも古くからあるもののひとつです。この記事では、Lyftでの不正検知アルゴリズムの変遷について説明しています。初期の頃は、特徴エンジニアリングによるロジスティック回帰だけで多くの不正を検出できました。この手法はシンプルであるため、さまざまな特徴の重要性をチームが理解できました。しかしながら、不正の手口が巧妙になるにつれて、より高度なモデルが求められるようになりました。この記事では、モデルの複雑さと説明能力、そして効果とデプロイのしやすさとの間にあるトレードオフについて語っています。
- Space, Time and Groceries (Jeremy Stanley, Tech at Instacart, 2017)
Instacartは機械学習を使用して複数の買い物客にもっとも効率的にタスクを割り当てて最適な経路を見つけられるようにしています。この記事では、問題の定義、データの収集、アルゴリズムや評価指標の選択、さらに綺麗に可視化するチュートリアルに至るまでのシステム設計の全工程を詳細に説明しています。
- Creating a Modern OCR Pipeline Using Computer Vision and Deep Learning (Brad Neuberg, Dropbox Engineering, 2017)
文書をスキャンするだけのシンプルなアプリケーションでさえ、光学文字認識と単語検出の2つの独立したコンポーネントから構成されます。それぞれのコンポーネントに専用の製造パイプラインが必要となり、エンド・ツー・エンドのシステム(システム全体)としては、訓練やチューニングの手順がさらに必要です。また、この記事では、自前のデータアノテーションプラットフォームを構築するなどのデータの収集に関するチームの取り組みについても詳細に説明しています。
- Spotify’s Discover Weekly: How machine learning finds your new music (Umesh .A Bhat, 2017)
Spotifyは、主に3種類のレコメンド用モデルを使用してDiscover Weeklyを作成しています。
- 協調フィルタリングモデル... 元々はLast.fmが使用していたもので、あなたの行動や他の人々の行動を分析します。
- 自然言語処理モデル(NLP)... テキストを分析します。
- オーディオモデル... 生のオーディオトラックそのものを分析します。
- Smart Compose: Using Neural Networks to Help Write Emails (Yonghui Wu, Google AI Blog 2018)
“Smart Composeはキーを入力するたびに予測を実行するので、ユーザーに遅延を感じさせることがないように、理想的には 100ミリ秒 以内に応答しなければなりません。モデルの複雑さと推論の速さとの間でバランスを取ることが極めて重要な課題でした。”
- Rules of Machine Learning (Martin Zinkevich)
- Things I wish we had known before we started our first Machine Learning project (Aseem Bansal, towards-infinity 2018)
- https://github.com/chiphuyen/machine-learning-systems-design: だいぶ前に書いたもので、本書に比べるとあまり整理されていません。
- Deploying Machine Learning Models: A Checklist (機械学習システムの設計に関する簡単なチェックリスト)
- A Beginner’s Guide to Data Engineering (Robert Chang 2018)
- Designing Data-Intensive Applications (Martin Kleppmann, O’Reilly, 2017)
- Emerging Architectures for Modern Data Infrastructure (Bornstein et al, a16z 2022)
- Reverse ETL — A Primer (Astasia Myers 2021)
- Uber’s Big Data Platform: 100+ Petabytes with Minute Latency (Reza Shiftehfar, Uber Engineering blog 2018)
- How DoorDash is Scaling its Data Platform to Delight Customers and Meet our Growing Demand (Sudhir Tonse 2020)
- The Log: What every software engineer should know about real-time data's unifying abstraction (Jay Kreps, LinkedIn / Confluent, 2013): Jayはこのツイート で言及していますが、彼がこのブログを執筆したのは、ストリーミングにどれだけの関心があるかを見極めて、それ次第で彼のチームで新しい事業を興すかどうかを判断するためでした。このブログの反響は大きく、彼のチームはLinkedInからスピンアウトしてConfluentを設立しました。
- The Many Meanings of Event-Driven Architecture (Martin Fowler, GOTO 2017): Martin Fowlerは偉大な講演者です。彼の講演によりイベント駆動型アーキテクチャーの複雑さの大部分が明確になりました。
- Stream Processing Hard Problems – Part 1: Killing Lambda (Kartik Paramasivam, LinkedIn Engineering 2016)
- Open Problems in Stream Processing: A Call To Action (Tyler Akidau, DEBS 2019): TylerはかつてGoogleでDataflowのリーダーを務めていましたが、2020年1月にSnowflakeに参画し、ストリーミングチームを発足しました。彼のこのセッションでは、ストリーミング処理における主な課題について解説しています。
- The Four Innovation Phases of Netflix's Trillions Scale Real-time Data Infrastructure (Zhenzhong Xu, 2022): Netflixがどのようにバッチシステムからストリーミングシステムに移行したかについて述べています。
- Rejection sampling
- The MIDAS Touch: Mixed Data Sampling Regression Models (Ghysels et al., 2004)
- An Overview of Weak Supervision (Ratner et al., 2018)
- Interpretable Machine Learning (Christoph Molnar, 2022): 説明能力(解釈可能性)についてかなり詳しく解説しています。
- How to unit test machine learning code (Chase Roberts, 2017)
- A Recipe for Training Neural Networks (Andrej Karpathy, 2019)
- Top 6 errors novice machine learning engineers make (Christopher Dossman, AI³ | Theory, Practice, Business 2017)
- Testing and Debugging in Machine Learning course (Google)
- What did you wish you knew before deploying your first ML model?(私がTwitterで問いかけたところ、興味深いリプライが寄せられました。)
- Techniques for Training Large Neural Networks (OpenAI 2022)
- A survey of model compression and acceleration for deep neural networks (Cheng et al., IEEE Signal Processing Magazine 2017)
- Towards Federated Learning at Scale: System Design (Bonawitz et al, 2019)
- Effective testing for machine learning systems (Jeremy Jordan, 2020)
- On Calibration of Modern Neural Networks (Guo et al., 2017)
- Calibration for Netflix recommendation systems (Harald Steck, 2018)
- Beyond Accuracy: Behavioral Testing of NLP Models with CheckList (Ribeiro et al., ACL 2020)
- TextBugger: Generating Adversarial Text Against Real-world Applications (Li et al., 2018)
- Uncertainty Sets for Image Classifiers using Conformal Prediction (Angelopoulos et al., 2020)
- Beyond Incremental Processing: Tracking Concept Drift (Jeffrey C. Schlimmer and Richard H. Granger, Jr., 1986) コンセプトドリフト(Concept drift)はまったく新しい概念というわけではありません。
- Failing Loudly: An Empirical Study of Methods for Detecting Dataset Shift (Rabanser et al., 2019)
- Out-of-Distribution Generalization via Risk Extrapolation (REx) (Krueger et al., 2020)
- Domain Adaptation under Target and Conditional Shift (Zhang et al., 2013)
- A Review of Domain Adaptation without Target Labels (Kouw et al., 2019)
- On Learning Invariant Representations for Domain Adaptation (Zhao et al., 2019)
- How to deal with the seasonality of a market? (Marguerite Graveleau, Lyft Engineering 2019)
- Invariant Risk Minimization (Arjovsky et al., 2019)
- Causality for Machine Learning (Bernhard Schölkopf, 2019)
- Application deployment and testing strategies (Google)
- MLOps: Continuous delivery and automation pipelines in machine learning (Google)
- Automated Canary Analysis at Netflix with Kayenta (Michael Graff and Chris Sanden, Netflix Technology Blog 2018)
- A/B testing — Is there a better way? An exploration of multi-armed bandits (Greg Rafferty, Towards Data Science 2020)
- Deep Bayesian Bandits: Exploring in Online Personalized Recommendations (Guo et al. 2020)
- Active Learning and Contextual Bandits (Paul Mineiro, 2012)
- Introduction to Microservices, Docker, and Kubernetes: DockerとKubernetes(k8s)の基礎知識に関する1時間の動画。
- How Microsoft plans efficient workloads with DevOps
- Airbnb’s BigHead
- Uber’s Michelangelo
- Weapons of Math Destruction (Cathy O’Neil, Crown Books 2016)
- NIST Special Publication 1270: 『Towards a Standard for Identifying and Managing Bias in Artificial Intelligence(人工知能におけるバイアスを識別・対処する標準を目指して)』
- ACM Conference on Fairness, Accountability, and Transparency (ACM FAccT) 論文等
- Trustworthy ML: 信頼性のある機械学習についてより詳しく学びたい研究者や実践者にお勧めする情報源と基礎研究のリスト
- Sara Hookerの素晴らしいスライド ML Beyond Accuracy: Fairness, Security, Governance (2022)
- Timnit Gebru and Emily Dentonの説明責任・透明性・透明性・倫理に関するチュートリアル (2020)