論文閱讀:《DARTS: Differentiable Architecture Search》(閱讀中)
方法
拓撲結構
首先我們作一張有向無環圖。圖中節點記為\(x^{(i)}\),表示資料的某種潛在表達,例如一個特徵圖;邊記為\((i,j)\),邊的意義記作\(o^{(i,j)}\),可認為是“操作”。
\[x^{(j)}=\sum_{i<j}o^{(i,j)}(x^{(i)}) \]也就是說,每一個節點所代表的數都是由其前驅節點完全總結而成。
特別地,我們引入零操作\(\mathbf{0}(x)=0\)表示空缺的連線。例如,如果\(o^{(i,j)}=\mathbf{0}\),那麼就可以認為節點i和節點j之間沒有連線。
以上就是DARTS中圖的基本拓撲結構。
連續鬆弛
進一步地,我們展示連續鬆弛方法。
在連續鬆弛圖中,我們沿用上述拓撲結構,並加以修改。
\[\bar{o}^{(i,j)}(x)= \sum_{o\in\mathcal{O}} \cfrac {\exp(\alpha_o^{(i,j)})} {\sum_{o'\in\mathcal{O}} \exp(\alpha_{o'}^{(i,j)})}o(x)\]這是原文中沒有的,而是我基於原文的文意重新總結出來的。
相當於是說,\(\bar{o}\)是\(o\)的加權和,加權方式類似於softmax,權重為\(\alpha_o^{(i,j)}\),也就是每條邊對應不止一個\(o\),每條邊的每個\(o\)對應一個權重\(\alpha\)。
並且,\(\mathcal{O}\)表示操作\(o\)
隨後我們需要規定訓練時損失\(\mathcal{L}_{train}\)和評估時損失\(\mathcal{L}_{val}\)。
我們的訓練任務可以表示成如下的2級優化問題:
訓練演算法
為每個edge建立一個混合操作\(\bar{o}^{(i,j)}\),其中這個混合操作受到引數\(\alpha^{(i,j)}\)的調控。
當未收斂時,執行:
- 1,通過下降\(\nabla_{\alpha}\mathcal{L}_{val}(w-\xi\nabla_w\mathcal{L}_{train}(w,\alpha),\alpha)\)來更新\(\alpha\)。如果是first-order approximation的情況,則\(\xi\)為零。
- 2,通過下降\(\nabla_w\mathcal{L}_{trrain}(w,\alpha)\)來更新\(w\)。
根據最終學習到的\(\alpha\)得到最終架構。
基本的框架就是這個兩部下降迴圈。
\(\alpha\)在此處叫做結構引數,\(w\)在此處叫做權重。
近似架構梯度
在上述演算法框架中可見,我們認為
\[\nabla_{\alpha}\mathcal{L}_{val}(w^*(\alpha),\alpha) \approx \nabla_{\alpha}\mathcal{L}_{val}(w-\xi\nabla_w\mathcal{L}_{train}(w,\alpha),\alpha)\]。這種近似是在NAS【評估】階段的改進,為的是在對w的訓練還不完全收斂時就得出對應的\(\alpha\)的損失函式。
“近似架構梯度”這個直譯可能並不貼切。意譯的話應該譯作“結構引數梯度的近似”。
推導離散架構
相對於應用了\(\alpha\)的“連續架構”而言,我們還需要一個離散架構作為最終結果。
論文十問
Q1 論文試圖解決什麼問題?
Q2 這是否是一個新的問題?
Q3 這篇文章要驗證一個什麼科學假設?
Q4 有哪些相關研究?如何歸類?誰是這一課題在領域內值得關注的研究員?
Q5 論文中提到的解決方案之關鍵是什麼?
Q6 論文中的實驗是如何設計的?
Q7 用於定量評估的資料集是什麼?程式碼有沒有開源?
Q8 論文中的實驗及結果有沒有很好地支援需要驗證的科學假設?
Q9 這篇論文到底有什麼貢獻?
Q10 下一步呢?有什麼工作可以繼續深入?