はじめに
Google CloudのProfessional Machine Learning Engineerの学習中のメモとなります。
PrecisionとRecallとF1スコア
Presicion(適合率)
モデルが正解と予測したデータのうち、実際に正解だった割合。
精度を重要視するときに使用することが多い。(誤検出による影響が大きい場合)
Recall(再現率)
実際には正解であるデータのうち、どれだけを正しく正解と予測できたかの割合。
網羅性を重要視するときに使用することが多い。(検出漏れによるリスクが大きい場合)
偽陰性(False Negative)を最小限に抑えることに重点を置いている。
F1スコア
PresicionとRecallをバランスよくとるのに最適。
偽陽性(False Positive)と偽陰性(False Negative)両方を最小限に抑えることに重点を置いている。
L1正則化とL2正則化
L1正則化
不要な重みを0に近づけやすくし、モデルがシンプルになる。
多くの重みが0になり、重要な特徴量が残る。
外れ値の影響を受けにくい。
L2正則化
重みの分散を小さくする。
外れ値の影響を受けやすい。
知識ベースフィルタリングと協調フィルタリングモデルの違い
知識ベースフィルタリング(knowledge-based filtering model)
ユーザーの好みやニーズを、具体的な知識やルールに基づいて判断する。
例
- 「SF小説が好きな人」には、「SFジャンルの小説」をおすすめする。
- ECサイトで、「カメラ」を検索した人に、「カメラ関連のアクセサリー」をおすすめする。
協調フィルタリング(collaborative-based filtering model)
ユーザーの過去の行動履歴(評価、購入履歴など)に基づいて、他のユーザーの行動パターンを参考に、おすすめアイテムを予測する。
例
- ある映画を「面白い」と評価したユーザーが多かった場合、その映画をまだ見ていないユーザーにおすすめする。
- 音楽ストリーミングサービスで、特定のアーティストの曲をよく聞く人に、同じようなアーティストの曲をおすすめする。
参考
カテゴリカルクロスエントロピーとスパースカテゴリカルクロスエントロピーの違い
カテゴリカルクロスエントロピー (Categorical Crossentropy)
ラベルの形式がOne-hotエンコーディングされているときの分類問題のときに最適。
例
3つのクラス(猫、犬、鳥)を分類する場合、「犬」が正解なら、ラベルは [0, 1, 0] のようになる。
スパースカテゴリカルクロスエントロピー (Sparse Categorical Crossentropy)
正解ラベルの形式が整数値の分類問題のときに最適。
例
3つのクラス(猫、犬、鳥)を分類する場合、「犬」が正解なら、ラベルは 1 のようになる (クラスのインデックス)。
参考
DataflowでのRunInference API
モデルをエンドポイントにデプロイする代わりに、RunInference APIを使用することでDataflow内で推論可能になる。
レイテンシを最小限に抑えられる。
MirroredStrategyとMultiWorkerMirroredStrategyの違い
MirroredStrategy
1台のマシンの複数のGPUでの分散学習。
MultiWorkerMirroredStrategy
複数のマシンの複数のGPUでの分散学習。
参考
スキュー(Skew)とドリフト(Drift)
スキュー(Skew)
本番環境での特徴データの分布が、モデルのトレーニングに使用される特徴データの分布と異なる状態。
ドリフト(Drift)
本番環境において特徴データの分布が時間の経過とともに大きく変化する状態。
参考
機密データを分類するとき
- データを隔離(Quarantine)バケットに格納する
- Cloud DLPを使用してデータを検査する
- 結果を適切なバケット(機密バケット or 非機密バケット)に移動させる
Vertex AI PipelinesでのTensorFlow Extended(TFX)とKubeflow Pipelinesの使い分け
TensorFlow Extended(TFX)は、テラバイト単位の構造化データまたはテキストデータを処理するTensorFlowを使用する場合に適している。
Kubeflow Pipelinesは、それ以外のケースで使用する。
TPUにおけるbfloat16とfloat32の違い
TPUにおいて、bfloat16の演算はfloat32よりも高速に実行できる。
精度を落とした浮動小数点数を使用すると、モデルの精度を失わずに収束までの時間を短縮できる。
BigQueryのデータをTensorFlowで読み込む方法
BigQueryのデータをTensorFlowへ直接読み込むことが可能。
データ取り込みのボトルネックを最小限に抑えられる。
不均衡データセットの対応
ダウンサンプリング(Downsampling)とアップウェイト(Upweight)を行う。
ダウンサンプリング(Downsampling)
多数クラスのデータを減らして、少数クラスとの割合を緩和させる。
アップウェイト(Upweight)
少数クラスの学習時に重みを付与して、重要度を上げる。
参考
カテゴリカル変数をモデルに入力するとき
one-hotエンコーディングを行う。
カテゴリ間の大小関係を誤解させないようにすることができる。
もしカテゴリ変数を整数値に変換してしまうと、大小関係を学習してしまう恐れがある。
GPUとTPUのデバッグの容易さ
GPUはデバッグがしやすい。
TPUはトレーニングエラーやTPUエラーのデバッグが難しい。
BigQuery MLの自動特徴前処理
BigQuery MLは、CREATE MODEL
を使用すると自動前処理が実行される。
自動前処理は、欠損値の補完と特徴量の変換が行われる。
Tabnet
Tabnet(Tabular Attention Network)とは、Googleが開発した、テーブルデータ(表形式のデータ)を扱うための深層学習モデル。
モデルがどのように予測に至るのかを説明することが可能。
Reduction Server
WorkerとReducerの2つのノードで、計算を行う仕組み。
Workerは主にGPU上でモデルを実行し勾配を計算する。
ReducerはCPU上でWorkerの結果を集約する。
Vertex AI WorkbenchとColab Enterpriseの使い分け
Vertex AIには、ノートブック環境がVertex AI WorkbenchとColab Enterpriseの2つが用意されている。
Vertex AI Workbench
VMインスタンスを介してノートブック環境が提供されるので、インフラストラクチャを細かく管理することができる。
Colab Enterprise
インフラストラクチャの管理に時間を費やさない(マネージド コンピューティング)でノートブック環境を使用できる。
ノートブックを共有して共同編集が可能。
参考