元學習Meta-Learning—授人以魚不如授人以漁

目錄

  • 背景
  • Meta-Learning的數據劃分
  • MAML算法
  • MAML的思考
  • 參考

背景

咱們知道如今深度學習在使用大型數據集掌握一項任務(檢測,分類等)方面取得了巨大的成功,但這並非真正咱們追求的「人工智能」。具體來講,咱們可能訓練了一個能作物理題很高分的學生,可是他也只能作物理題而已,面對數學題他只能吞下零分的命運;其次,在面對新的任務(數學題)的時候,咱們的學生仍然須要大量的數據(數學題)進行訓練,而在學習物理的時候積累下的學習方法(先驗知識)卻基本幫不上忙。web

以上的問題能夠抽象爲一個具體的問題:如今的深度學習每每只是在學習某一類特定的任務,而不是在學習自身「學習」的能力,這也是Meta-Learning的定義:學習如何學習的能力,而不是學習具體的某一個任務。假如咱們的算法學會了怎麼學習,當面對一個新的任務的時候,有了學習能力(先驗知識)就能夠只用少許的數據進行快速的學習,而這種學習如何學習的方式纔是真正的「人工智能」。算法

Meta-Learning 的算法有不少,有些算法能夠針對不一樣的訓練任務,輸出不一樣的神經網絡結構和超參數,例如 如今很火的 Neural Architecture Search (NAS) 和 AutoML。本文主要介紹另一種Meta-Learning算法:MAML,它不改變深度神經網絡的結構,只改變網絡的初始化參數。微信

Meta-Learning的數據劃分

首先我先用一段不嚴謹的語言描述一下Meta-Learning:咱們假定傳統的深度學習算法是給100道化學題讓他學會作化學題(再用50道化學題進行測試),MAML算法則是用5道數學題,5道語文題,5道物理題來讓算法學會作5道化學題,具體來講先經過5道數學、5道語文、5道物理題來讓算法掌握學習的能力(分別用2道數學、2道語文、2道物理題來驗證學習效果),而後再給一點點化學題(5題)訓練就可讓算法掌握化學題的作法。若是說傳統深度學習是在學習一個任務,那麼MAML則是在遍歷多個任務後找到一組敏感的參數,在新任務到來的時候幫助模型利用這組參數快速地將先驗知識轉移到新任務上。天然地,Meta-Learning的數據集確定不是像傳統DL那樣簡單劃分爲訓練集和測試集:如上圖所示,在Meta-Learning上,咱們再也不直接叫train和test了,而是叫Meta-trainMeta-test。在上圖中,每一行都是一個task(例如數學題、物理題),包含了task的train set和test set,圖中展現就是所謂的5way 1shot 設定,也就是一個task包含5個類,每個類一個訓練樣本,而後給你2個測試樣本測試。咱們能夠把每個task當作一個Meta-Learning的訓練樣本。咱們要經過多種task的訓練,從而在Meta-test的時候也就是在新的task上取得好效果。出於習慣,咱們把meta-training中的training data叫作support set、test set叫作query set網絡

這部分主要是掌握Meta-Learning的數據集是如何劃分的便可,具體MAML的細節下一部分會具體闡述。編輯器

MAML算法

MAML算法主要分紅三步:學習

  • (1) 採樣任務數據:首先會從meta-training裏面採樣一個batch size的training data,好比batch size爲3的時候咱們就會隨機採樣3個任務的數據(好比作數學題,作物理題,作語文題)。
  • (2) 計算梯度和參數:對 training data 中每個 task 以及其對應的 label 計算屬於每一個 Task 的 gradient 與更新後的 model 參數。(這裏是 第一次計算梯度
  • (3) 更新模型:當有了每一個 task 利用 training data of meta-train(即support set)獲得的新模型參數後,能夠利用test data of meta-train(即query set)驗證,並且加總全部任務的loss,對本來模型參數(注意不是對第一次求的梯度參數)微分並真正的更新一次參數。( 第二次計算梯度

MAML的思考

整個算法的流程仍是比較簡潔的,讀者可能會以爲爲何不和往常同樣計算一次梯度就行了,爲何要算兩次,個人理解是:對於一個有不少任務要學習的模型,咱們要優化這個模型,第一個想法多是找到一個點(參數空間上)讓全部的任務在這個點是最優解,聽起來很強,但想一想都以爲很困難,平時咱們訓練單一任務SGD找最優解都要迭代那麼久,怎麼可能一會兒就能夠找到一個點是全部任務的最優解?因此MAML把問題轉換爲找到一個點,讓這個點距離各個任務的最優解最近,讓這個點只須要簡單地梯度降低一次就能夠找到最優解,顯然這種想法更加的科學。回到咱們一開始的例子:咱們想在計算機視覺漫談公衆號發掘一位有考上清華潛力的全才,只計算一次梯度的想法至關於我先在這些人裏面找語文滿分的,而後在語文滿分的中找數學滿分的,再在數學滿分裏面找英語滿分的……,這確定很難。而計算兩次梯度的想法至關於我在全部關注計算機視覺漫談公衆號中的人中找到很聰明的那個,這我的不必定語文第一名,但他很聰明,全能型選手,學啥都很快很好,顯然經過第二種方法更能挖掘出一位有考上清華潛力的全才。測試

另外有接觸過遷移學習的同窗可能會以爲元學習和遷移學習很像,在個人理解上二者其實沒有明顯的界限,這裏引用王晉東博士的話:你能夠說元學習是強調從不一樣的若干小任務小樣原本學習一個對未知樣本未知類別都有好的判別和泛化能力的模型,但其實你想一想,難道這不就是知識遷移嗎?從遷移上來看,你能夠說學習一個可遷移的特徵或模型,能夠從A遷移到B。但這些能夠被遷移過提純的東西,難道不能被叫作元知識嗎?因此實際上是異曲同工的,都應該一塊兒聯繫起來看。優化

參考

  • (1)論文:https://arxiv.org/pdf/1703.03400.pdf
  • (2)Chelsea Finn ‘s blog https://bair.berkeley.edu/blog/2017/07/18/learning-to-learn/


本文分享自微信公衆號 - 計算機視覺漫談(gh_41e38694bc19)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。人工智能

相關文章
相關標籤/搜索