Meta Learning

[TOC]

MAML (1/9)

Introduction of Meta Learning

  • Life-long Learning = one model for all the tasks
  • Meta Learning = How to learn a new model

Machine Learning

Meta Learning

  • Machine Learning 可以說是 根據資料找一個函數 f 的能力
    • f 的 input 是 (一筆) 資料,output 是 prediction
  • Meta Learning 可以說是 根據資料找一個函數 F 的能力,這個函數 F 可以找到上面說的函數 f
    • F 的 input 是 一個資料集,output 是 一個 function f (可能是一個 NN 的 (超?)參數)

MAML (2/9)

  1. Define a set of learning algorithm
    • 讓機器自己設計一些 learning algorithm,例如 network structure、initialization parameter、得到 gradient 之後 optimize 的方式、activation function ... 等。
  2. Defining the goodness of a function
    • , i.e. sum of test loss over all tasks

MAML (3/9)

  • 在 meta learning 中 Tasks 內的 training data 被稱為 Support set;testing data 被稱為 Query set
  • 假設 train 每個 task 都需要一天或很久,那 meta-learning 的研究很難做,因此往往會假設每個 task 的訓練資料都很少,因此常常跟 few-shot learning 扯上關係

MAML (4/9)

Omniglot - Few shot Classification

  • 1623 characters
  • Each has 20 examples

  • N-ways K-shot classification: 在每個 training & test tasks 每個 task 有 N classes、每個 class 有 K 個 examples

  • 要在這個 dataset 上做 meta learning,會先把 class 分成 training & testing 的 class。然後對於每個 training task,都隨機抽 N 個 class,每個 class 又再抽 K 個 example。testing tasks 同理。

MAML (5/9)

Techniques Today

  • MAML
    • Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks. ICML 2017
  • Reptile

    • On Fist-Order Meta-Learning Algorithms. arXiv 2018
  • match network

  • prototype network

MAML

來 learn 一個最好的 initialization parameter

  • 所有 task 用同樣的 initialization,因此所有 task 的 model structure 必須一樣
  • :(學到的) initialization 的參數
  • :task model 利用初始化參數 訓練後得到的參數

MAML 與 Model Pre-training 的差異

實作上

  • 只考慮一步的 gradient descent,理由:
    • initialization 真的很好的話,只 update 一次也可以很好
    • testing 的時候還是可以 update 很多次參數
    • few-shot learning 的 data 很少,update 太多次可能 overfitting

MAML (6/9)

Experiments on Omniglot & Mini-ImageNet

MAML (7/9)

math

meta learning 的 gradient descent 以及 task 的 gradient descent

meta learning 的 loss

根據 chain rule 計算每個初始參數 對訓練後 loss 的偏微分

那因為每個初始化參數 都會影響訓練後的每個參數 然後影響到最後的 loss function,因此

  • 這裡比較麻煩的是算
  • 計算 ,先得知
    • 是在訓練每個 task 的時候的 learning rate
    • 時,
    • 時,

不過要計算二次微分 cost 很大,因此在 MAML 這篇 paper 直接省略二次微分項 (WTF?),結果就是

  • 可是為什麼二次微分可以用 0 來 approximate ???

再代回 因此

最後做 gradient descent 時其實是利用 在做 update

MAML (8/9)

Real Implementation

  1. 每個 mini-batch 會 sample 出 batch_size 個 task,如果是做 SGD 就只 sample 一個 task 更新 的方向,等同於 的梯度方向,因此可以視為第二次更新 時所計算的 gradient 方向

可以實際應用在 machine translation 的 task

論文:arXiv 1808.08437

MAML (9/9)

Reptile

  • 論文:Reptile: A Scalable Meta-Learning Algorithm.
  • reptile 沒有限制只能 update 一次參數,task n 訓練完的參數為
  • 直接看 應該要走什麼方向,直接用那個方向當 gradient 來 update

Reptile v.s. MAML v.s. Pre-train

Crazy Idea

Gradient Descent as LSTM (1/3)

論文x2:

  • Optimization as a Model for Few-shot Learning. ICLR 2017
  • Learning to learn by gradient descent by gradient descent. NIPS 2016

Review of RNN & LSTM

Gradient Descent as LSTM (2/3)

LSTM 其實和 gradient descent 很相似

    • 時,LSTM 其實就和 gradient descent 一樣
    • 所以 gradient descent 可以說是 LSTM 的簡化版
    • 如果讓 LSTM 自己去學 則就是在學一個 dynamic learning rate;讓 LSTM 自己學 的話他會縮小參數 (因為介於0~1),因此 可以視為 regularization 的角色

  • 這裡特別假設 無關,可以直接像一般的 LSTM 訓練,不然做 gradient descent 很麻煩

Gradient Descent as LSTM (3/3)

實作上參數有百萬個,但不可能用百萬維的 LSTM,因此

  1. 只有一個 LSTM cell
  2. 所有參數 share 同一個 LSTM

  • training 跟 testing 的 model 可以不一樣 (0.0 我再想想...

  • 老師認為這種 approach 滿合理的,還沒人做

Metric-based (1/3)

已知,筆記隨便做

Siamese Network

  • training 和 testing 一次做好。ex: NN 直接 output testing image 和 training 是否同個人

Metric-based (2/3)

論文:

  • What kind of distance should we use?
    • SphereFace: Deep Hypersphere Embedding for Face Recognition
    • Additive Margin Softmax for Face Verification
    • ArcFace: Additive Angular Margin Loss for Deep Face Recognition
  • Triplet loss
    • Deep Metric Learning using Triplet Network
    • FaceNet: A Unified Embedding for Face Recognition and Clustering

Metric-based (3/3)

若要在 5-ways 1-shot 怎麼做?

Prototypical Network

Prototypical Networks for Few-shot Learning. NIPS 2017 計算不同圖片經過同個 CNN embedding ,再計算相似度,然後用 softmax output probability,最後做 cross entropy loss 的 gradient descent

  • 那 few-shot 怎麼做? 直接 testing data 同 class 的不同圖片做 embedding 的平均,有新圖片就看和哪個 class 的平均靠最近

Matching Network

Matching Network 比較舊,也沒比較好,還會用到 memory network,就不細看了

  • 用 bidirectional LSTM 處理每張圖片
  • 其餘做法和 prototypical network 相同

Relation Network

  • training 的 embedding 和 testing 的 embedding 會 concat
  • 相似度是用 NN 訓練的,不是人訂的
  • embedding 和 similarity 是 jointly trained

Few-shot learning for Imaginary Data

  • 訓練一個 generator 把某個人的一些狀態想像出來,再丟進 NN 訓練
  • generator 和 NN 可以 jointly trained

Meta Learning - Train+Test as RNN

還沒細看,不過是在介紹

  • MANN: Memory Augmented Neural Network
  • SNAIL: Simple Neural Attentive Meta-Learner

results matching ""

    No results matching ""