G検定 勉強用メモ
本ページ末尾のサイトや公式テキストを参考にしながら、重要そう or 自信なさげなのを追記。
(G検定公式テキスト 第3版が最新版だが手元にあるのが第2版のため、出題範囲外が含まれてる可能性があります。)
統計
TP, FP, FN, TN
予測: 陽性 (Positive) | 予測: 陰性 (Negative) | |
実際: 陽性 (Positive) | TP (真陽性)True Positive正しく陽性と予測できた | FN (偽陰性)False Negative陽性を見逃した |
実際: 陰性 (Negative) | FP (偽陽性)False Positive陰性を間違って陽性と予測した | TN (真陰性)True Negative正しく陰性と予測できた |
「TNは、True を Negativeと判断、つまり偽陰性!」というのは誤った理解のため注意。Negativeという結果を出したことがTrueかFalseか、という意味。
Precision, Recall, F値
-
Precision (=TP/(TP+FP)):
予測が正の中で、実際に正だった割合。
「陽性って判断した人、ほんとに感染してた?」の指標 -
Recall(=TP/(TP+FN)):
実際に正の中で、正と予測できたもの。
「感染してる人を見落としてない?」の指標
-
F値: Precision vs Recallはトレードオフのため、調和平均(2*Precision*Recall/(Precision+Recall))を取った指標。
全員に陽性って出すインチキ検査薬の場合、本当に感染してる人を見落とすことはないのでRecallが1になるけど、そのジャッジに意味ないよねってこと。
ROC曲線
閾値を1にすれば、すべてをFalseと判断することになり、 FPR=0, TPR (Recall) =0
逆に、閾値を0にすれば、すべてをTrueと判断することになり、FPR=1, TPR=1
閾値を変更したときの挙動をプロットしていくことで、「ちょうどいい閾値はどこ?」「モデル性能高い?」を可視化
AUC(Area under the curve: カーブより下の部分面積)が高いほど高性能
PCA
データ分散が最大となる方向を第一主成分として選ぶことで、データの広がりを最大限に表現。
ポアソン分布
時間あたりの到着回数など離散カウントデータに適用
応用情報とかに出がちな「待ち行列」問題とか
機械学習・基本方針 & テクニック
バイアスとバリアンスのトレードオフ
未学習、過学習はトレードオフの関係。ちょうどいいところを探る必要がある。
・高バイアス: 学習で得た法則性がシンプルすぎる、未学習。あの時見た例と一緒でしょ?と決めつけて、偏見をもって出力してしまう。
・高バリアンス: 学習で得た法則性が複雑すぎる、過学習。入力したデータが変わるだけで、出力が大きく変わってしまう。
オッカムの剃刀
ある事柄について必要以上に大きな仮定を置くべきでない。
バッチノーマライゼーション
各層において、活性化関数を掛ける前に、伝播してきたデータを正規化。過学習を防止。
正則化
重みの値の範囲を制限するためのペナルティ項として目的関数に追加し、過学習を防ぐ。
正則化をやりすぎると、未学習(アンダーフィッティング)になるので注意。
-
L1正則化(Lasso回帰):パラメータの絶対値をペナルティとして目的損失関数に加える。結果として、不要なパラメータの値をゼロにする挙動になる。
-
L2正則化(Ridge回帰):パラメータの2乗をペナルティとして目的損失関数に加える。結果として、大きすぎるパラメータを抑制する挙動になる。
Optimizer
-
Adam: 勾配の平均と分散により学習率を自動調整。だいたいこれ使っておけばおk。
指標
絶対誤差
-
MAE
-
MSE
分類誤差
-
Cross Entoropy
分布の誤差
-
KL divergence: 二つの分布の差異。0に近づくほど同じ分布。
-
Wasserstein distance: 輸送コストの差により、二つの分布の差異を定義。
対照学習 (Contrastive Learning)
-
Triplet
-
InfoNCE
物体検出誤差
-
IoU
機械学習モデル
ランダムフォレスト
-
ブートストラップサンプリング:重複許して選び直してデータセットを作る。
-
バギング(=Bootstrap aggregating):ブートストラップを使ってできたデータセットで小さいモデルを学習し、それを集約。アンサンブル学習の典型例。
これを決定木でやるから「ランダムフォレスト」。
RNN
重みを伝言ゲーム(BPTT=Back propagation through time)してくから、遡りきれずに勾配消失や勾配爆発が問題となりやすい。
勾配爆発対策として、勾配クリッピング(最大値抑制) を入れるとかは手。
Elman networks, Jordan networksが有名。
LSTM, GRUが改良手法(後述)
LSTM
RNNの記憶力のなさをなんとかするために、保存・忘却を明示的に組み込んだやつ。(1997)
GRU
LSTMの簡略化版。(2014)
畳み込みニューラルネットワーク
-
LeNet (1998)
-
AlexNet (2012): 畳み込み→プーリング→...の繰り返し→全結合 画像認識コンペILSVRC(ImageNet)で高精度
-
VGG
-
GoogLeNet: Inceptionモジュール (異なるフィルターサイズの畳み込みを並列)
-
ResNet: Skip Connection
-
MobileNet: 空間方向はDepthwise Convolution, チャネル方向はPointwise Convolution (1x1の畳み込み)。
Transformer (2017)
「出力を再度入力に導入する...の繰り返しを行う場合、並列化できないので非効率」「異なる時点間の情報を公平に扱えない」
など、既存の時系列モデルの問題点を払拭し、ブレイクスルーとなった。
-
Self-Attention
QueryとKeyの内積でアテンションマップ(注意重み)を計算、Valueに適用。
(QとKの類似性から、Vのどの部分を重要視するかを決定)
-
Multi Head Attention
Attention Mapを複数枚用意し、より多様な視点での判断を導入。
GAN (2014)
偽物を作るGeneratorと、それを見破るGeneratorを競わせることで、生成画像のクオリティがあがってくやつ。天才的発想すぎる。
Generator vs Discriminator がナッシュ均衡になることを目指す。← ゲーム理論的に説明できるらしい。
-
Wasserstein GAN: Wasserstein距離(輸送コスト)の最小化を目的にすることで、勾配クリッピングの役割を果たし安定化。
Diffusion
ノイズの取り除き方を学習し、画像などを生成
-
Forward(拡散)過程: ノイズ加算
-
逆拡散: ノイズ除去。ノイズの勾配を近似したスコア関数を学習に用いる。
強化学習
-
ε-greedy: 確率εでgreedy(ランダム)な選択をし、探索を促進。確率1-εで、モデルの判断通りに動く。
価値関数
-
Q-learning
-
SARSA
方策勾配
-
REINFORCE
-
Actor Clitic
-
A3C
モデルの解釈性
機械学習モデルの出力の根拠を推測する方法。
-
LIME:特定の特徴量に関する線形モデルに近似させ、その影響力を予測する。
-
SHAP(SHapley Additive exPlanations): ゲーム理論に基づくアプローチ(シャープレイ値)により、各特徴量の「貢献度」を算出。
-
Counterfactual Explanation: 入力を変更したときの挙動の変化を観察。
画像認識
画像認識
物体検出
-
2段階モデル: 位置検出→クラス分類の順に処理
-
R-CNN
-
FPN
-
-
1段階モデル: 位置検出とクラス分類を同時に処理
-
YOLO
-
SSD
-
セグメンテーション
-
セグメンテーションの種類
-
セマンティック
-
インスタンス
-
パノプティック
-
-
SegNet
-
U-Net
-
PSPNet
-
DeepLab
-
DeepLab V3+
音声処理
自然言語処理
機械学習 ビジネス応用とかの話
MLOps
-
データの収集と準備
ビジネス課題を解決するために必要なデータを収集し、モデルが学習しやすいように整形・加工するフェーズ。
-
モデル開発と学習
データサイエンティストがモデルの設計や実験を行い、準備されたデータでモデルを学習させるフェーズ。この段階でのコードやデータの変更をトリガーに、次のステップであるCIが実行される。
-
テストと評価 (CI: 継続的インテグレーション)
新しいコードやモデルが追加・変更されるたびに、自動でテストを実行するフェーズ。ここでモデルの精度、公平性、コードの品質などをチェックし、全体のシステムに問題がないかを継続的に検証する。 -
デプロイ (CD: 継続的デリバリー/デプロイ)
CIのテストを無事に通過したモデルを、自動で本番環境にリリースするフェーズ。ユーザーが実際に使える状態にする。 -
監視 (モニタリング)
本番環境で稼働しているモデルの性能(精度など)や、入力されるデータの傾向が変化していないかを継続的に監視するフェーズ。 -
再学習
モニタリングによってモデルの性能劣化(モデルディケイ)やデータの変化(データドリフト)を検知した際に、新しいデータを使ってモデルを自動で更新・再学習させるフェーズ。この再学習とデプロイのプロセスも、CI/CDパイプラインによって自動化される。
(学習時と状況が変わり、入力されるデータを正しく解釈できなくなってきた、という状況になったら再学習しよう!)
Federated Learning
データを一箇所に集めることなく、分散した状態で機械学習モデルを学習
プライバシー◎
Differential Privacy
出力にノイズを加えて個人情報の再識別を防ぐ
あとで
Grad-CAM
ELMO
赤池情報量基準 AIC
Strong ScalingとWeak Scaling