Machine-Learning
為什麼我們不直接學習超參數?
我正在實施一篇非常流行的論文“解釋和利用對抗性示例”,在論文中,它訓練了一個對抗性目標函數
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、叉積等不明顯的方式輸入結果。但是,如果您嘗試估計超參數上的一階條件,您將不會得到這種效果。超參數的導數通常會操作模型的整個塊,而不會像導數那樣將其部分改組。這就是為什麼優化超參數通常會導致瑣碎的解決方案,例如我為特定論文提供的解決方案。優化超參數不會讓您的數據集感到不安,也不會讓它不舒服,以至於產生一些有趣的東西。