
本記事について
機械学習システム設計の面接対策本である「Machine Learning System Design Interview」を読んだ時の読書メモです。
本書についての紹介記事は以下となってます。
nsakki55.hatenablog.com
本書の公式HP
bytebytego.com
1. Introduction and Overview
MLシステムデザインを行うためのフレームワークを作成
- Clarifying requirements
- Framing the problem as an ML task
- Data preparation
- Model deployment
- Evaluation
- Deployment and serving
- Monitoring and infrastructure
Clarifying Requirements
- 問題の解像度を上げるために以下の質問を行う
- Business objective
- Features the system needs to support
- Data
- Constraints
- Scale of the system
- Performance
Frame the Problem as an ML Task
- ML Taskの枠組みを決める
- Defining the ML objective
- ビジネス目標をMLの問題に落とし込む
- Specifying the systems’s input and output
- MLモデルの入力と出力を明確にする
- Choosing the right ML category
Data Preparation
- MLモデルに高品質のデータを入力するための処理
- Data Engineering
- Feature Engineering
- 特徴量エンジニアリングは2つのプロセスが含まれる
- ドメイン知識を使って生データから有効な特徴を抽出する
- 有効な特徴をモデルが使用可能なデータ型に変換する
- 特徴量エンジニアリングの操作
- Handling missing values : 欠損値の取扱い。削除と補完が一般的。
- Feature Scaling : 正規化・標準化・ログスケーリングがある。
- Discretization(Bucketing) : 連続値をカテゴリ特徴に変換するプロセス。
- Encoding categorical features: カテゴリ特徴をモデルに入力できるデータ型に変換する。Integer encoding, One-hot encoding, Embedding learning がある。
- 特徴量エンジニアリングは2つのプロセスが含まれる
Model Deployment
- Model Deoloymentは適切なMLモデルを選択し学習するプロセス
- Model selection
- モデル選択の典型的なプロセス
- 簡単なベースラインの作成
- 簡単なモデルで実験
- より複雑なモデルに切り替え
- さらなる精度向上が必要な場合モデルアンサンブルを使用する
- 典型的なモデル選択肢
- ロジスティック回帰
- 線形回帰
- 決定木
- 勾配ブースティング木
- SVM
- Naive Bayes
- Factorization Machine(FM)
- Neural Networks
- モデル比較基準
- 学習に必要なデータ量
- 学習速度
- 調整が必要なハイパーパラメータ数
- 継続的学習の可能性
- コンピューティングリソース要件
- モデル解釈性
- モデル選択の典型的なプロセス
- Model Training
- データセットの作成 : 5ステップに分かれる。生データ収集→特徴とラベルの決定→サンプリング戦略の選定→データ分割→クラス不均衡の対応
- サンプリング戦略の種類
- convenience sampling, snowball sampling, stratified sampling, reservoir sampling, importance sampling
- サンプリング戦略の種類
- 損失関数の選定 : 既存の損失関数のリストから選ぶのが常だが、問題に応じて独自の変更を加える必要がある
- scratch vs fine-tuning
- 分散学習 : 時間が経過するにつれモデルとデータ規模が大きくなる場合に重要となる
- データセットの作成 : 5ステップに分かれる。生データ収集→特徴とラベルの決定→サンプリング戦略の選定→データ分割→クラス不均衡の対応
Evaluation
- Offline evaluatioin
- ground truthと予測値の近さを測る指標を使う
- Online evaluation
- モデルインパクトを測るためにオフライン指標とは異なるビジネス指標を選ぶ
- 例: Ad click predictionの場合はClick-through rate, revenue lift
Deployment and Serving
- Cloud vs on-device deployment : trade offが存在
- デプロイの簡易さ
- コスト
- ネットワークレイテンシ
- 推論レイテンシ
- ハードウェア制約
- プライバシー
- インターネット接続への依存
- Model compression : モデルサイズを小さくする操作。3つの方法がよく使われる
- 知識蒸留 : 大きいモデル(teacher)を模倣した小さなモデル(student)を学習
- プルーニング : 不必要なパラメータを0にすることでモデルをスパースにする
- 量子化 : パラメータのデータ型を小さくする
- Test in production : 本番リクエストを用いてモデルをテストする。シャドウデプロイ、ABテスト、カナリアリリース、インターリービング、バンディットなど。
- Prediction pipeline
- Batch prediction
- 事前に予測値を計算
- 2つの欠点
- ユーザー嗜好の変化に対応ができない
- 事前に計算する必要がある予測が分かってる場合でないと活用できない
- Online prediction
- 推論リクエストが来るたびに予測値を計算
- 予測値取得に時間がかかる可能性がある
- Batch prediction
Monitoring
- Why a system fails in production
- データ分布シフトが最も頻繁に起きる理由
- データ分布シフトへの対応方法
- 大規模データセットでの学習
- 新しいデータ分布でのモデル学習
- What to monitor
Infrastructure
- 学習・デプロイ・MLシステム運用の基盤
- ML Interviewでは聞かれることは少ないが、DevOps・MLOpsのロールでは必要な知識
2. Visual Search System
Pinterstのような画像をもとに類似画像を検索するシステムの構築。
Clarifying Requirements
論点
- ランク付けを類似順に行うのか
- 動画もサポートするか
- ユーザーごとパーソナライズした結果を表示するか
- モデルは画像メタデータ・タグを使用できるか
- Click以外のユーザーアクションは行われるか
- コンテンツ監視を行うか
- 学習データのラベリングはユーザー行動をもとに作成できるか
- 検索速度はどれくらい早い必要があるか
要件整理
- ユーザーから与えられた画像をクエリとして、類似画像を検索する
- 類似度に基づいてランク付し、ユーザーに表示する
- 画像のみをサポート
- パーソナライズは不要
Frame the Problem as an ML Task
Defining the ML objective
- ユーザーが探してる画像を正確に取得すること
Specifying the system’s input and output
- 入力 : クエリ画像
- 出力 : 類似度に基づいてランク付された画像一覧
Choosing the right ML category
- visual search systemはランキング問題としてみなせる
- Representation Learning (表現学習)
- 入力データをEmbeddingと呼ばれる内部表現に変換できるように学習したモデル
- 入力画像をN次元の埋め込み空間にマッピングするモデルと捉えられる
- Representation Learningを使用して画像をランキングする
- 入力画像をEmbeddingベクトルに変換
- Embedding空間上でのクエリ画像と他の画像の距離を測定し、類似度スコアを計算する
Data Preparation
Data engineering
- 利用可能データ
- Images
- Users
- User-image interactions
Feature engineering
- 典型的な画像処理テクニック
- Resizing
- Scaling
- Z-score normalization
- Consistent color mode
Model Deployment
Model selection
- Neural Networksを選択
- Neural Networksは画像やテキストのような非構造化データを扱いやすい
- 表現学習で必要なEmbeddingを作成するのに、Neural Networksは古典的モデルより優れている
- モデル候補
- CNN-based : ResNet
- Transformer-based : ViT
Model training
- 学習過程でEmbeddingを取得できる必要がある
- contrastive training
- 類似・非類似画像の区別を行うモデルを学習
- 類似画像はクエリ画像と内部表現が近くなるように学習される
Constructing the dataset
- contrastive trainingのデータ
- クエリ画像(1) + 類似画像(1) + 非類似画像(n-1)
- 類似画像のラベリング方法
- 人間による判定
- Clickをプロキシ指標とした判定
- クエリ画像から人工的に生成
- ベストなアプローチ
- trade-offを考慮して複数の選択肢を議論することが重要
- 自己教師学習の手法を採用する
- SimCLRのような手法が大規模データでの学習結果を担保しやすい
- 数億の画像イメージにアクセスできる
Choosing the loss function
- 学習の目的はEmbedding空間で類似画像データが近くなるように、モデルパラメータが学習されること
- 生成されたEmbeddingの品質を測定できるよう損失関数を設計
- contrastive loss
- compute similarities
- Softmax
- Cross-entropy
Evaluation
- offline metrics
- 検索システムで一般的に使用される指標
- Mean reciprocal rank (MRR)
- Recall@k
- Precision@k
- Mean average precision (mAP)
- Normalized discounted cumulative gain (nDCG)
- nDCGをオフライン指標として使用する
- 検索システムで一般的に使用される指標
- online metrics
- Click-through rate (CTR)
- 検索・レコメンドシステムで一般的に使用される
- 提案画像に使われた時間
- 検索システムが正確であるほど、増加が期待される指標
- Click-through rate (CTR)
Serving
- Prediction pipeline
- Embedding generation service
- 入力クエリ画像のEmbeddingを計算するサービス
- Nearest neighbor service
- Embedding空間からクエリ画像との近傍画像を取得する
- Re-ranking service
- ビジネスロジックに関わる処理
- プライベート画像の除外、重複画像の除外などの不適切な結果のフィルターを行う
- Embedding generation service
- Indexing pipeline
- Indexing service
- 検索パフォーマンス向上のために全ての画像のインデックスを作成
- 新しい画像を追加された際にインデックスを生成
- Performance of nearest neighbor (NN) algorithms
- 最近傍検索は情報検索・レコメンデーションシステムの中心的要素
- 効率面での僅かな改善が全体のパフォーマンス向上に大きく寄与する
- Approximate nearest neighbor(ANN)
- Tree-based ANN
- Locality-sensitive hashing(LSH)-based ANN
- Clustering-based ANN
- 実装
- Indexing service
Other Talking Points
- 不適切コンテンツ除去の対応
- ポジションバイアスのような別のバイアスの存在
- 検索結果向上のために画像メタデータ・タグをどのように活用するか
- 物体検知を利用した効率的な切り抜き
- 良い内部表現を学習するためにグラフニューラルネットワークをどのように活用するか
- Textを入力とした画像検索をサポートするには
- データアノテーションのために active learning, human-in-the-loopをどのように活用するか
3. Google Street View Blurring System
Google Street Viewのようなボカシを入れるシステムの構築。
Clarifying Requirements
論点
- ビジネス目標はユーザーのプライバシーを守ることか
- 設計するシステムはStreet View画像から人間の顔と車ナンバープレートを見つけ、ボカシを入れること。適切にボカシが入っていない場合、ユーザーから報告できる。
- アノテーション済み画像は手に入るか
- 人種、年齢、性別といったバイアスを持つデータセットか
- 厳しいレイテンシ要件が求められるか
要件整理
- Street View画像から人間の顔と車ナンバープレートを検知し、ボカシをいれるシステムを設計する
- アノテーション済みの100万画像が存在
- システムのビジネス目標はユーザープライバシーを守ること
Frame the Problem as an ML Task
Defining the ML objective
- 画像中から特定の物体を正確に検知すること
Specifying the system’s input and output
- 入力 : 物体が0または複数ある画像
- 出力 : 物体の位置
Choosing the right ML category
- 物体検知システムは2つの機能を担う
- 画像中の各物体の位置を予測. 回帰問題
- 各バウンディングボックスのクラスを予測. 他クラス分類問題
- Two-stage networks
- 2つの分割されたモデルが使われる. R-CNN, Fast R-CNN, Faster-RCNN
- Region proposal network(RPN)
- 画像をスキャンし物体と思われる候補領域を提示する
- Classifier
- 候補領域の物体を分類
- Region proposal network(RPN)
- 2つの分割されたモデルが使われる. R-CNN, Fast R-CNN, Faster-RCNN
- One-stage networks
- Two-stage networksを採用する
- 100万データは一般的な物体検知のデータセットサイズと比較すると多いわけではない
- Two-stageにしても学習コストが肥大化しない
Data Preparation
Data Engineering
Feature Engineering
- データ拡張
- Random crop
- Random saturation
- Vertical or horizontal flip
- Rotation and/or translation
- Affine transformations
- Changing brightness, saturation, or contrast
- データ拡張による生成タイミングは2通りの方法がある
- オフライン : 学習前に生成
- オンライン : 学習中に都度生成
Model Deployment
Model Selection
- モデル要素
- Convolutional layers
- Region Proposal Network (RPN)
- Classifier
Model training
- 2つの損失関数を使用
- Regression loss
- バウンディングボックス座標のMean Squared Error (MSE)
- Classification loss
- Regression loss
Evaluation
- バウンディングボックス予測値の評価指標
- Inference Over Union (IOU)
- offline metrics
- 物体検知で便利な指標
- Precision
- Average Precision
- Mean Average Precision
- 物体検知で便利な指標
- online metrics
- ユーザーレポート数・不満数
- 異なる人種や年齢グループにまたがって平等に人間の顔にボカシを入れられてるか
Serving
- Overlapping bounding boxes
- Non-maximum suppression (NMS)
- 重なりがあるバウンディングボックスを除外する
- ML system design
- Batch prediction pipeline
- Preprocessing
- 生データを特徴量データに加工
- Blurring service
- 画像中で検出した物体リストを作成
- NMSを用いて検出した物体のリストを調整
- 検出した物体にボカシをいれる
- オブジェクトストレージにボカシを入れた画像を保存
- Preprocessing
- Data pipeline
- Hard negative mining
- 予測が誤った画像を学習データに追加
- Hard negative mining
- Batch prediction pipeline
- Non-maximum suppression (NMS)
Other Taking Points
- Transformer-basedの物体検知アーキテクチャはone-stage, two-stageモデルとどう異なるか、それぞれのメリット・デメリットは何か
- 分散学習を用いた大規模データセットでの物体検知モデルの改善
- GDPRのシステムへの影響
- 顔検知システムのバイアスの評価
- どのように継続的にモデルをファインチューニングするか
- 学習のためのデータポイントを選択するために、active learningとhuman-in-the-loop-MLをどのように利用するか
4. YouTube Video Search
YouTubeのようなTextクエリから最も関連する動画を検索するシステムを構築する
Clarifying Requirements
論点
- 入力クエリはTextのみか
- プラットフォームのコンテンツは動画のみか
- 動画は映像コンテンツとタイトルや説明書きのテキストデータで決定される
- 利用可能な学習データはあるか
- 英語以外の言語もサポートする必要があるか
- プラットフォームに存在する動画の数は何個か
- 結果をパーソナライズ化する必要があるか
要件整理
- 動画の検索システムの構築
- 入力はテキストクエリ、出力はテキストクエリに関連性のある動画のリスト
- 動画の映像コンテンツとテキストデータを利用可能
- 1000万個の動画とテキストのペアの学習データセットが利用可能
Frame the Problem as an ML Task
Defining the ML objective
- Textクエリとの関連性に基づいた動画のランク付け
Specifying the system’s input and output
- 入力 : text クエリ
- 出力 : text クエリとの関連性に基づいて並び替えられた動画のリスト
Choosing the right ML category
- Visual search
- Textクエリと映像コンテンツの関連性に基づいて動画をランク付する
- 表現学習が一般的に使用される
- Video Encoder と Text Encoderを持ち、Video EmbeddingとText Embeddingの内積計算で類似性の計算を行う
- Text search
Data Preparation
Feature Engineering
- Preparing text data
- Text normalization
- Tokenization
- Tokens to IDs
- Preparing video data
- decode frames
- sample frames
- resizing
- scaling, normalization, correcting color mode
Model Deployment
- Model selection
- Text encoder
- Textをベクトルへと変換し、意味の近い文章同士の距離が近くなるようにEmbeddingを生成する
- Statistical methods
- 統計的手法により文章を特徴ベクトルへと変換する
- Bag of Words (BoW), Term Frequency Inverse Document Frequency (TF-IDF)
- ML-based methods
- MLモデルにより単語同士の意味の近さを反映したEmbedding空間を作成する
- Embedding (lookup) layer, Word2vec, Transformer-based architectures
- 最も効果的なEmbeddingを作成できるTransformer-besed architecturesを採用する
- Video encoder
- Video-level models
- 動画全体でembeddingを作成する
- モデルは動画全体を処理し、計算コストが高い
- Frame-level models
- 動画からフレーム画像をサンプリングしEmbeddingを作成する
- モデルはフレーム画像を処理し、計算コストが低い
- 動画の連続的な特徴を学習できない
- 学習と推論足が早く計算コストが低い、ViT(Frame-level model)を採用する
- Video-level models
- Text encoder
Evaluation
- Offline metrics
- Precision@k, mAP
- Recall@k
- Mean Reciprocal Rank (MRR)
- Online metrics
- Click-through rate (CTR)
- Video completion rate
- Total watch time of search results
Serving
- Prediction pipeline
- Visual search
- Textクエリのembeddingを取得し、最近傍探索で類似動画を検索する
- Text search
- Textクエリから動画タイトル・タグを検索する
- Flushing layer
- Visual searchとText searchの結果を組み合わせる
- Re-ranking service
- 動画のリストを調整するビジネスロジック
- Visual search
- Video indexing pipeline
- 学習済みのvideo encoderを用いて新しい動画のembeddingのindexを作成
- Text indexing pipeline
- 新しい動画のタイトル・タグのElasticSearchのindexを作成
Other Talking Points
- マルチステージの設計(候補生成+ランキング)
- 動画秒数・動画の人気度などの特徴の使用
- ユーザー行動(click, like)でラベリングしたデータの活用
- Textクエリと意味の近いタイトル・タグを見つけるMLモデルの使用
- クエリ分類の要素追加
- 検索結果向上ためにマルチモーダルモデルをどのように使用するか
- 多言語サポートを行うためにどのように拡張すればよいか
- 重複動画がユーザー体験に悪影響を及ぼすか
- Textクエリを要素分解することの効果
- 出力リストを生成する際に人気度や新規度を考慮するにはどうすれば良いか
- 現実世界の検索システムがどう動いてるか
5. Harmful Content Detection
Facebook, LinkedIn, Twitterのような有害なコンテンツの検知システムを構築する
Clarifying Requirements
論点
- 有害なコンテンツとアカウントの両方を検知するか
- 投稿はテキスト・画像・動画が含まれるか
- 英語のみをサポートするか
- 有害なコンテンツはどのようなカテゴリを考慮するべきか
- 投稿をラベリングする人間のアノテーターは存在するか
- ユーザーからの有害コンテンツの報告を機能に含めるか
- 有害コンテンツとなった理由を説明する必要があるか
- システムのレイテンシー要件はあるか
要件整理
- 新しい投稿がされた時に有害コンテンツの検知を行い、なぜ有害扱いされたかの説明をユーザーに知らせる
- コンテンツはテキスト・画像・動画で構成され、さまざまな言語がある
- ユーザーは有害コンテンツを報告できる
Frame the Problem as an ML Task
Defining the ML objective
- 有害コンテンツを正確に検知する
Specifying the system’s input and output
- 入力 : 投稿(画像・テキスト・動画・ユーザー情報)
- Late fusion
- 異なるデータ型ごとのMLモデルを作成し、それぞれの結果を合成する方法
- 各モデルで学習・評価が可能
- 複数モデル学習のコストがかかる。各データの組み合わせ情報が失われる。
- Early fusion
- 異なるデータ型を先に合成し1つのモデルを作成する
- 1つのモデル学習だけ行えば良い。データの組み合わせ情報を使用できる
- モーダルの関係性を学習するのが難しい
- Late fusion
- 出力 : 有害である確率値
Choosing the right ML category
- MLカテゴリの候補
- 単クラス分類
- 有害クラスごとの単クラス分類
- 他クラス分類
- 他タスク分類 (採用)
- Shared layers
- 入力特徴を新しいデータに変換するための隠れ層
- Task-specific layers
- クラスごとの独自のML層
- クラスごとに特徴を変換し分類のために最適化する
- Shared layers
Data Preparation
Data engineering
- 利用可能データ
- ユーザー情報
- 投稿
- ユーザーの投稿に対する反応
Feature Engineering
- Text content
- Text preprocessing
- normalization, tokenization
- Vectorization
- 事前学習済みのDistlmBERTの使用
- Text preprocessing
- Image or video
- Preprocessing
- decode, resize, normalize
- Feature extraction
- image, videoを特徴量ベクトルに変換する
- image
- CLIP, SimCLR
- video
- VideoMoCo
- Preprocessing
- User reactions to the post
- like, シェア、コメント、報告数
- 数値特徴にしてscaling
- 投稿に対するコメント
- コメントごとのembeddingを作成
- コメントごとのembeddingを集約
- like, シェア、コメント、報告数
- Author features
- 投稿者の過去記録
- 不適切な投稿数
- ユーザーからの報告数
- 不適切な単語割合
- 投稿者のデモグラ情報
- 年齢
- 性別
- 都市
- アカウント情報
- フォロワー・フォロー数
- アカウント歴
- 投稿者の過去記録
- Contextual infofmation
- 日付
- 端末
Model Deployment
- Model selection
- Neural Networks
- Model training
- Constructing the dataset
- Hand labeling
- 人手で後からラベリングしたデータ
- 評価に使用する
- Natural labeling
- ユーザーからの報告でラベリングしたデータ
- 学習に使用する
- Hand labeling
- Choosing the loss function
- タスクごとのcross entropyの和
- Constructing the dataset
Evaluation
- Offline metrics
- PR-curve
- ROC-curve
- Online metrics
- Prevalence
- 全投稿の内、防げなかった有害コンテンツの割合
- Harmful impressions
- Valid appeals
- 有害と判定した内、誤って判定した割合
- Positive rate
- User reports per harmful class
- Prevalence
Serving
- Harmful content detection service
- 新しい投稿があった際に有害コンテンツの確率を予測する
- Violation enforcement service
- 有害コンテンツの確率が高い投稿を削除する
- Demoting service
- 確率が低く有害コンテンツとして予測した投稿を一時的に降格する
Other Talking Points
- 人間によるラベリングで発生したバイアスを扱う
- 流行の有害クラスに対応する
- ユーザーの一連の行動情報を有害コンテンツ予測に使用する
- 人間のレビューのために効率的に投稿をサンプリングする
- グレーゾーンのコンテンツへの対応
- オンデバイスへのデプロイを行い、有害コンテンツ検知システムを効率化する
- Transformer-basedのアーキテクチャを linear Transformerで代替して、効率的なシステムに変更する
6. Video Recommendation System
YouTubeのような動画レコメンデーションシステムを構築する
Clarifying Requirements
論点
- 動画レコメンデーションのビジネス目標はユーザーエンゲージメントを増加させることか
- ユーザーが現在視聴してる動画か、ユーザーのホームページの動画に関連した動画をおすすめするのか
- ユーザーは全世界にいて、多言語をサポートしてるか
- ユーザーからの反応に基づいてデータセットを構築するのか
- プレイリスト機能は要件に含まれるか
- プラットフォーム上で利用可能な動画は何個か
- レイテンシー要件はあるか
要件整理
- ホームページの動画レコメンデーションシステムの構築
- ビジネス目標はユーザーエンゲージメントの増加
- ユーザーがホームページをロードするたびに、システムが関連動画をレコメンドする
- ユーザーは世界中にいて動画は多言語対応
- 100億動画が存在し、瞬時にレコメンドする必要がある
Frame the Problem as an ML Task
Defining the ML objective
- MLの目標の候補
- ユーザーのクリック数の最大化
- clickbaitと呼ばれる動画をレコメンドする危険性がある
- 動画視聴完了数の最大化
- モデルが秒数が短い動画をレコメンドする危険性がある
- 合計視聴時間の最大化
- 関連動画数の最大化 (採用)
- エンジニアやプロダクトマネージャーが決めたルールで関連性を測定可能
- Clickや動画の半分視聴などのユーザー行動でラベリング可能
- ユーザーのクリック数の最大化
Specifying the system’s input and output
- 入力 : ユーザー情報
- 出力 : 関連スコアに基づいてランク付された動画のリスト
Choosing the right ML category
- 一般的なパーソナライズレコメンデーションシステムの種類
Data Preparation
Data Engineering
- 利用可能データ
- Videos
- Users
- User-video interactions
Feature Engineering
- Video features
- VideoID
- 動画秒数
- 言語
- タイトル・タグ
- User features
- ユーザーデモグラ情報
- コンテキスト情報
- ユーザーの行動ログ
Model Deployment
- model
- Matrix factorization
- Two-tower neural network
- Constructing the dataset
- user特徴とvideo特徴のペアとラベルデータ
- Choosing the loss function
- cross-entropy
Evaluation
- Offline metrics
- Precision@k
- mAP
- Diversity
- Online metrics
- Click-through rate (CTR)
- The number of completed videos
- Total watch time
- Explicit user feedback
Serving
- prediction pipeline
- Candidate generation
- 数十億ある動画候補から、数千に候補を減らす
- ユーザー特徴と動画embeddingから最近傍法で生成する
- 流行、人気に基づく異なるcandidate generationを組み合わせる
- Scoring
- Re-ranking
- レコメンド動画を選定するビジネスロジック
- Candidate generation
- Challenges of video recommendation systems
- Serving speed
- 軽量なモデルをcandidate generationに利用するのが有効
- Precision
- Diversity
- 複数のcandidate generationを導入するのが有効
- Cold-start problem
- 新規ユーザー
- two-tower neural networkを用いることでユーザー特徴からレコメンドが可能
- 新規動画
- ランダムにユーザーに表示するなどヒューリスティックな対応が有効
- 新規ユーザー
- Training scalability
- Serving speed
Other Talking Points
- レコメンドシステムのexploration-exploitationトレードオフについて
- レコメンドシステムに発生する異なるタイプのバイアスについて
- 倫理に関する重要な考慮事項
- 季節性の考慮
- 複数目的に対する最適化
- dislikeのようなネガティブフィードバックの活用
- ユーザーの検索履歴・視聴履歴のような動画の時系列情報の活用
7. Event Recommendation System
Eventbriteのようなパーソナライズしたイベントレコメンドを行うシステムの構築
Clarifying Requirements
論点
- ビジネス目標はチケット売り上げを増加させること
- イベントに加えてユーザーはホテルやレストランの予約もできるか
- イベントは一時的に発生し期限のある事象
- イベントの説明、金額幅、場所、日付、時刻情報を活用できる
- アノテーション済みデータが利用可能か
- ユーザーの現在位置を取得可能か
- フレンド機能はあるか
- ユーザーは他のユーザーを招待可能か
- ユーザーはイベントへの招待を行えるか
- イベントは有料 or 無料
- ユーザー数とイベント数はどれくらいか
- 1日あたり何人のアクティブユーザーがweb・app siteに訪れるか
- Google Map APIのような外部APIを利用可能か
要件整理
- ユーザーにパーソナライズ化されたイベントレコメンドを行うシステムの構築
- イベントが終了するとユーザーは登録が不可能になる
- ユーザーはフレンド追加とイベント招待が可能
- 学習データはユーザーの行動履歴に基づいて作られる
- 主目的はチケット売り上げを増加させること
Frame the Problem as an ML Task
Defining the ML objective
- イベント登録数を最大化すること
Specifying the system’s input and output
- 入力 : ユーザー情報
- 出力 : ユーザーに関連する上位k個のイベントのリスト
Choosing the right ML category
- レコメンド問題への対応一般的な方法
- 人気イベントをレコメンドするシンプルなルールベース
- baselineとして適切
- content-based, collaborative filteringのようなEmbeddingモデル
- ランキング問題に問題を置き換える(採用)
- Learning to Rank (LTR)
- クエリが与えられた時に、クエリに最も関連する最新のアイテムリストを並び替える
- 人気イベントをレコメンドするシンプルなルールベース
- LTR
- Pointwise LTR (採用)
- 1つitemとQueryを入力としてスコアを出力
- Pairwise LTR
- 2つのitemとQueryを入力として、itemの並び替えを出力
- Listwise LTR
- 複数のitemとQueryを入力として、itemの並び替えを出力
- Pointwise LTR (採用)
Data Preparation
Data engineering
- 利用可能データ
- Users
- Events
- Friendship
- Interactions
Feature engineering
- Event-base recommendation
- 従来のレコメンドよりイベントベースのレコメンドの方が困難
- イベントの存在期間が短いため、過去のデータを多く取得できない
- コールドスタート問題が課題
- Location-related features
- イベントにアクセス可能か
- イベントがユーザーと同じ国・都市か
- イベントまでの距離がユーザーの都合にあうか
- Time-related features
- イベントまでの時間はどれ位あるか
- 日付と時刻がユーザーの都合にあうか
- Social-related features
- イベントの参加人数
- フレンドの参加に関する特徴
- 他の人に招待されたイベントかどうか
- フレンドがホストのイベントかどうか
- 同一ホストのイベントに過去に参加したことがあるか
- User-related features
- 年齢・性別
- Event-related features
- 参加費用
- イベント説明が過去の参加イベントの説明と似ているか
- イベント説明をTF-IDでベクトル化し、類似度を計算
- 人間のホストが作成する文章のため、ノイズとなる可能性がある
- potential talking points
- バッチ・ストリーミング特徴
- 特徴計算の効率化
- Decay factorの利用
- Embedding Learningの利用
- ユーザー情報から作成した特徴に含まれるバイアス
Model Deployment
- Model selection
- Logistic regression
- Pros
- 推論が高速
- 効率的な学習
- データが線形分離可能な場合に有効
- モデル解釈が容易
- Cons
- 非線形問題が解けない
- 多重共線性の影響を受ける
- Pros
- Decision tree
- Gradient-boosted decision tree (GBDT)
- Pros
- データ準備が容易
- バリアンスを減らせる
- バイアスを減らせる
- 構造化データに利用可能
- Cons
- 調整するハイパーパラメータが多い
- 非構造化データに使用できない
- 継続的学習には合わない
- Pros
- Neural network (採用)
- Pros
- 継続的学習が可能
- 非構造化データに利用可能
- 表現力が高い
- Cons
- 学習コストが高い
- 入力データ品質が出力に大きな影響を及ぼす
- 大規模な学習データが必要
- モデルがブラックボックス
- Pros
- Logistic regression
- Constructing the dataset
- ユーザー特徴とイベント特徴のペアに、過去に登録したかどうかでラベル付したデータを作成
- 不均衡データとなるため、Focal lossやundersamplingを行う
- Choosing the loss function
- binary cross-entropy
Evaluation
- Offlines metrics
- Recall@k, Precision@k
- MRR, nDCG, mAP
- Online metrics
- Click-through rate(CTR)
- Conversion rate
- Bookmark rate
- Revenue lift
Serving
- Online learning pipeline
- イベントレコメンデーションはコールドスタート問題が起きるため継続的学習が必要
- Prediction pipeline
- Event filtering
- 100万個のイベントから候補となるイベントをフィルターする
- 位置情報やユーザー指定のフィルタを使用する
- Ranking service
- Raw Dataから動的に生成する特徴と、Feature Storeから取得した事前計算した特徴を組み合わせる
- Event filtering
Other Talking Points
- 生じうるバイアス
- より表現力を高めるための特徴量の活用
- レコメンドイベントの多様性と新規性を高めるにはどうすればよいか
- プライバシーとセキュリティーの観点から考慮すべきこと
- イベントホスト側とユーザー側の双方のニーズを満たすにはどうすればよいか
- データセットを作成する際のdata leakageを防ぐ
- モデル更新の最適な頻度を決める
8. Ad Click Prediction on Social Platforms
Google, Facebook, Instagramのような広告クリック予測システムを構築する
Clarifying Requirements
論点
- ビジネス目標は売り上げを最大化すること
- ユーザータイムラインに表示される広告のみを考慮し、各Clickが同じ売り上げを出す
- 同じ広告を同一ユーザーに複数回表示するか
- 広告を隠す、特定広告主をブロックする機能をサポートするか
- 学習データは広告とユーザー行動に基づいて作成されるか
- ユーザーのClickを正例としてラベル付するか
- Clickが発生しなかった場合を負例としてラベル付するか
- 継続的学習が必要か
要件整理
- クリック予測システムを構築する
- ビジネス目標は売り上げを最大化すること
- 広告はユーザータイムラインのみに表示され、各Clickは同じ額の売り上げを発生させる
- モデルを継続学習させる必要がある
- 広告とユーザー行動に基づいて学習データが作成される
Frame the Problem as an ML Task
Defining the ML objective
- 広告がクリックされるか予測する
Specifying the system’s input and output
- 入力 : ユーザー情報
- 出力 : クリック予測確率に基づいてランク付された広告リスト
Choosing the right ML category
- pointwise Learning to Rank (LTR)
- 単クラス分類
Data Preparation
Data engineering
- 利用可能データ
- Ads
- Users
- User-ad interactions
Feature engineering
- Ad feature
- IDs
- image/video
- Category, sub category
- impression, click numbers
- User feature
- デモグラ情報
- コンテキスト情報
- ユーザーの反応情報
Model Deployment
- Model selection
- 広告クリック予測システムで一般的に使われる方法
- Logistic Regression
- Feature crossing + logistic regression
- Gradient boosted decision trees
- Gradient boosted decision trees + logistic regression
- Neural networks
- Deep & Cross networks
- Factorization Machines
- Deep Factorization Machines
- 広告クリック予測システムで一般的に使われる方法
- Constructing the dataset
- Positive label
- 広告表示からt秒後にclickされた場合
- 広告表示からt秒後にclickされなかった場合
- Positive label
- Choosing the loss function
- cross-entropy
Evaluation
- Offline metrics
- cross-entropy
- normalized cross-entropy
- Online metrics
- CTR
- Conversion rate
- Revenue lift
- Hide rate
Serving
- Data preparation pipeline
- Batch feature computation
- 静的な特徴を集計しFeature Storeに格納
- Online feature computation
- 動的に変化する特徴をリアルタイムで計算
- Batch feature computation
- Continual learning pipeline
- 新しい学習データでfine tuningを行う
- Prediction pipeline
Other Talking Points
- data leakageを防ぐことの重要性
- model calibrationの実施
- FFMとFMの違い
- XDeepFMとDeepFMの違い
- 破滅的忘却とは何か、防ぐための一般的な手段とは
9. Similar Listing on Vacation Rental Platforms
Airbnbのような類似リスティングを提示するシステムの構築
リスティング : 掲載されている家や船などの宿泊施設全般
Clarifying Requirements
論点
- ビジネス目標は予約数を増加させること
- 類似性の定義
- レコメンドリストはユーザーごとにパーソナライズするか
- プラットフォーム上で利用可能なリスティングの数
- 学習データをどのように作成するか
- 新しい候補が類似リスティングに現れるまでの時間
要件整理
- vacation rental platformsでの類似リスティング作成の設計
- 入力はユーザーが現在見ている特定のリスティング、出力はユーザーが次にクリックしそうな類似リスティング
- レコメンドリスティングはログイン・非ログインユーザーに対して同じものをだす
- 500万リスティング存在し、新しいリスティングが1日後にレコメンドに含まれるようにする
- ビジネス目標は予約数を増加させること
Frame the Problem as as ML Task
Defining the ML objective
- ユーザーが現在見ているリスティングを元に次にユーザーがクリックしそうなリスティングを予測する
Specifying the system’s input and output
- 入力 : ユーザーが現在見ているリスティング
- 出力 : ユーザーがクリックする確率に元づいて並び替えられたリスティング
Choosing the right ML category
- session-based recommendation systems
- ユーザーが現在ブラウズしてるアイテムに基づいてレコメンドを行うこと
- 良いレコメンドはユーザーの一般的な嗜好ではなく、現在の嗜好に基づいてる
- 従来のレコメンドと比較して、ユーザーの嗜好が頻繁に変わる
- リスティングのEmbedding Vectorを作成するモデルを学習する
- Embedding空間の距離を類似度として計算
Data Preparation
Data engineering
- 利用可能データ
- Users
- Listings
- User-listing interaction
Feature engineering
- search session
- ブラウジング履歴
- クリックされた一連のリスティングID
- 最終的に予約されたリスティングIDを保持
Model Deployment
- Model selection
- shallow neural netowork
- リスティングのEmbedding学習
- Model training
- リスティングを入力としてコンテクストに含まれるリスティング一覧を予測する
- shallow neural netowork
- Constructing the dataset
- negative sampling
- Positive pairs
- 近いembeddingを持つリスティングの組み
- Negative pairs
- 遠いembeddingを持つリスティングの組み
- Positive pairs
- negative sampling
- Choosing the loss function
- cross-entropy
Evaluation
- Offline metrics
- The average rank of the eventually-booked listing
- ランク付されたリスティングリストの内、最終的に予約されたリスティングの位置
- The average rank of the eventually-booked listing
- Online metrics
- CTR
- Session book rate
Serving
- Training pipeline
- 新しいリスティングデータ・ユーザーの反応データでモデルをfine tuning
- Indexing pipeline
- 全てのリスティングのEmbeddingのIndexを作成
- Prediction pipeline
- Embedding fetcher service
- モデル学習時に入力リスティングが含まれる場合
- モデル学習時に入力リスティングが含まれない場合
- 地理的に近いリスティングをレコメンドするなどヒューリスティックな対応
- Nearest neighbor service
- Re-ranking service
- Embedding fetcher service
Other Talking Point
- 潜在的なバイアスは何か
- session-based アプローチとrandom walkの比較
- ユーザーの長期的な嗜好を活用したsession-basedレコメンドシステムの改善
- 季節性をどのようにリスティングシステムに導入するか
10. Personalized News Feed
Facebook, Twitter, LinkedInのようなニュースフィードのパーソナライズシステムの構築
Clarifying Requirements
論点
- ニュースフィードのパーソナライズの目的はユーザーのプラットフォームへの定着
- ユーザーがタイムラインを読み込んだ時に、新しいポストを表示する
- 投稿はテキスト・画像・動画の組み合わせ
- ユーザーエンゲージメントを維持するには、最もエンゲージメントの高いコンテンツをタイムラインのトップに表示する
- click, like, shareのような特定のエンゲージメントに最適化した方がいいか
- プラットフォーム上での主要なユーザーリアクションは何か
- システムのレイテンシ要件
- 1日のアクティブユーザー数、1にのタイムライン更新回数
要件整理
- パーソナライズしたユーザーフィードシステムの構築
- ユーザーエンゲージメントに基づいて、見られていない投稿、見られていないコメントがある投稿のランク付を行う
- 200ms以内
- システムの目的はユーザーエンゲージメントの増加
Frame the problem as an ML task
Defining the ML objective
- 候補
- 滞在時間やクリックなどの暗黙的なユーザーリアクション数の最大化
- likeやshareなどの明示的なユーザーリアクション数の最大化
- 暗黙的と明示的なリアクションの重み付スコアの最大化(採用)
Specifying the system’s input and output
- 入力 : ユーザー情報
- 出力 : エンゲージメントスコアに基づいてランク付された見られていない or 見られていないコメントがある投稿のリスト
Choosing the right ML category
- Pointwise Learning to Rank (LTR)
- ユーザーと投稿の特徴を元に、複数の単クラス分類モデルを作成
Data Preparation
Data engineering
- 利用可能データ
- User
- Posts
- User-post interactions
- Friendship
Feature engineering
- Post features
- Text content
- Images or videos
- Reactions
- Hashtags
- Post’s age
- User features
- デモグラ情報
- コンテキスト情報
- ユーザー投稿履歴
- 投稿へのメンション
- User-author affinities
- like, click, comment, share rate
- 投稿主とユーザーのフレンド期間
- 近しい友達・家族か
Model Deployment
- Model selection
- neural network
- 非構造化データを扱える
- カテゴリカル特徴を表現するEmbedding layerを使える
- 事前学習済みのモデルでfine tuningを行える
- architecture
- N independent DNNs
- A multi-task DNN
- neural network
- Model training
- Constructing the dataset
- likeのクラス分類用のデータセットでは、likeのリアクションがあった投稿のラベルを正例として、likeのリアクションがない投稿を負例として扱う
- Choosing the loss function
- combine task-specific loss
- binary cross-entropy (classification task)
- MAE, MSE, Huber loss (regression task)
- combine task-specific loss
- Constructing the dataset
Evaluation
- Offline metrics
- Online metrics
- Click-through rate (CTR)
- Reaction rate
- Total time spent
- User satisfaction rate found in a user survey
Serving
- Data preparation pipeline
- Prediction pipeline
- Retrieval service
- Ranking service
- Re-ranking service
Other Talking Points
- 口コミが広がるだろう投稿の扱い
- 新規ユーザーに対するパーソナライズ
- 潜在的なバイアスを緩和させる方法
- 適切な再学習頻度
11. People You May Know
Facebook, LinkedIn, Twitterのような、共通の学校・友達・職場などの繋がりを持ちたいと思えるユーザーリスト(PYMK)を作成するシステムの構築
Clarifying Requirements
論点
- PYMKの目的はユーザーに見込みのあるつながりを見つけてもらってネットワークを広げてもらうこと
- つながりを考慮する上で最も重要な要素は学歴、職歴、ユーザーの社会的コンテキスト
- フレンドであるとはお互いが友達申請状態にあることか
- プラットフォーム上のユーザー数の合計、1日のアクティブユーザー数
- ユーザーあたりの平均つながり数
- ほとんどのユーザーのソーシャルグラフは安定していて、短期間では大きく変わらない
要件整理
- LinkedInのようなPYMKの構築
- 入力はユーザー情報、出力は見込みのあるつながりのリスト
- システムのモチベーションはユーザーに新しいつながりを見つけてもらい、ネットワークを拡大してもらうこと
- 10億ユーザーが存在し、ユーザーは平均1000のつながりを持つ
Frame the problem as an ML Task
Defining the ML objective
- ユーザー間のつながり数を最大化する
Specifying the system’s input and output
- 入力 : ユーザー情報
- 出力 : ユーザーに関連するつながりのリスト
Choosing the right ML category
- Pointwise LTR
- PYMKをランキング問題と捉える
- Graph構造の予測タスク
- Graph-level prediction
- Node-level prediction
- Edge-level prediction
- Edge prediction
- グラフ情報を扱うモデル
- 2つのNode間にEdgeが存在する確率を予測
Data Preparation
Data engineering
- 使用可能データ
- User
- Connections
- Interactions
Feature engineering
- User features
- User-user affinities
- 学歴・職歴の親和性
- 社会的な親和性
Model Deployment
- Model selection
- Graph Neural Network (GNN)
- グラフを入力として扱える
- Node embeddingを作成しNodeを数値表現
- 2つのNode間のつながりは内積計算による類似性の測定によって表現
- GNN-based architectures
- GCN, GraphSAGEm GAT, GIT
- Graph Neural Network (GNN)
- Model training
- Constructing the dataset
- 時刻tのグラフのスナップショットを作成
- グラフの初期ノード特徴、エッジ特徴を作成
- ラベリング
- Constructing the dataset
Evaluation
Serving
- Efficiency
- 10億ユーザー全てを候補とすると計算量が膨大となるため、候補を絞る必要がある
- Utilizing FoF
- 推薦候補をフレンドのフレンドに限定する
- Pre-compute PYMK
- Online prediction
- ホームページを更新した際にリアルタイムで見込みのあるつながりを計算する
- Batch prediction
- 事前に予測値を計算しDBに格納しておく
- Online prediction
- ML system design
- PYMK generation pipeline
- 全ユーザーのPYMKを生成し、DBに格納しておく
- Prediction pipeline
- PYMK generation pipeline
Other Talking Points
- Personalized random walkがレコメンドシステムの別候補として有効
- 頻繁にログインするユーザーがレコメンドに現れやすいバイアスが存在する
- ユーザーがレコメンドを無視した際のフィードバックをシステムに導入する
- 遅れフィードバックの扱い