back to index

Meta Learning - Train+Test as RNN


link |
00:00.000
好,那其實有關meta learning的部分呢,還有非常小一段是還沒有講到的。是什麼呢?我們之前有講過了這個Science Network,那我們在講Science Network的時候,我們說你可以把Science Network或其他metric-based approach講成是meta learning,但是你其實有其他更容易的方法來理解這些metric-based approach。
link |
00:28.760
那我們之前在講那個Science Network的時候呢,我們開場白有說,我們想要做的事情是一個瘋狂的想法,我們想要找一個function,這個function它可以同時做到learning跟testing這兩件事,我們把train跟test放在同一個function裡面。
link |
00:50.520
我們期待我們可以學出一個function,這個function可以做到說,把訓練資料丟進去,把測試資料丟進去,它直接吐出來的就是測試資料的答案。
link |
01:02.240
然後之前我們有講過說這個聽起來很瘋狂,那實際上我們使用的方法是Science Network跟它的種種變形,比如說Machine Network,比如說Prototypical Network等等,而這些變形你可以想成它們是特別設計了Network的架構來做到這邊我們要說的這件事,因為這件事聽起來很複雜,你直接用一個generalize的Network恐怕是做不到的,所以必須要設計一下Network的架構。
link |
01:32.000
才能夠達成我們的目標,但是我們這邊要說有沒有人嘗試過直接用一個general的Network來完成這件事呢?直接弄一個general的Network,input就是training data跟testing data,output就是testing data的label是有的,希望機器可以學到說看到這張圖片它是哪一個動畫的角色,然後你給它一個測試資料,希望它就可以直接output正確答案。
link |
01:59.640
那這個東西你可以把它想成是一個RNN可以解的問題,因為它input的東西就是一個sequence,先把訓練資料的每一筆資料一個一個的餵進去,再餵進去測試資料,然後希望你的RNN就可以output正確答案。
link |
02:16.680
所以你完全可以用一個RNN局來做LSTM來解這個問題,你希望這個LSTM把training data當作一個sequence讀進去,再讀進去測試資料的時候,output直接就是測試資料的答案,然後就結束了。
link |
02:31.960
我們在input的部分,因為這是一個影像分類的問題,所以每一筆訓練資料裡面都包含了一張圖片跟這張圖片屬於哪一個類別的label。
link |
02:47.000
你需要把這張圖片跟這個label做一下embedding,舉例來說,你可能會有一個CNN,然後把這張圖片讀進去,然後輸出一個embedding,然後你可能會把每一個類別用一個one-hot vector來表示,你把CNN的output跟類別的one-hot vector做concatenate,變成一個feature vector丟到LSTM裡面。
link |
03:11.120
在測試的時候,因為測試資料的類別我們不知道,訓練資料每張圖片的類別我們知道,測試資料的類別我們不知道,訓練資料的類別我們可以用一個one-hot vector來表示,測試資料因為它的類別我們不知道,我們就用zero vector來表示。
link |
03:26.240
然後我們就把訓練資料跟測試資料合起來,看作是一個sequence丟到LSTM,然後訓練它的output,測試資料的label,就結束了。
link |
03:35.880
那前人有試過這件事嗎?前人有試過這件事,果然勸不起來這樣子。
link |
03:43.080
那怎麼辦呢?因為一般的LSTM是勸不起來的,所以就有人嘗試著去修改LSTM的架構。
link |
03:51.560
如果我們general的,一般的,我們常用的LSTM勸下去,在meta倫理上看起來做不起來的,就有人就試著更改neural的架構。
link |
04:01.080
其中比較知名的兩個例子,一個是NANN,它用的是neural turing machine,這個我們上課沒有講過,如果你有興趣再自己去查一下neural turing machine是什麼。
link |
04:12.480
還有另外一個東西叫做SNAIL,它裡面用的就是attention。
link |
04:16.800
而它們的neural架構,我們就不細講,我們這邊就把文獻放在這邊給大家參考。那SNAIL這個東西,你如果看它的neural架構圖,你可以很輕易地了解它在做什麼。
link |
04:32.120
那SNAIL是Simple Neural Attentive Meta Learner的縮寫,然後我不知道為什麼M不見了,總之它的縮寫就是SNAIL,就是蝸牛的意思。
link |
04:45.000
那另外一個可能是它的形狀長得像蝸牛,所以我們叫它蝸牛。
link |
04:50.200
然後它要怎麼做呢?它就是跟剛才我們講的東西是完全一樣的,我們就是把訓練資料跟它的label丟到network裡面去,丟到這個RN裡面去,把測試資料再丟進去。
link |
05:01.480
那唯一不同的地方是,它不是一個單純的RN,它裡面有attention,就很像是我們之前講transformer的時候講過的attention一樣。
link |
05:10.720
當你把第二筆訓練資料丟進去的時候,它會去attent之前已經丟進來的東西,當你把第三筆資料丟進來的時候,它會去attent第一筆跟第二筆,當你把測試資料丟進來的時候,它會去attent過去所有的訓練資料。
link |
05:25.200
當我們把測試資料丟進去,它會attent過去所有的訓練資料的時候,這件事情你仔細想想看,它做的事情是不是跟什麼prototypical network或者是matching network非常像呢?
link |
05:36.640
我們說matching network做的事情是,丟一張圖片進來,然後你去計算這張圖片跟你的訓練資料的每張圖片的相似度,看誰最像,就拿那張最像的圖片的level出來當作正確答案。
link |
05:50.880
今天我們用一般的LSTM,train剛才講的那個瘋狂的想法,train跟test加在一起的想法做不起來,所以他們做了一下修改說,現在當我們把測試資料丟進來的時候,我們要回頭去對過去已經輸入進來的訓練資料做attent。
link |
06:08.360
這個行為其實就很像是matching network說,它把測試資料跟訓練資料去計算他們embedded的相似度,他們的道理是非常類似的,簡單來說殊途同歸。
link |
06:21.280
本來是想要用一個最general的方法來解meta類的問題,但是做到最後你還是需要改一下network架構,會變成matching network那一套的想法,其實是差不多的。
link |
06:34.840
不過在文件上看起來,剛才介紹的Snail的performance看起來是蠻厲害的,上面這邊的實驗是Omega的實驗,這個是Snail的performance,它做了5-way跟20-way,1-shot跟5-shot。
link |
06:51.160
它的baseline多數我們都在課堂上講過了,這邊總共有6個baseline,我把這6個baseline他們是用什麼方法就寫在這邊,NANN是用Neural Touring Machine的方法,我們剛才在前幾頁的快門片大家有看到。
link |
07:06.720
Sanvis Network我們之前講過了,Matching Network我們之前講過了,NAML就是Memo我們之前講過了,Prototypical Network我們之前講過了,沒有講過的是Meta Network,沒有講過的是Meta Network。
link |
07:19.000
總之Snail跟6個方法比一比,它的結果都是最好的。
link |
07:25.480
它也做了Mini ImageNet,做5-way,1-shot跟5-shot,這邊比的baseline是Matching Network,Memo,然後把LSTM當作歸顛Descent,這個我們也是之前講過了,然後Prototypical Network跟Meta Network,Snail看起來performance都是最好的。