back to index

Meta Learning – MAML (4/9)


link |
00:01.000
我們要做這些東西,我們總是要有Benchmark的Corpus。
link |
00:06.000
就好像在做影像辨識的時候,很多人會拿Anist當作Benchmark Corpus。
link |
00:12.000
那在Metalab裡面,很多人會拿一個叫做Oniga的Corpus。
link |
00:17.000
它應該真的叫做Oniga,我應該是,我其實有特別去看一下其他人是怎麼念這個Corpus的。
link |
00:24.000
我覺得聽起來比較像是Oniga這樣子。
link |
00:30.000
好,那這個Corpus裡面有什麼呢?這個Corpus裡面就是一大堆的奇怪的符號,一大堆的火星文。
link |
00:38.000
總共有1623個不同的符號,那每一個符號有20個範例。
link |
00:46.000
他們每一個符號都請20個不同的人來把那個符號寫一次,然後記錄下來,所以每一個符號有20個不同的範例。
link |
00:55.000
下面就是一大堆的符號,右上角這個是某一個符號的20個不同的人去寫的時候,就會有20個不同的樣子。
link |
01:06.000
Oniga這個Corpus要怎麼用呢?你用的時候是這樣用的。
link |
01:11.000
它通常是設計成一個few-shot classification test,也就是說你要先決定說你今天你的分類任務裡面有多少個weights跟多少個shot。
link |
01:24.000
什麼叫做weight跟shot呢?weight的意思就是說你這個分類的任務裡面有多少個class,然後shot就是每一個class有多少的example。
link |
01:36.000
所以n-weight-k-shot的few-shot learning的意思是說,n-weight-k-shot的classification的意思就是說,我現在每一個任務裡面有n個class,每一個class有k個example。
link |
01:49.000
舉例來說,假設我現在有一個任務是20-weights-1-shot,那是什麼意思呢?意思是說,我現在這個分類的問題,我總共有20個不同的類別。
link |
02:01.000
而每一個類別我們只提供一張訓練資料,1-shot的意思就是說,每一個類別只有一張訓練的資料。
link |
02:11.000
所以你的訓練資料可能看起來像是這個樣子,這邊總共有20個不同的符號,每一個符號就代表了一個類別,每一個類別只提供給你一個example。
link |
02:26.000
然後希望機器就可以學出一個20類的分類的系統,當然你如果直接拿這20張圖片,用普通的方法去訓練應該是會慘掉啦,
link |
02:35.000
但你就希望說meta learning可以幫你學出一個很厲害的演算法,這個很厲害的learning的algorithm厲害到,它每一個開始只要看一張,看一個example,它就可以做得很好。
link |
02:46.000
這是你的訓練資料,那測試的時候就跟一般的測試一樣,丟一張圖片進來,然後問你說這張圖片是這20個類別的哪一個類別。
link |
02:56.000
聽說人做future learning真的非常的強,所以你現在來做一下這個one-shot learning,你可以看出是哪一個類別嗎?
link |
03:03.000
給你三秒鐘的時間想一下,中間下面,我也覺得是中間下面這個,這個看起來有點像是豌豆射手,這個看起來也像是豌豆射手。
link |
03:24.000
你這個梵文的符號是嗎?藏文的符號,有可能這樣子,你搞的那個corpus裡面的符號,它有梵文這樣。
link |
03:37.000
我跟大家的想法是一樣的,我也覺得這個應該是正確的答案。
link |
03:56.000
那在實際上訓練的時候,你就要把那些符號分成兩類,就是分成訓練組跟測試組。剛才不是說有1623個符號嗎?
link |
04:08.000
常見的setup就是1623個裡面,你選1200個出來做訓練組,然後剩下的當作測試組。
link |
04:15.000
當然如果你想的話,可以從訓練組裡面再分一些出來當作validation組。
link |
04:20.000
然後你用這些訓練組的character去製造訓練的任務。怎麼製造訓練的任務呢?
link |
04:27.000
假設你今天要做一個N位Kshar的future learning task,那你就從這個訓練組裡面隨機抽取出N個character。
link |
04:37.000
然後每個character都隨機抽取出K個example,就製造出一個訓練的任務。
link |
04:45.000
那你要製造出很多訓練的任務,才能夠做meta learning,然後測試在測試任務上。
link |
04:51.000
那測試任務跟訓練任務的產生方法一樣,唯一不同的地方就是,你測試的時候,你那個character符號要從測試組裡面選。
link |
05:00.000
這樣訓練跟測試的時候,你用的符號才不會重疊。
link |
05:04.000
為了讓大家更有具體的感覺,就是這個task這每一個任務長什麼樣子,其實網路上有一個demo可以給大家看一下。