李宏毅——元學習meta learning1

導語

什麼是meta learning:學習如何去學習
例子:
機器學習了一堆任務後,再過去經驗上,成爲一個更好的學習者
比如做語音辨識,圖像辨識後,學習文字分類更快
在這裏插入圖片描述
life-long和meta-learning的區別:
life-long是一個模型一直學習
meta不是一個模型,而是學會更好的學習

meta-learning

在這裏插入圖片描述
在meta-learning中,把學習算法也當作一個函數F,喫進去的是訓練資料,吐出來另外一個function
可以視爲
在這裏插入圖片描述
區分machine learning和meta learning
meta是要找一個大寫的F,輸入是訓練資料,輸出是模型
在這裏插入圖片描述
機器學習的三個步驟:
定義一個function set,定義loss,然後找到最好的function。
meta的話,只是把f改成F,learning algorithm F。
在這裏插入圖片描述

meta-learning的步驟

什麼叫一組learning algorithm

在gradient descent中,算法如下圖
在這裏插入圖片描述
整個圈起來的過程,就可以看作是一個Learning Algorithm
。紅色的方塊選擇不同設計的時候,就等於選擇了不同的算法。
現在都是人爲決定這些紅色部分,讓機器自己去學習如何決定紅色部分,就是達成了meta learning的一部分。

如何評價一個F的好壞

訓練一個貓狗分類任務,用測試數據測試任務表現怎麼樣,在機器學習中,要用一組數據來考量好壞,meta-learning中,要用一組任務來考量好壞。
在這裏插入圖片描述
右上角的L即爲loss。

meta learning vs machine learning

在machine learning中,準備訓練資料和測試資料
在meta learning中,準備訓練任務及其對應的資料
其中也有可能需要validation task。
meta-learning在few-shot中可能使用,因爲訓練資料少,跑的比較快,可以比較好評估。
在few-shot中,通常把train和test稱爲support set和query set。
在這裏插入圖片描述

怎麼找最好的learning algorithm

首先根據loss找到最好的F,然後對新任務進行訓練,在用測試數據進行測試,來評估表現。
在這裏插入圖片描述

benchmark

omniglot

在這裏插入圖片描述

如何使用

在few-shot classification中
決定多少Way,多少個shot。way表示多少個類別,shot表示多少個example。
在實際訓練中,要將符號分爲訓練組和測試組。
訓練時從訓練組中找N個character,然後找到K個example。測試時方法一樣,但是從測試組中選。
在這裏插入圖片描述

當前的方法

MAML

算法

在這裏插入圖片描述
學習紅框部分的初始化參數。訓練網絡,得到最好的theta,而這個theta是取決於如何初始化的,即可用Loss函數評估網絡的好壞
在這裏插入圖片描述
如何最小化loss呢
可以利用gradient descent。
區分MAML與model pre-training
在model pre-training中,用正在訓練的模型來計算loss,而maml中使用訓練好的模型
在這裏插入圖片描述
下圖中橫軸是model parameter,如果是maml中,我們不在意現在的表現,比如圖中的phi做初始的參數,將順着gradient的方向,在兩個任務上都走的很好
在這裏插入圖片描述
在model pre-training中,在意現在的表現,但不保證訓練後會好。
在這裏插入圖片描述
所以兩者的區別在於黃框中的字。MAML在乎潛力,model pre-training中在乎當前表現。
在這裏插入圖片描述
MAML在實戰時,假設參數只更新一次,模型就是下圖。
theta和phi的關係就是右下角的式子。
只更新一次的理由:快,phi棒到只更新一次就很好,在測試實戰時可以更新多次,few-shot中數據有限
在這裏插入圖片描述

例子

toy examle

每個任務的做法都是估計function,可以多選ab,構造多個task
在這裏插入圖片描述
使用model pre-training,獲得的是水平線
做MAML,獲得的是下面的線。
在這裏插入圖片描述

omniglot& mini-imageNet

在這裏插入圖片描述
其中first order approx是一種變形:
在這裏插入圖片描述
在這裏插入圖片描述
在論文中,爲了簡便
在這裏插入圖片描述
在這裏插入圖片描述

實際實現

首先用一個taskm,獲得thetam,然後用thetam來更新phi,如此下去。
跟model pre-training相比,maml要更新兩次
在這裏插入圖片描述

在翻譯上的應用

橫軸代表每一個任務上用的訓練資料,metaNMT表示MAML,multiNMT表示pre-training,通常meta比較好。
在這裏插入圖片描述

Reptile

在這裏插入圖片描述

想法

可以update很多次,然後根據二者之間的差,讓phi走過去
在這裏插入圖片描述
做的和model pre-training很相似。
他們之間的區別如下:
pre-train走的方向是g1,MAML是g2,reptile是g1+g2
在這裏插入圖片描述

其他算法

除了找初始參數,還能找網絡架構、activation等,或者如何更新
在這裏插入圖片描述

思考

在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章