Machine-Learning

為什麼我們不直接學習超參數?

  • September 7, 2018

我正在實施一篇非常流行的論文“解釋和利用對抗性示例”,在論文中,它訓練了一個對抗性目標函數

J''(θ) = αJ(θ) + (1 - α)J'(θ)。

它將 α 視為超參數。α 可以是 0.1、0.2、0.3 等。

不管這篇具體的論文如何,我想知道,為什麼我們不將 α 包含在我們的參數中並學習最好的 α 呢?

這樣做有什麼壞處?是不是因為過擬合?如果是這樣,為什麼再學習 1 個參數會導致如此多的過擬合?

讓我們看看如果我們插入超參數,一階條件會是什麼樣子 $ \alpha $ 並嘗試以與以下相同的方式學習它 $ \theta $ 從數據: $$ \frac \partial{\partial\alpha} J''(\theta) = \frac \partial{\partial\alpha}\alpha J(\theta) + \frac \partial{\partial\alpha}(1 − \alpha)J'(\theta)\ = J(\theta) − J'(\theta) = 0 $$ 因此, $$ J(\theta) = J'(\theta) $$

當這個超參數被優化後,就會導致 J 和 J' 成為同一個函數,即相等的權重。你最終會得到一個微不足道的解決方案。

如果您想要更通用的哲學思想,請考慮這一點:超參數通常不會與數據糾纏在一起。我是什麼意思?在神經網絡甚至簡單的回歸中,您的模型參數將在某些方面直接與數據交互: $$ y_L=X_L\beta_L $$ $$ a_L=\sigma(y_L) $$ $$ X_{L+1}=a_L $$ 依此類推。你看怎麼 $ \beta_L $ 糾結於你的數據。所以,當你對任何 $ \beta $ 在目標函數中,您獲得的數據點以矩陣、Hessians、叉積等不明顯的方式輸入結果。

但是,如果您嘗試估計超參數上的一階條件,您將不會得到這種效果。超參數的導數通常會操作模型的整個塊,而不會像導數那樣將其部分改組。這就是為什麼優化超參數通常會導致瑣碎的解決方案,例如我為特定論文提供的解決方案。優化超參數不會讓您的數據集感到不安,也不會讓它不舒服,以至於產生一些有趣的東西。

引用自:https://stats.stackexchange.com/questions/365762

comments powered by Disqus