深層学習 学習まとめ: その他の各種モデル

# その他の各種モデル

## Metric-learning(距離学習)
- 距離学習ではデータ間の metric、すなわち「データ間の距離」を学習する
    - データ間の距離を適切に測ることができれば、距離が近いデータ同士をまとめてクラスタリングができたり、他のデータ要素から距離が遠いデータを異常と判定することで異常検知したりと様々な応用が可能となる
    - 深層距離学習(deep metric learning)は、ディープラーニング技術を利用した距離学習の手法
- CNN等で出力された特徴ベクトル(feature vector)の属する空間は埋め込み空間(embedding space)と呼ばれるが、この埋め込み空間内で類似サンプルの特徴ベクトルは近くに、非類似サンプルの特徴ベクトルは遠くに配置されるように学習を行う
- Siamese network
    - 2つのサンプルをペアで入力しそれらのサンプル間の距離を明示的に表現して調整する
        - CNNにペア画像を入力し、その出力である特徴ベクトルを得る
        - 埋め込み空間内での2つの特徴ベクトルの距離Dが「最適」となるようにネットワークのパラメータを学習する
        - ペア画像が同じクラスの場合には距離Dが小さくなるように、逆に異なるクラスの場合には大きくなるように損失関数Lを設計し、学習を行う
    - 損失関数contrastive lossの最小化を図る
        - $ L = \dfrac{1}{2}[yD^2 + (1-y)max(m - D), 0)^2] $
        - $y$は入力サンプルのペアが同じクラスに属する場合には1, 異なるクラスの場合には0
        - $D$はユークリッド距離(L2距離)を使うことが多い
        - $y=1$の場合には第一項で近付ける方向に、$y=0$の場合には第二項で遠ざける(マージン$m$まで)方向に働く
- Siamese networkの欠点は、同じクラスのデータに対しては$D = 0$となるまで、つまり埋め込み空間中のある1点に埋め込まれるまで最適化し続けてしまう点
    - 類似度を反映した良い埋め込み空間を得ることが難しい
- Triplet network
    - Triplet networkでは3つのサンプルを一組で入力する
        - 3つのサンプルは、基準となるサンプル$x_a$(アンカーサンプル)と、その類似サンプル$x_p$、および非類似サンプル$x_n$
    - 損失関数triplet lossの最小化を図る
        - $ L = max(D_p - D_n + m, 0) $
        - $ D_p + m > D_n $の場合に損失関数が正の値を持ってペナルティーが課される構造になっている
        - これは非類似サンプルの特徴ベクトル$f(x_n)$が、類似サンプルの特徴ベクトル$f(x_p)$+マージン$m$より内側にある状態
- Triplet networkのメリット(特にSiamese networkと比較して)
    - Triplet networkは、類似サンプルについて、$D = 0$となるまでの最適化をしないので、類似度を反映した良い埋め込み空間を得ることができる
    - またTriplet networkは類似/非類似サンプルを用いるため、何が類似かがはっきりと示されている
        - この点、Siamese networkはコンテクストを考慮する必要がある
- Triplet networkの課題
    - 学習がすぐに停滞してしまう
        - 学習データセットのサイズが増えてくると考えうる入力の組み合わせが膨大になり、かつその殆どの組み合わせが学習が進むにつれてパラメータ更新に影響を及ぼさなくなるため
        - このため、学習に有効な入力セットを厳選する必要がある(triplet selection/triplet mining)
    - クラス内距離がクラス間距離より小さくなることを保証しない
        - 4つのサンプルを使うQuadrupt lossという損失関数が提案されている

## MAML(Model-Agnostic Meta-Learning, メタ学習)
- 深層学習モデルの開発に必要なデータ量を削減したい
    - 少ないデータ量で学習させたい
- メタ学習
    - 複数の物事に対する共通の概念を自ら学習し、得られた知識を未知の問題に適用する
        - 類似したタスクの集合から、機械学習モデルが自らタスク間に共通のメタ知識(meta-knowledge)と呼ばれる概念を学習する
- MAMLのコンセプト: タスクに共通する重みを学習し、新しいモデルの学習に活用
    - タスクごとの学習を行った結果を共通重みに反映させ学習する
    - この共通重みが新しいモデルの学習時に利用される「良い」初期値となる
- 特徴
    - Model-Agnostic
        - 微分可能である以外、モデルや損失関数の具体的な形式を制約しない
    - Task-Agnostic
        - 回帰、分類、強化学習など、様々なタスクに適用できる
- 学習手順
    - まず共通重み$ θ $をランダムに初期化
    - Inner loopでタスク集合から個別タスクを取り出し、そのタスクで最適化された重みを得る
    - これをタスクの個数分繰り返す
    - ここのタスクで得られた重みを集め、SGDで共通重み$θ$を更新する
    - これをOuter loopとして、$θ$が収束するまで繰り返す
- 効果があることは確認されているが、タスクごとの勾配計算と共通パラメータの勾配計算の2回が必要となるため、計算量が多い
    - また実用的にはInner loopのステップ数を大きくできない
    - これらについては、計算コストを削減する近似方法が提案されている

## グラフ畳み込み(Graph Convolutional Network, GCN)
- 元の関数にフィルターをかける
    - $ y(t) = g(t) * x(t) $
    - 用途は様々だが、グラフ畳み込みにおいては特徴をはっきりさせるため
    - 2次元画像に対してフィルターをかけるのがCNN
    - グラフ(ノードとエッジの結びついたデータ構造)に対してフィルターをかけるのがGCN
        - 畳み込みで関数の特徴を際立たせている
- 畳み込みの一般的な形
    - 連続的な関数に適用
        - $ y(t) = (f*g)(t) = \int f(𝜏)g(t, 𝜏)d𝜏 $
    - 離散的な関数に適用
        - $ y(m) = (f*g)(m) = \displaystyle \sum_n f(n)g(m, n) $
        - $ g(t, 𝜏) $や$ g(m, n) $が重み
        - 元の関数に重みをかけて、強調するところと、捨象するところの区別をする
- 二つのアプローチ
    - Spatial(空間的)な場合: Spatial GCN
        - グラフにクラスタリングを繰り返す
        - ノイズが目立たなくなり、形をはっきりさせる
        - 計算コストは$ O(n) $
            - パラメーター数$ n $に比例するオーダー
    - Spectral(スペクトル的)な場合: Spectral GCN
        - スペクトルに分解することで、特徴的な成分を明らかにする
        - グラフ畳み込みにフーリエ変換を応用する(グラフフーリエ変換)
        - 固有値分解が必要なため、計算量が多いのが課題
            - 計算コストは少なくとも$ O(n^2) $


# 深層学習の説明性
- ディープラーニング活用の難しいことの１つは 「ブラックボックス性」
    - 判断の根拠を説明できない
    - モデルの解釈性 に注目し、 「ブラックボックス性」の解消 を目指した研究が進められている

## CAM (Class Activation Mapping)
- Global Average Pooling(GAP)は通常学習の過学習を防ぐ、正則化の役割として使われてきたが、CNNが潜在的に注目している部分を可視化できるようにする役割も持っていることがわかった
- CAMとは、出力層の重みを畳み込み特徴マップに投影することで、画像領域の重要性を識別する
- 実装としては、出力層につながっている重みのうち、どのクラスかを指定し、最後の畳み込み層の特徴マップとの内積をとる

## Grad-CAM
- CNNモデルに判断根拠を持たせ、モデルの予測根拠を可視化する手法
    - 名称の由来は ”Gradient” = 「勾配情報」
        - 最後の畳み込み層の予測クラスの出力値に対する勾配を使用
    - 勾配が大きいピクセルに重みを増やす： 予測クラスの出力に大きく影響する重要な場所
- モデルがある画像においてどのピクセルに着目してクラス分類したのか
    - 特徴マップと重み係数を線形結合し、ReLU関数で出力する
- CAMはモデルのアーキテクチャにGAPがないと可視化できなかったのに対し、Grad CAM はGAPがなくても可視化できる
    - また、出力層が画像分類でなくてもよく、様々なタスクで使える

## LIME (Local Interpretable Model-agnostic Explanations)
- モデルを問わず様々な学習モデルに適用できる
    - 特定のサンプルに焦点を当ててモデルを解釈するという点で、機械学習モデルの局所的な説明ツールであると言える
    - 複雑なモデルを、より単純な解釈しやすいモデルである線形回帰で近似する
- 特定の入力データに対する予測について、その判断根拠を解釈・可視化するツール
    - 表形式データ： 「どの変数が予測に効いたのか」
    - 画像データ： 「画像のどの部分が予測に効いたのか」
- 単純で解釈しやすいモデルを用いて、複雑なモデルを近似することで解釈を行う
    - LIMEへの入力は１つの個別の予測結果
        - モデル全体の近似は複雑すぎる
    - 対象サンプルの周辺のデータ空間からサンプリングして集めたデータセットを教師データとして、データ空間の対象範囲内でのみ有効な近似用モデルを作成
    - 近似用モデルから 予測に寄与した特徴量を選び 、解釈を行うことで、本来の難解なモデルの方を解釈したことと見なす

## SHAP (SHapley Additive exPlanations)
- モデルを問わず様々な機械学習モデルに適用できる
    - 特定のサンプルに焦点を当ててモデルを解釈するという点で、機械学習モデルの局所的な説明ツールであると言える
- 協力ゲーム理論におけるShapley値（シャープレイ値）を利用して各説明変数の寄与を説明する
    - Shapey valueは、プレイヤーが協力し、それによって獲得した
報酬を分配する環境において、平均的な限界貢献度を意味する
    - 機械学習においては、モデルから出力された予測値を、貢献度が異なる特徴量にどう分配するか
        - 機械学習において、ある順序における、予測値への特徴量の貢献度を表す