back to index

Meta Learning – MAML (3/9)


link |
00:01.000
所以你會發現說,meta learning跟machine learning,它們光是在訓練資料上面就非常的不同。
link |
00:08.600
這個是machine learning的訓練資料,假設你要做貓跟狗的分類的話,你要準備一大堆訓練的image,你要準備一大堆testing的image。
link |
00:17.200
在meta learning裡面,你現在要準備的不是訓練資料跟測試資料,你要準備的是訓練的任務跟測試的任務。
link |
00:26.520
每一個任務裡面都有訓練資料跟測試資料,你要準備一大堆的訓練的任務,這邊雖然只放了任務一跟任務二,
link |
00:36.600
但是你想想看,只有兩筆資料,但是訓練不好,你可能要準備上百上千個訓練的任務,這些每一個訓練任務就是一個範例,就是一個example。
link |
00:47.440
所以你要準備很多的訓練的任務,每一個任務裡面都有訓練資料跟測試資料,然後你有這個訓練的任務以後,你還要有測試的任務,
link |
01:03.120
那測試的任務當然要跟訓練的任務不太一樣。我們有了訓練的任務,有了測試的任務,我們其實有時候也會需要validation的任務,或是叫做development的任務。
link |
01:18.560
大家記得在做machine learning的時候,我們為了要避免open fitting,你在選參數的時候,你要把你的training set切出一個validation set。
link |
01:27.240
如果你今天你的meta learning裡面也有參數要調,那怎麼辦?你要把你的training的任務裡面切一些任務出來,當作validation的任務,用那些validation的任務來決定你的參數要怎麼做調整。
link |
01:43.920
那這個meta learning,它常常跟future learning一起使用,一起討論。future learning的意思是說,我們今天在做某個任務,比如說分類的任務的時候,每一種類別只給你非常非常少量的資料。
link |
01:59.520
舉例來說,叫你做貓跟狗的辨識的時候,只給你一張貓的圖,一張狗的圖,希望機器可以看一個任務,看一個例子,就知道怎麼分辨貓跟狗。這個就要depend on你使用的meta learning的algorithm,今天等一下我們會講的技術叫做memo。
link |
02:29.040
如果是memo的話,它要限制的是所有的任務的model,你的network structure必須要是一樣的,但是這個並不是一定要這樣限制。
link |
02:42.560
有一些更general的algorithm,比如說有些algorithm它可以認怎麼update參數,那update參數這件事情,比如說怎麼設learning rate這件事情,就跟model本身是完全沒有關係的。
link |
02:54.840
所以那種可以update參數的task,確實就有人試過說,我今天訓練的時候,統統都是一項分類的任務,但我測試的時候的testing task是語音辨識跟翻譯,看看做不做得起來,好像還是有一些成果。
link |
03:10.400
這depend on你的meta learning的algorithm是長什麼樣子。有的algorithm,你的訓練的任務跟測試的任務的模型必須要是一樣的,model structure必須要是一樣的,有一些可以是不一樣的。
link |
03:41.400
這個不一定也是取決於你用什麼樣的方法。在我們等一下講的那個memo裡面,memo那個方法,它的learning algorithm仍然是一個gradient descent based的learning algorithm,所以它的整個流程就是做gradient descent。
link |
03:57.420
memo它做的事情就是,它自動地找出一個它認為對所有的任務都最好的初始參數,接下來怎麼update那個初始參數,用的仍然是gradient descent,跟gradient descent是一模一樣的。
link |
04:10.560
也有一些瘋狂的做法就是,我們直接認一個network,就是一個network,input就是訓練資料,output就是我現在model的參數,就結束了。這個algorithm是什麼,就不知道,它就是一個network的structure,然後吐出另外一個network的參數給你,這樣回答到你的問題嗎?
link |
04:32.740
講到這邊,大家還有問題要問嗎?請說。其實不需要這樣限制,在我想來就算是,剛才我說memo它所有不同task的network架構都一樣,
link |
04:53.980
但是loss function如果是不一樣的話,其實還是可以跑的,雖然在文件上沒有看過有人做過這樣的測試,但是在memo的algorithm裡面,就算是你不同task的loss function的定義不一樣,有的是closed entropy,有的是regression,也沒有問題,也是可以跑的。
link |
05:12.600
你還有問題的樣子。
link |
05:43.200
今天速度就是你可能可以認到的東西,假設你的learning algorithm是你要update參數多少次都沒有關係,而是取決於最後update到你參數收斂的時候,你的那個小loss是多少,
link |
05:58.040
那你其實就是learning的algorithm,這個learning的algorithm,它可以讓你的loss,train完以後可以讓你的loss比較低,它可能是一個比歸顛decent更厲害的algorithm,然後它可以把幣開設都控為local minima等等,然後因此你最後可以得到比較小的loss的值,這樣,希望這樣回答到你的問題,這樣,這樣大家有問題,好。
link |
06:18.040
我只要講到這邊,大家可能覺得聽起來怎麼這麼神奇,然後非常的抽象,等一下如果我們講的一些實際的例子,那個會更清楚說實際上meta learning是怎麼運作的,但是方法真的非常非常多。
link |
06:33.800
所以今天並不是meta learning的,就meta learning我們並不會只講一次一堂課,我們可能會講兩周以上,今天就只是先介紹一個最知名的方法叫做memo,還有另外一個memo的變形叫做reptime,其實還有很多很多其他的東西,那我們就是下周再講。
link |
06:53.800
meta learning其實常常跟future learning一起搭配使用,為什麼它常常跟future learning一起搭配使用呢?因為你想想看,今天你要檢查一個algorithm好不好的時候,你要跑過一整個訓練的流程才知道你的learning algorithm好不好。
link |
07:10.520
那假設你每次跑過一個訓練流程一天,大家知道說你假設你data比較多,你訓練一天也不奇怪嘛,那假設你每次要驗證一個function好不好的時候,你都要一天,那這個task沒辦法做啊。所以這就是為什麼如果做meta learning的時候,往往都假設我們今天是future learning,也就是說你這些task的訓練資料都非常少,所以你可以非常快的就跑出訓練的進步。
link |
07:33.840
所以其實也許有人發現說,我這個課程網站上今天的內容有時候說是future learning,有時候說是meta learning,因為我就猶豫了一下,我到底應該是以future learning為主軸來講,還是以meta learning為主軸來講,那我決定說以meta learning為主軸來講。
link |
07:51.840
好,那在這個future learning裡面,我們通常不會把一個task裡面的訓練資料跟測試資料就叫訓練資料跟測試資料,有時候會有其他的名字。
link |
08:05.040
在future learning裡面,我們往往會把訓練資料叫做suppose set,把測試資料叫做paris set。那為什麼會需要取別的名字呢?因為你想想看,這個東西是你的每一個task的training set,這些task合起來是meta learning的training set。
link |
08:25.880
所以他們都是training set,所以你到時候寫文章或者是你給講課的時候就會整個亂掉,所以在文獻上很多人就會說,我們不要把這些training set叫做training set,我們改個名字叫做suppose set,testing set叫做paris set。
link |
08:40.800
那我這邊是講法還是每一個task裡面仍然有training set跟testing set,但我們就不要把這些task叫做training set或training data,我們就說它們是training的task,它們是訓練的任務跟測試的任務。
link |
08:54.840
好,定出了這個loss function以後呢,接下來我們就可以找一個最好的learning algorithm大F star,這個最好的learning algorithm大F star就是帶入這個loss function,帶入這個大L裡面算出來的loss,最小的那個learning algorithm。
link |
09:18.080
那怎麼找這個最好的learning algorithm呢?你要解一個optimization problem,就去找一個大F,它可以讓L of F的值最小,這個可以讓L of F的值最小的大F就是F star。
link |
09:37.080
好,那有了F star以後,你就訓練完畢,接下來就要進行測試,把F star用在你的測試任務上面,那測試任務裡面一樣有訓練資料,你的測試任務裡面有訓練資料,你把這些訓練資料丟進大F star,大F star會找出一個function F star。
link |
09:59.040
好,接下來呢,你把測試任務裡面的測試資料用F star,小F star來進行測試,然後你把測試任務裡面的測試資料用小F star來進行測試,看看結果怎麼樣,那這個結果就是meta learning這整個方法的好壞。