當前位置:
首頁 > 最新 > OpenAI提出Reptile:可擴展的元學習演算法

OpenAI提出Reptile:可擴展的元學習演算法

選自OpenAI Blog

作者:ALEX NICHOL&JOHN SCHULMAN

機器之心編譯

近日,OpenAI 發布了簡單元學習演算法 Reptile,該演算法對一項任務進行重複採樣、執行隨機梯度下降、更新初始參數直到習得最終參數。該方法的性能可與 MAML(一種廣泛應用的元學習演算法)媲美,且比後者更易實現,計算效率更高。

元學習是學習如何學習的過程。元學習演算法會學習任務的一個分布,每項任務都是學習問題,並輸出快速學習器,學習器可從少量樣本中學習並進行泛化。一個得到充分研究的元學習問題是 few-shot 分類,其中每項任務都是分類問題,學習器只能看到 1-5 個輸入-輸出樣本(每個類別),之後學習器必須對新輸入進行分類。下面,你可以嘗試 OpenAI 的 1-shot 分類交互 Demo,其使用了 Reptile。

Reptile 的工作原理

和 MAML 類似,Reptile 會學習神經網路的參數初始化方法,以使神經網路可使用少量新任務數據進行調整。但是 MAML 通過梯度下降演算法的計算圖來展開微分計算過程,而 Reptile 在每個任務中執行標準形式的隨機梯度下降(SGD):它不用展開計算圖或計算任意二階導數。因此 Reptile 比 MAML 所需的計算量和內存都更少。偽代碼如下:

最後一步也可以把 Φ?W 作為梯度,將其插入如 Adam 等更複雜的優化器。

很令人震驚,該方法運行效果很好。如果 k=1,該演算法對應「聯合訓練」(joint training):在多項任務上執行 SGD。儘管聯合訓練在很多情況下可以學到有用的初始化,但在 zero-shot 學習不可能出現的情況下(如輸出標籤是隨機排列的)它能學習的很少。Reptile 要求 k>1,更新依賴於損失函數的高階導數。正如 OpenAI 在論文中展示的那樣,k>1 時 Reptile 的行為與 k=1(聯合訓練)時截然不同。

為了分析 Reptile 的工作原理,OpenAI 使用泰勒級數逼近更新。Reptile 更新最大化同一任務中不同小批量的梯度內積,以改善泛化效果。該發現可能在元學習之外也有影響,如解釋 SGD 的泛化性能。OpenAI 的分析結果表明 Reptile 和 MAML 可執行類似的更新,包括具備不同權重的相同兩個項。

在 OpenAI 的實驗中,他們展示了 Reptile 和 MAML 在 Omniglot 和 Mini-ImageNet 基準上執行 few-shot 分類任務時具備類似的性能。Reptile 收斂速度更快,因為其更新具備更低的方差。OpenAI 關於 Reptile 的分析表明,我們可以使用不同的 SGD 梯度組合獲取大量不同的演算法。在下圖中,假設我們在不同任務中使用不同批量大小的 SGD 執行 K 個更新步,產生 g_1,g_2,…,g_k k 個梯度。下圖展示了在 Omniglot 上的學習曲線,且它由梯度的和作為元梯度而繪製出。g_2 對應一階 MAML,即原版 MAML 論文提出的演算法。由於方差縮減,使用更多的梯度會導致更快的學習或收斂。注意僅使用 g_1(對應 k=1)如預測那樣在這個任務中沒有什麼提升,因為我們無法改進 zero-shot 的性能。

實現

實現的 GitHub 地址:https://github.com/openai/supervised-reptile

該實現應用 TensorFlow 進行相關的計算,代碼可在 Omniglot 和 Mini-ImageNet 上復現。此外,OpenAI 也發布了一個更小的基於 JavaScript 的實現(https://github.com/openai/supervised-reptile/tree/master/web),其對使用 TensorFlow 預訓練的模型進行了調整——以上 demo 就是基於此實現的。

最後,下面是一個 few-shot 回歸的簡單示例,預測 10(x,y) 對的隨機正弦波。該示例基於 PyTorch:

論文:Reptile: a Scalable Metalearning Algorithm

地址:https://d4mucfpksywv.cloudfront.net/research-covers/reptile/reptile_update.pdf

摘要:本論文討論了元學習問題,即存在任務的一個分布,我們希望找到能在該分布所採樣的任務(模型未見過的任務)中快速學習的智能體。我們提出了一種簡單元學習演算法 Reptile,它會學習一種能在新任務中快速精調的參數初始化方法。Reptile 會重複採樣一個任務,並在該任務上執行訓練,且將初始化朝該任務的已訓練權重方向移動。Reptile 不像同樣學習初始化的 MAML,它並不要求在優化過程中是可微的,因此它更適合於需要很多更新步的優化問題。我們的研究發現,Reptile 在一些有具備完整基準的 few-shot 分類任務上表現良好。此外,我們還提供了一些理論性分析,以幫助理解 Reptile 的工作原理。

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

?------------------------------------------------


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

觀點 | 下一步研究目標:盤點NLP領域最具潛力的六大方向
結合主動學習與遷移學習:讓醫學圖像標註工作量減少一半

TAG:機器之心 |