back to index

Meta Learning – MAML (1/9)


link |
00:00.000
Meta Learning對大家來說,可能對多數人來說都是一個新的概念。Meta Learning要講的是什麼呢?Meta Learning其實就是Learn to Learn,我們今天可以讓機器去做學習。
link |
00:15.000
我們下一步要讓機器做的事情,不只是它可以做學習這件事,而是它可以學習如何去做學習這件事。舉例來說,我們期待做到的事情是,機器它學過一大堆的任務以後,它根據在過去的任務上面所汲取的經驗,它變成了一個更厲害的學習者。
link |
00:40.280
往後如果有一個新的任務,它可以學習得更快,因為它從過去的任務裡面學習到了新的學習的技巧。舉例來說,過去它看到的任務可能是,你教機器做了語音辨識,你教機器做了影像辨識之後,你在教它做文字分類的時候,它可能會做得更好。
link |
01:04.040
雖然說做文字分類這件事情跟影像跟語音可能沒有什麼太直接的關係,但是機器在過去的任務裡面學到了怎麼學習這件事。它並不是學會了更會做語音的辨識或者是更會做影像的辨識,然後可以因此讓文字的辨識做得更好。
link |
01:23.200
而是它從這些任務裡面,它不只是學到了怎麼做某些特定的任務,怎麼做語音影像辨識,而是學習到了學習這件事情。所以,未來有新的任務,它就可以學得更快。
link |
01:36.500
講到這個meta learning,看看這樣的setup,有人可能會覺得說,聽起來跟我們之前講過的live long learning有點像。確實沒有錯,在講live long learning的時候,我們也講說,要讓機器先看過一大堆新的task,然後希望它在新的task上,它仍然可以做得好。
link |
02:01.020
但live long learning跟meta learning不一樣的地方是,在live long learning裡面,我們是不斷地用同一個模型在做學習,我們期待的是同一個模型可以同時學會很多技能。
link |
02:13.380
那meta learning的著眼點是不一樣的,在meta learning裡面,不同的任務,我們仍然有不同的模型,仍然是每一個任務有一個自己的模型。但我們期待的是,機器可以從過去的學習經驗裡面學到一些東西,使它在未來要train一個新的模型的時候,可以訓練得更快更好。
link |
02:34.660
這個是meta learning的精神。那實際上meta learning要做的事情是什麼呢?我們先來回憶一下machine learning這件事情。
link |
02:43.860
machine learning在做什麼呢?今天大家都已經,其中討論已經過了,學習已經過一半了,那想必你對machine learning應該已經非常熟悉。
link |
02:52.740
machine learning你可以想成是,我們有一個learning的algorithm,這個learning的algorithm是人設計的,這個learning的algorithm它就把訓練資料當作輸入,假設你現在要做一個貓狗的辨識器,
link |
03:08.580
那就給它一些訓練資料,給它一堆圖片,然後每張圖片都要標註說它是貓還是狗,丟給這個學習的演算法,它就吐出一個function。那在我們一般的case裡面,假設你是訓練一個CNN的話,它就是吐出CNN的參數。
link |
03:25.700
就用歸根descent這個algorithm,用backpropagation這個algorithm圈下去,它就吐出CNN的參數,你有這個參數,你就得到了一個function,你就可以拿來辨識新的影像,這個是我們所學到的machine learning。
link |
03:40.740
那meta learning是要做什麼呢?在meta learning裡面,你把learning的algorithm想成也是一個function,這個function我們用大寫的F來表示這個learning的algorithm。
link |
03:54.980
這個learning的algorithm,它這個function吃進去的是訓練資料,它吐出來的是另外一個function。在這個例子裡面,它就是吐出一個function,這個function可以拿來做貓狗的影像辨識。
link |
04:09.700
有沒有聽起來很神奇?我們learning的algorithm其實可以把它想成一個function,輸入資料輸出,就是你現在要找的那個可以拿來做影像辨識的function。
link |
04:21.940
而meta learning要做的事情就是讓機器自動的找出這個learning的algorithm,自動的找出這個吃data當作input,可以吐出另外一個function的function。
link |
04:33.940
所以我們說machine learning是什麼?如果要用一句話來概括machine learning的話,machine learning就是讓機器具備有根據資料找出我們要它找的某一個函數F的能力,我們在第一堂課的時候就已經告訴過大家這件事。
link |
04:50.500
那meta learning是什麼呢?meta learning就是讓機器根據資料找一個函數F的能力,你可以不知道這句話在講些什麼,所以我們把這句話做一下文法的剖析。
link |
05:06.180
我們先看一下外面的這個部分,就是我們現在要機器有能力去找一個函數F,找一個大寫的函數F。那這個大寫的函數F它是有什麼樣的能力呢?這個大寫的函數F,它的能力是要去找一個小寫的函數F,然後這個小寫的函數F可以用在machine learning裡面,比如說拿來做影像辨識。
link |
05:31.940
我們要找一個大寫的F,這是機器訊號做的事,它要找一個大寫的F,然後這個大寫的F它的能力是它可以找出小寫的F,然後拿來做你想要它做的事情。
link |
05:42.820
所以講得更具體一點,machine learning就是我們要找一個大寫的F這個function,這個function的輸入就是你的訓練資料,輸出就是訓練後的模型。舉例來說,它就凸一個,如果你變成neural network來當作你的模型的話,它的輸出就是一個neural network,或者是neural network裡面的參數。
link |
06:04.900
如果講得更具體一點的話,就neural network裡面的參數,然後把這個參數拿去做種種你要它做的事情,那這個就是meta learning。
link |
06:15.460
所以machine learning跟meta learning,它們都是要叫機器去找一個function,只要找那個function,要做的事情是不一樣的。
link |
06:26.560
所以我們說機器學習就是三個步驟,這個也是開學第一週就給大家看過的投影片,機器學習就是三個步驟。
link |
06:35.640
先定義一個function set,然後定義一個function好壞的評量指標,也就是loss function,最後找一個最好的function,用規則去set,找出一個最好的function。
link |
06:45.460
那其實meta learning也就是一樣的,它也是找一個function,你只要把我們這三個步驟裡面的function這個詞彙通通代換掉,代換成大寫的F,所謂大寫的F就是一個learning algorithm,你把我們這三個step裡面的function都代換成learning algorithm,這個就是meta learning。
link |
07:06.800
所以meta learning要做的事情就是,我們先定義一個learning algorithm的set,我們先定義一組learning的algorithm,我們不知道哪一個learning的algorithm是比較好的。
link |
07:18.020
然後你定義一個learning algorithm的loss function,它告訴你說哪一些algorithm比較好,哪一些algorithm比較不好,然後最後再學一發去找出最好的learning的algorithm,這個就是meta learning。
link |
07:32.860
講得更具體一點,我們就一步一步根據這三個步驟來講一下meta learning是怎麼做的。