Machine-Learning

梯度下降優化正則化參數λλlambda而不是進行網格搜索?

  • September 2, 2017

讓我們做一個簡單的回歸與正則化參數. 在 Andrew Ng 的 coursera ML 課程中,他使用網格搜索來查找.

例如,他會找到 lambdas最優的

這給了我們一個功能. 然後他將返回驗證集上的錯誤是最低的:

然後返回這個最優的. 但是我們不能使用梯度下降(就像我們找到) 找到而不是進行(看似原始的)網格搜索?我沒有看到有什麼原因嗎?也許計算成本太高?或者驗證集中沒有足夠的數據,因此有辦法過度訓練超參數, 或者是其他東西?

**簡短的回答:**是的,由於嶺回歸的特殊形式,可以想像在這種情況下可以使用梯度下降。下面,我推導出驗證集錯誤 wrt 的導數的表達式. 但是,其他優化方法可能更有效且適用範圍更廣。

**更長的答案:**作為函數的驗證集錯誤不是凸的,但從經驗上看,它確實表現得很好——例如平滑,只有一個最小值(也許是偽凸的?如果有人能詳細說明它的屬性,我很想听聽)。這意味著可以利用結構來優化比網格搜索更有效。

可以想像,梯度下降可以用來利用這種結構的一部分,儘管我從未見過有人在這種情況下使用它。這將需要區分驗證集錯誤,這反過來需要區分最優權重(在訓練集上)關於. 由於嶺回歸的方便形式,結果證明存在導數的封閉形式表達式(見下文)。需要進一步調整:必須約束為非負數。這可以使用投影梯度下降來輕鬆完成(在這種情況下,只需設置閾值每一步之後)。

但是,我們可能比梯度下降做得更好。例如,包含二次插值的方法可以利用曲率信息,而梯度下降則不能。我們可以使用像Brent 方法這樣的求根算法來求解其中導數為零。因為這是一個一維優化問題,我們也可以使用黃金分割搜索(或同樣,布倫特方法)等方法直接優化. 這些方法可以利用目標函數中的局部結構,但不需要梯度的表達式。這意味著我們也可以在不存在的情況下應用它們。例如,對於套索正則化參數的驗證集錯誤的導數,幾乎可以肯定沒有封閉形式的表達式。

所有這些方法都只能找到局部最小值,因此,與網格搜索不同,當存在多個局部最小值時,它們可能不是好的選擇。但是,在這種情況下,通過利用目標函數中的結構,全局搜索技術仍然可以擊敗網格搜索。

驗證集錯誤 wrt 的導數:

假設訓練集包含存儲在矩陣中的輸入(行上的點,列上的特徵)和存儲在列向量中的輸出. 驗證集包含輸入和輸出. 假設列和已標準化(使用平均值和標準差), 然後和已居中(使用)。這樣做是為了避免在模型中包含常數項。

給定,權重是在訓練集上學習的:

嶺回歸有一個眾所周知的封閉形式解決方案:

我們想找到最小化驗證集上的錯誤:

讓表示驗證集錯誤。它的導數是:

經過一些矩陣爭論後,我們有:

現在我們必須區分:

如果是一個可逆方陣,它是然後(證明在這裡)。使用這個身份和更多的矩陣爭論,我們有:

將其插入驗證集錯誤的導數,以及表達式. 讓. 然後:

天真地為不同的值計算這個表達式將在計算上效率低下,因為它需要許多矩陣求逆。對於較小的值,矩陣求逆也可能在數值上不穩定. 為了避免這種情況,使用特徵值分解重新表達. 讓矩陣包含列上的特徵向量和是包含相應特徵值的向量。所以. 的特徵向量也由, 其特徵值為. 所以. 矩陣的逆可以通過對特徵值求逆來求得,令,. 因為是正交的,簡化為. 將這些表達式插入:

可以通過預先計算不依賴於表達式的部分來提高計算效率. 讓:

然後:

通過替換涉及的矩陣運算可以獲得進一步的計算增益與涉及其對角線的元素操作。

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

comments powered by Disqus