最優化演算法(二):牛頓法
1.推導
牛頓法和擬牛頓法是求解無約束最優化問題的常用方法,它們比梯度下降收斂更快。考慮同樣的一個無約束最優化問題:
其中f(x)具有二階連續偏導數的性質,如果k次迭代值為,則可進行二階泰勒展開:
上述公式裡面的值不解釋了,就是一階導和二階導(也稱海塞矩陣在此點的值),函式有極值的必要條件就是在極值點 處一階導數為0。牛頓法的每次迭代就是讓一階導為零,即滿足:
而上式根據泰勒一階導等於:
根據這一步就能得到迭代公式:
2.對比
為什麼牛頓法更快呢?我和網上其他的想的不太一樣,我認為是因為每次迭代,牛頓法都能找到當前的極小值,而不是單純找到當前下降最快的部分,直接走到當前能走的最低點,在下一次迭代中,換一個點繼續求解。
3.擬牛頓法
擬牛頓法就是對牛頓法的計算上加以簡化,因為牛頓法每次會求海塞矩陣的逆矩陣,比較麻煩,所以它會用一個近似矩陣 G(x)替代H(x)的逆矩陣,所以擬牛頓法不需要二階導數的資訊,有時比牛頓法更為有效。 常用的擬牛頓實現方法有DFP和BFGS.。具體的推導有興趣可以見統計學習方法P220,這個演算法我用得不多,所以沒有細究。