目錄html
論文信息算法
Nichol A , Achiam J , Schulman J . On First-Order Meta-Learning Algorithms[J]. 2018.數組
本文主要考慮元學習
問題,即存在一個任務分佈(a distribution of tasks),從這個分佈中抽取許多任務來訓練元學習模型(或代理),使其在處理從這個分佈中抽取的之前從未遇到過的任務時能更快的學習(即表現得更好)。網絡
本文經過分析一系列僅在元學習更新(meta-learning update)過程當中使用一階微分(first-order derivation)就能在新任務上實現快速微調的關於參數初始化的算法,驗證了一階元學習算法在一些完善的few-shot分類基準上的有效性,同時還對這些算法的可行性進行了理論分析。數據結構
這些一階元學習算法主要包括MAML的近似表示(忽略二階微分)——first-order MAML(簡記:FOMAML)以及本文提出的Reptile算法。機器學習
是函數的一階偏導數以必定方式排列成的矩陣,其體現了一個可微方程與給出點的最優線性逼近。ide
\[ F=\begin{cases} f_1(x_1,\cdots,x_n)\\ f_2(x_1,\cdots,x_n)\\ \cdots\\ f_m(x_1,\cdots,x_n)\\ \end{cases} \]函數
\[ J = [\frac{\partial f}{\partial x_1} \cdots \frac{\partial f}{\partial x_n}] =\begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \cdots & \frac{\partial f_1}{\partial x_n} \\ \vdots & \ddots & \vdots \\ \frac{\partial f_m}{\partial x_1} & \cdots & \frac{\partial f_m}{\partial x_n} \end{bmatrix} \]性能
\[ \begin{array}{*{20}{l}} {f{ \left( {x} \right) }{\begin{array}{*{20}{l}} {=f{ \left( {\mathop{{x}}\nolimits_{{0}}} \right) }+{f \prime }{ \left( {\mathop{{x}}\nolimits_{{0}}} \right) }{ \left( {x-\mathop{{x}}\nolimits_{{0}}} \right) }+\frac{{f '' { \left( {\mathop{{x}}\nolimits_{{0}}} \right) }}}{{2!}}\mathop{{ \left( {x-\mathop{{x}}\nolimits_{{0}}} \right) }}\nolimits^{{2}}+ \cdots +\frac{{\mathop{{f}}\nolimits^{{ \left( {n} \right) }}{ \left( {\mathop{{x}}\nolimits_{{0}}} \right) }}}{{n!}}\mathop{{ \left( {x-\mathop{{x}}\nolimits_{{0}}} \right) }}\nolimits^{{n}}+\mathop{{R}}\nolimits_{{n}}{ \left( {x} \right) }}\\ \end{array}}}\\ \end{array} \]學習
一個解析表達式按照泰勒公式成無窮級數(或者多項式),根據所研究的定義域,每個展開項所貢獻的大小是不會都相同的,根據它們對解析表達式精確值的貢獻大小將這些項分門別類地叫作領頭階、次領頭階、次次領頭階…
摘自:維基百科(https://en.wikipedia.org/wiki/Transduction_(machine_learning))
- 轉導(Transduction):從觀察到的特定(訓練)案例到特定(測試)案例的推理。
- 概括(Induction):從觀察到的訓練案例到通常規則的推理,而後將其應用於測試案例。
示例:
給出一個點的集合,其中一些點被標記了爲A,B或C,可是大多數點沒有被標記,用?表示。訓練的目的是預測全部未標記點的「最佳」標籤。
採用概括的思想,是使用有標記的點來訓練監督學習算法,而後讓其預測全部未標記的點的標籤。可是,對於這個問題,監督學習算法將僅具備五個標記點,創建捕獲該數據結構的模型確定會很困難。例如,若是使用最近鄰居算法,則即便很明顯能夠看到中間附近的點與標記爲「 B」的點屬於同一個羣集,也有可能會被標記爲「 A」或「 C」。
MAML優化過程的公式化表示:
\[ \min_{\phi}\mathbb{E}_{\mathcal{T}}[L_{\mathcal{T},B}(U_{\mathcal{T},A}(\phi))] \]
對於給定的任務\(\mathcal{T}\),內循環中使用訓練樣本\(A\) 進行優化,而後使用測試樣本 \(B\) 計算獲得損失,外循環使用損失對初始化參數求梯度,便可得出新任務上參數的優化方向。
\[ g_{MAML}=\frac{\partial L_{\mathcal{T},B}(U_{\mathcal{T},A}(\phi))}{\partial \phi}=L^{\prime}_{\mathcal{T},B}(\tilde{\phi})U^{\prime}_{\mathcal{T},A}(\phi), \qquad where \quad \tilde{\phi}=U_{\mathcal{T},A}(\phi)) \]
其中 \(U^{\prime}_{\mathcal{T},A}(\phi)\) 能夠視爲是關於 \(U_{\mathcal{T},A}(\phi)\) 的雅可比矩陣,而 \(U_{\mathcal{T},A}(\phi)\) 能夠視爲是對初始化參數向量累加了一系列的梯度向量, \(U_{\mathcal{T},A}(\phi)=\phi+ g_1 + g_2 + \dots +g_k\) 。
FOMAML的簡化:
將梯度向量視爲常量,便可將雅可比矩陣轉化爲恆等操做(identity operation),因此能夠簡化外循環優化過程當中所使用的梯度公式。
\[ g_{FOMAML}=L^{\prime}_{\mathcal{T},B}(\tilde{\phi}) \]
具體流程以下:
- 採樣任務\(\mathcal{T}\) ;
- 對初始化參數執行更新操做,獲得\(\tilde{\phi}=U_{\mathcal{T},A}(\phi))\);
- 利用 \(\tilde{\phi}\) 計算對 \(\phi\) 的梯度,獲得 \(g_{FOMAML}=L^{\prime}_{\mathcal{T},B}(\tilde{\phi})\)
- 將\(g_{FOMAML}\) 應用到外部循環優化中。
算法描述
算法最後一步的模型參數更新的batch版本,能夠寫爲以下形式:
\[ \phi \leftarrow \phi +\epsilon \frac{1}{n} \sum_{i=1}^{n}(\tilde{\phi_i}-\phi) \]
其中\(\tilde{\phi_i}=U^{k}_{\mathcal{T}_i} \left\{ \phi \right\}\) ,表示在第i個任務上對參數的更新操做。
這個算法與在損失指望上進行的聯合訓練十分類似。
當k=1時,算法對應於指望損失的隨機梯度降低(SGD)。
\[ \begin{align} g_{Reptile,k=1} & =\mathbb{E}_{\mathcal{T}}\mathrm{[\phi-U_{\mathcal{T}}(\phi)]/\alpha}\\ & =\mathbb{E}_{\mathcal{T}}\mathrm{[\nabla_{\phi}L_{\mathcal{T}}(\phi)]} \end{align} \]
當k>1時,更新過程包含了\(L_{\mathcal{T}}\) 的二階乃至更高階的微分項。
更新過程當中的領頭階(Leading Order)展開
直覺是:
使用泰勒序列展開來近似表示Reptile與MAML的更新過程,發現二者具備相同的領頭項(leading-order terms)——領頭階(第一項)起着最小化指望損失的做用;次領頭項(第二項)及後續項最大化任務內的泛化性。
最大化同一任務中不一樣minibatch之間梯度的內積,對其中一個batch進行梯度更新會顯著改善另外一個batch的的表現。
表達式定義(\(i\in[1,k]\) 指代不一樣的batch)
\[ \begin{align} &g_i=L^{\prime}_i(\phi_{i})\quad(在SGD過程當中得到的梯度)\\ &\phi_{i+1}=\phi_i-\alpha g_i\quad(參數更新序列)\\ &\bar{g_i}=L^{\prime}_i(\phi_1)\quad (起始點梯度)\\ &\bar{H_i}=L^{\prime \prime}_i(\phi_1)\quad (起始點Hessian矩陣,即二階梯度) \end{align} \]
將SGD過程當中得到的梯度,按照泰勒公式展開
近似表示MAML梯度(\(U_i\) 表示在第\(i\)個minibatch上對參數向量的更新操做)
領頭階展開
當k=2時,三者的通常表示形式爲:
\[ \begin{align} &g_{MAML}=\bar{g_2}-\alpha\bar{H_2}\bar{g_1}-\alpha\bar{H_1}\bar{g_2}+O(\alpha^2)\\ &g_{MAML}=g_2=\bar{g_2}-\alpha\bar{H_2}\bar{g_1}+O(\alpha^2)\\ &g_{Reptile}=g_1+g_2=\bar{g_1}+\bar{g_2}-\alpha\bar{H_2}\bar{g_1}+O(\alpha^2)\\ \end{align} \]
其中:
- 相似於\(\bar{g_1}\quad \bar{g_2}\)的項就是領頭項,用於最小化聯合訓練損失;
- 相似於\(\bar{H_2}\bar{g_1}\)的項就是次領頭項,做用是最大化不一樣批次數據上獲得的梯度的內積。
在進行minibatch採樣,取三種梯度的指望時,上述兩種領頭項分別用AvgGrad和AvgGradInner表示(k=2):
三種算法梯度的指望表示形式能夠化爲:
擴展到k>2的狀況有:
- 能夠看到三者AvgGradInner與AvgGrad之間的係數比的關係是:MAML > FOMAML > Retile。
- 這個比例與步長\(\alpha\),迭代次數\(k\) 正相關。
找到一個接近全部解流形(Solution Manifolds)的點
直覺:
Reptile收斂於一個解,這個解在歐式空間上與每一個任務的最優解的流形接近。
用 \(\phi\) 表示網絡初始化,\(\mathcal{W_{T}}\) 表示任務\(\mathcal{T}\)上的最優參數集。優化過程的最終目標是找到一個\(\phi\)使得其與全部任務的\(\mathcal{W_{T}}\) 之間的距離最小。
\[ \min_{\phi}\mathbb{E}_{\mathcal{T}}[\frac{1}{2} D(\phi,\mathcal{W_T})^2] \]
對參數\(\phi\)的梯度爲:
在Reptile中每一次迭代至關於採樣一個任務而後在上面執行一側SGD更新。
實際狀況下,很難直接計算出\(P_{\mathcal{W_T}}(\phi)\),即便得\(L_T\) 取得最小值的p。所以在Reptile中,用初始化參數\(\phi\)在\(L_T\) 上執行k步梯度降低後獲得的結果來代替最優化參數\(\mathcal{W^{\star}_{T}(\phi)}\)。
Few-Shot Classification(少樣本分類)是少樣本學習中的一類任務,在這類任務中,存在一個元數據集(Meta-Data Set),包含了許多類的數據,每類數據由若干個樣本組成,這種任務的訓練一般與K-Shot N-way分類任務綁定在一塊兒,具體理解參見《關於N-Way K-Shot 分類問題的理解》。
創建與MAML同樣的CNN訓練模型,在Ominglot和MiniImageNet數據集上進行訓練與測試,實驗結果以下:
從兩個表格中的數據能夠看出,MAML與Reptile在加入了轉導(Transduction)後,在Mini-ImageNet上進行實驗,Reptile的表現要更好一些,而Omniglot數據集上正好相反。
經過在內循環中使用四個不重合的Mini-Batch,產生梯度數據\(g_1,g_2,g_3,g_4\) ,而後將它們以不一樣的方式進行線性組合(等價於執行屢次梯度更新)用於外部循環的更新,進而比較它們之間的性能表現,實驗結果以下圖:
從曲線能夠看出:
Reptile和FOMAML在內循環過程當中都是使用的SGD進行的優化,在這個優化過程當中任何微小的變化都將致使最終模型性能的巨大變化,所以這部分的實驗主要是探究二者對於內循環中的超數的敏感性,同時也驗證了FOMAML在minibatch以錯誤的方式選取時會出現顯著的性能降低狀況。
mini-batch的選擇有兩種方式:
採用不一樣的mini-batch選取方式在FOMAML上進行實驗,發現隨着內循環迭代次數的增多,採用分尾方式的FOMAML模型的測試準確率要高一些,由於在這種狀況下,測試的數據選取方式與訓練過程當中的數據選取方式更爲接近。
當採用不一樣的批次大小時,採用共尾方式選取數據的FOMAML的準確性會隨着批次大小的增長而顯著減少。當採用full-batch時,共尾FOMAML的表現會隨着外循環步長的加大而變差。
共尾FOMAML的表現如此敏感的緣由多是最初的幾回SGD更新讓模型達到了局部最優,之後的梯度更新就會使參數在這個局部最優附近波動。
Reptile有效的緣由有二:
當執行SGD更新時,MAML形式的更新過程就已經被自動包含在其中了,經過最大化模型在不一樣批次數據之間的泛化能力,從而使得模型在微調(fine-tune)時能取得顯著的效果。