目錄
1、什么是元學習
2、元學習還可以做什么
3、元學習是如何訓練的
1、什么是元學習
meta-learning 的一個很經典的英文解釋是 learn?to?learn,即學會學習。元學習是一個很寬泛的概念,可以有很多實現的方式,下面以目標檢測的例子來解釋其中的思想。
在傳統的目標檢測任務中,我們都會為給模型海量的打了標簽的數據集,本質是讓模型去學習樣本數據的數據分布,以期一個泛化的模型,使其可以在沒有見過的圖片中找到期望的目標。整個學習的過程就是相當于給模型很多某一類事物的照片,訓練模型讓他擁有分辨這些事物種類的能力,可以在一張沒有見過的照片中找到是否有目標事物。
對于人類而言,認識一個新的種類其實并不需要看很多相關的照片,甚至只要看一眼沒見過的事物就能達到在沒見過的照片中準確分辨是否含有該類事物的效果,這是由于人天生的具有分辨事物異同的能力,在看到新的事物之后就能馬上學習到他與已見過的事物的不同并在下次遇到時準確判斷其種類。也就是人類具有學會學習的能力。
因此,相比來說,meta-learning 的目標不是讓模型識別訓練集里的圖片并且泛化到測試集,而是讓機器自己學會學習。還以目標檢測為例,仍然拿一個很大的數據集來訓練模型,而 meta-learning 的目標不是讓模型在沒見過的圖片中學會分辨訓練集中提到過的類別,而是讓模型學會分辨事物的異同,學會分辨這兩者是相同的東西還是不同的東西,當模型學會分辨異同之后再在具體的分類任務中使用極少的數據集訓練很少的次數即可達到甚至超越傳統目標檢測訓練范式的效果(這種方式也稱為 Few-Shot?Learning,即小樣本學習)。
總的來說,當我們需要分辨的目標種類改變之后,傳統的目標檢測訓練范式需要從頭開始訓練,而 meta-learning 則因為擁有了學習的(分辨異同)能力從而很快就能適應新的種類從而大大節省了從新學習的時間。下圖就是對這種方法的闡述:元學習 ?通過訓練任務學習到了具有分類能力的預訓練網絡?
?(
?是元學習的模型),使用新的類型來訓練?
, 讓他“學習”區分新的種類手機電腦得到模型??
?,這個?
就是可以適應新的任務的模型了。
元學習分類任務
(圖片來源:火爐課堂 | 元學習(meta-learning)到底是什么鬼?_嗶哩嗶哩_bilibili)
這種訓練方式的一種具體的實現就是孿生神經網絡(Siamese?Network),孿生神經網絡是無監督學習的一種,下面簡單介紹這種網絡的原理。
孿生神經網絡擁有兩個輸入,分別是同樣大小但不是同一種類別的圖片,輸出是兩張圖片的相似度。其結構如下圖
孿生神經網絡
具體地,先輸入含有種類1的圖片1,通過網絡得到一個映射的特征向量h1,然后輸入含有種類2的圖片2,通過同樣的網絡得到另外一個映射的特征向量h2,通過比較向量h1、h2(比如做差)的相似度即可確定兩者是否屬于同一個類別,訓練過程中只需要通過大量的不同類別的圖片訓練網絡的異同辨別能力。在具體的分類任務中,我們只需要將目標圖片與已有的已知種類的圖片通過預訓練好的神經網絡做對比,通過輸出即可判斷目標圖片是否屬于這個種類。
以上是元學習在目標檢測方面的一種應用,通過元學習訓練模型提取不同種類圖片的特征,然后在這個預訓練的模型的基礎上實現快速辨別新的圖片種類。“元”在中文中含有“根本、根源”的意思,在深度學習中可以理解為:知道了更深層次(更基礎)的知識后更有利于以后適應新事物的能力,這也對應了其英文解釋“learn?to?learn”的思想。
2、元學習還可以做什么
元學習是一個思想,有很廣泛的應用范圍。
元學習可以用來學算法。即傳統的深度學習都是手工設計好的模型(比如CNN、LSTM、DNN、具體多少層、每層的size以及激活函數都是確定好的)然后我們去學習模型的參數。而元學習可以更進一步,用來學習如何設計模型、如何挑選前述的網絡結構等。
另外元學習還可以學習算法的超參(比如學習率等)、模型初始化參數(直接給出一個比較好的初始化參數,然后微調,可以大大節省訓練時間)等。
3、元學習是如何訓練的
一般的深度學習是在數據(data)上做訓練,以使模型泛化到其他數據上也有很好的效果。而元學習是在任務(task)上做訓練,以使模型在沒見過的任務上也做得很好。
如下圖所示。首先元學習??在任務1(task1)中學習得到算法(可以是模型結構、超參、初始化參數等)
?,然后使用測試樣本訓練幾次(一般一兩次就可以了)
?得到的模型?
?,在測試樣本中評估元學習給出的算法?
?好不好,進而評估元學習?
?好不好,因為好的算法在訓練有限次時就能達到較好的效果,這樣每組測試樣例就可以得到一個損失,若算法不好則對應得出的損失也不好,task2 也是同樣的流程。這樣將每個 task?的損失加起來求平均得到最終的損失。
元學習的訓練過程
(圖片來源:火爐課堂 | 元學習(meta-learning)到底是什么鬼?_嗶哩嗶哩_bilibili)
可以看出,相比一般的深度學習過程,大部分的元學習任務在訓練過程中需要計算二次導數,目前也有最新的研究表明將二次導通過一定的規則近似為一次導數更新模型不僅可以大大提升訓練效率,還跟原始的二次導訓練方式的性能不相上下,該部分目前僅僅了解了一下,先不做過多的學習。