0
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Few-Shot Learning Basic Concepts

Last updated at Posted at 2021-03-26

Youtube で見つけたFew-Shot Learningの解説動画の聴講メモ。

Basic Concepts of Few-Shot Learning

  • Few-Shot Learningの定義 : 少ないサンプル数で分類や回帰をするもの

  • Few-Shot Learningの目的 : 物体の同質性や相違性を学ぶこと

    • 教師あり学習のような、学習データを記憶することとは異なる
  • データ

    • Training Set : 学習データ / 量が多い / DNNを学習する
    • Support Set : ラベル付きの少数のサンプル / DNNの学習は不可
    • Query Image : 評価用データ
  • メタ学習とFew-Shot Learning

    • メタ学習 : Learn to Learn(学習することを学ぶこと)
      • ex) 初めてカワウソを見た子供に、いろんな動物の画像を含んだSupport Setを見せて、カワウソがどれかを言い当てさせる
      • Support Setの画像が各動物一枚ずつ=One shot Learning
  • 教師あり学習 VS Few-Shot Learning

    • 教師あり学習
      • 評価データはモデルにとって未知のデータ
      • 評価データはモデルにとって既知のクラスに属している
    • Few-Shot Learning
      • 評価データはモデルにとって未知のデータ
      • 評価データはモデルにとって未知のクラス
  • k-way n-shot Support set

    • k-way : Support Setのクラス数
      • way数が多いほど、モデルにとって難しい問題となる
    • n-shot : Support Setのクラスごとのサンプル数
      • shot数が多いほど、モデルにとって簡単な問題となる
  • メカニズム

      1. Similarity 関数(画像ペアの類似度を測る関数)をTraining Setで学習する
      1. 1.で作成した関数でQuery Imageと各Support Setを比較し、もっとも類似度が高い画像を探す
        スクリーンショット 2021-03-24 17.48.14.png
  • よく使われるデータセット

    • Omniglot

      • 50のアルファベットについて、手書き文字画像20サンプルずつ存在
        スクリーンショット 2021-03-26 12.21.47.png
        スクリーンショット 2021-03-24 17.53.33.png
    • Mini-Imagenet

      • 100クラスの物体について、それぞれ600サンプルずつ存在

スクリーンショット 2021-03-26 12.22.00.png

Siamese Network

  • 手法1 : Learning Pairwise Similarity Scores

    • Training Set

      • Positive Samples
        • どの画像ペアが同じクラスかを学習させる
      • Negative Samples
        • どの画像ペアが異なるクラスかを学習させる
      • Positive SamplesとNegative Samplesは同数となる
        スクリーンショット 2021-03-24 17.59.34.png
    • モデル
      スクリーンショット 2021-03-24 18.00.35.png

    • 順伝播

      • 以下はPositive samplesの例
      • Negative Samplesの場合はTargetが0となる
      • Lossはクロスエントロピーなどで算出
        スクリーンショット 2021-03-24 18.04.56.png
    • 逆伝播
      スクリーンショット 2021-03-24 18.06.20.png

    • 評価時
      スクリーンショット 2021-03-24 18.09.31.png

  • 手法2 : Triplet Loss

    • Training Setの取得方法

      • Anchor / Postive / Negativeを選択する
      • AnchorとPostiveは同クラス、Negativeは左記らと異なるクラス
        スクリーンショット 2021-03-24 18.12.33.png
    • Lossのイメージ

      • d+は小さくなることが期待される
      • d-は大きくなることが期待される
        スクリーンショット 2021-03-24 18.15.29.png
    • 潜在空間でのLossのイメージ
      スクリーンショット 2021-03-24 18.17.30.png

    • マージンの設定
      スクリーンショット 2021-03-24 18.19.01.png

    • Lossの算出方法
      スクリーンショット 2021-03-24 18.20.37.png

    - 評価時
    スクリーンショット 2021-03-25 11.20.31.png

  • 要約

    • 学習はSiamese networkをふ大規模なtraining setを用いて行う
      • Siamese networkは対象物の類似性や相違性を学習する
    • Support setを与える
      • k-way は k classであることを指す
      • n-shotは各クラスがnサンプルあることを指す
      • training setはk classを含まない

Pretraining and Fine Tuning

  • 予備知識

    • コサイン類似度

      • 二つのベクトルの類似度の計算方法
      • 二つのベクトルの内積を、それぞれのベクトルのノルムを乗算したもので除算する
        • しかし、ノルムは1なので実質的にコサイン類似度は内積
      • コサイン類似度は以下の図xの正射影とも理解できる(ノルムが1であることに注意)
      • もしノルムが1でない場合は、正規化する
        スクリーンショット 2021-03-25 11.43.45.png
        スクリーンショット 2021-03-25 11.44.52.png
    • Softmax関数

      • ベクトルを確率分布に変換する関数
      • もっとも大きい入力を相対的により大きく、小さい入力を相対的により小さく変換する
        スクリーンショット 2021-03-25 17.26.33.png
        スクリーンショット 2021-03-25 17.27.12.png
  • 事前学習

    • 事前学習時の学習方法については、以下がある。

      • 一般的な教師あり学習
      • Siamese Networkを用いた学習
        スクリーンショット 2021-03-25 17.37.34.png
    • 評価方法

      • 以下の3-way 2-shotの例では以下を行う
        • 事前学習した特徴抽出器で画像からベクトルを生成
        • クラスごとに平均
        • 正規化
          スクリーンショット 2021-03-25 17.41.04.png
          スクリーンショット 2021-03-25 17.44.34.png

スクリーンショット 2021-03-25 17.46.27.png

スクリーンショット 2021-03-26 11.42.13.png

  • 転移学習
    • 5way 1shotで2~7%の改善が見られた
    • 5way 5shotで1.5~4%の改善が見られた

スクリーンショット 2021-03-26 11.43.57.png

スクリーンショット 2021-03-26 11.50.54.png

スクリーンショット 2021-03-26 11.52.58.png

スクリーンショット 2021-03-26 11.54.23.png
スクリーンショット 2021-03-26 11.55.52.png

  • 要約
    • 事前学習したCNNでのFew-Shot評価は以下の工程で行える。
      • Step1(事前学習)
        • CNNを大規模なtraining dataで学習する
      • Step2(評価)
        • Support Setの画像を特徴ベクトルへと変換する
        • 各クラスの平均特徴ベクトルを作成し、それぞれを行ベクトルとする行列Mを作成
        • Queryと行列Mの積にバイアス項を加え、Softmaxを適用する
    • 転移学習をする場合,
      • Step1(事前学習)
        • CNNを大規模なtraining dataで学習する
      • Step1-dash(転移学習)
        • Support Setで学習する
      • Step2(評価)
        • Support Setの画像を特徴ベクトルへと変換する
        • 各クラスの平均特徴ベクトルを作成する、それぞれを行ベクトルとする行列Mを作成
        • Queryと行列Mの各行とのコサイン類似度を計算し、Softmaxを適用する
0
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?