Machine-Learning

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

  • September 7, 2018

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

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

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

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

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

讓我們看看如果我們插入超參數,一階條件會是什麼樣子 α 並嘗試以與以下相同的方式學習它 θ 從數據: αJ(θ)=ααJ(θ)+α(1α)J(θ) =J(θ)J(θ)=0

因此, J(θ)=J(θ)

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

如果您想要更通用的哲學思想,請考慮這一點:超參數通常不會與數據糾纏在一起。我是什麼意思?在神經網絡甚至簡單的回歸中,您的模型參數將在某些方面直接與數據交互: yL=XLβL

aL=σ(yL)
XL+1=aL
依此類推。你看怎麼 βL 糾結於你的數據。所以,當你對任何 β 在目標函數中,您獲得的數據點以矩陣、Hessians、叉積等不明顯的方式輸入結果。

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

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