關於元學習,網上的很多教程不太說人話,大多是根據李宏毅教授的課進行的一個拓展,並沒有去詳細的講解一些步驟性的問題;
關於原理或者說概要比較好的博客:
https://zhuanlan.zhihu.com/p/108503451
https://zhuanlan.zhihu.com/p/55643191
上面兩篇可以說是大致很好的講解了元學習的基本概念,自己本篇進行一個大致的整理;
Meta-Learning:
元學習的大致思想:尋求一種方法使得可以從過去的任務中學習到如何去學習。
從本質的上來說,和傳統機器學習相比較:
傳統機器學習:DL包括在內,都是尋求一個boundary來進行定界操作,主要關心得到一個輸入和標簽的映射網絡;
元學習:執着於網絡參數的確定,使得每一次訓練后,都可以讓模型自己去嘗試制定參數,而不是人為去設定參數;
所以,某種程度上訓練過程可能類似,但是側重思想是不一樣的;
如上所示,可以基本的看出元學習的目的並不是生成預測值,而是通過feed數據集,來世的learning algorithm收斂,得到一個新的函數,為下一個任務做准備,所以,本質就是通過一個任務生成一個特定的網絡,由訓練過程自發的使網絡來達到最佳,其實和傳統學習還是有點像的;
但是比較不同的一點是,生成的網絡可以在不同的task有不同的結果,而后續的MAML則是固定一類模型,算是meta-learning中的特殊情況;
所以元學習的基本步驟有以下幾步:
1.進行一群F函數的選擇,對於同樣的一系列task來進行訓練;
2.根據一定的方法評價task的好壞;
3.最后選擇最好的F;
對於上述,完整的流程可以如下所示:
所以,對於不同的F,尋找出生成f效率最好的函數,總體通過loss funcion l來進行評估;
MAML是Meta-learning中的一種,但是其核心思想是初始化參數的設定;
即通過task的學習,得到一個使得每個task都最優的初始參數;
對於各個網絡中的參數,直接利用初始參數進行更新;
而對於目標函數,我們要求L函數有最小值,所以可以直接借此更新初始化參數,從而達到尋找最優初始化參數的目的;
其中需要注意的是以下幾點:
1.局部網絡和整體初始參數更新的速率不同;
2.局部網絡中往往是一次訓練,但是也可以根據數據量進行更改,使得收斂更好;