# Model-Agnostic Meta-Learning ## meta learn and machine learning Machine learning:根據data找一個函數f的能力,利用f來做事,要有train data及test data Meta learning:根據Data找一個**找一個函數F的**函數f的能力,利用F找出f來做事(learn to learn),要有train task(每一個train task有各自的train data及test data)及test task(也有train data及test data) ![](https://i.imgur.com/FtnwxX8.png) 而因爲要跑task(太多資料量),所以都假設為**few-shot learning**,而在few-shot learning中task的train data稱為*support set*,test data稱為*query set* #### 評估F的好壞 ![](https://i.imgur.com/Ps1AIff.png) #### Model pre train 再多data的任務上train,之後再微調到少量data的任務上 ## MAML 重點在於找到一個很好的初始參數theta,始知之後可以微調(ex.gradent descent)就可以輕鬆到要適應的任務上(supervised、reinforcement learning) #### 他與pre-train的差別為 MAML:他要找的初始參數在當下可能不是最好,但在train後可以迅速變得很好的參數(潛力) Pre-train:他要找的初始參數是對現在當下所有的任務都很好的參數 #### MAML尋找初始參數的方法 ![](https://i.imgur.com/EM6w6HE.png) ![](https://i.imgur.com/i6aWVJ9.png) 1.他有一個task分佈P(T):要做的任務都要先放在這裡才能找到一個很好的初始參數 2.在while迴圈中一直做找model f的事,然後得到一個loss function做gradient descent找出min 3.最後初回圈得到min再更新一次,此極為很好的初始參數 #### MAML在regression loss function改為 ![](https://i.imgur.com/1vZaZoG.png) ![](https://i.imgur.com/yz3Bu1c.png) #### MAML在classification loss function改為 ![](https://i.imgur.com/hdlXF08.png) ![](https://i.imgur.com/e2Pe7Ci.png) #### MAML在reinforcement learning loss function改為 ![](https://i.imgur.com/ItNTqDj.png) ![](https://i.imgur.com/ImhttM8.png) ### 實驗 #### regression 總共有700000筆sin函數當作p(T) ![](https://i.imgur.com/5a8MrWz.png) 紅線為目標oracle 淺線為經過各自方法(MAML或Pre-train)所找到的最佳初始參數 深線為經過train後的結果 可以看出MAML屌打 #### classification 利用Omniglot及MiniImagenet這兩個brenchmark去評比 ![](https://i.imgur.com/PIHfvci.png) #### reinforcement learning 利用去找紅點target來評比 ![](https://i.imgur.com/wgjaNiu.png) # 參考:https://www.youtube.com/watch?v=wT45v8sIMDM&t=1375s