1. 程式人生 > >無約束最優化方法——牛頓法、擬牛頓法、BFGS、LBFGS

無約束最優化方法——牛頓法、擬牛頓法、BFGS、LBFGS

這是前一段時間寫的部落格,然後又重新整理了一下

【最速下降法】

無約束最優化方法不涉及約束條件,所以都是介紹如何尋找搜尋方向以及搜尋步長。
無約束最優化問題的目標函式:

minxRnf(x)
感覺這latex還是有些彆扭,稍不留意就直接當做字元處理了。
還是首先介紹一下梯度下降,梯度下降學過優化的都很清楚,一般叫最速下降法,這個方法有兩點,首先是x更新的方向是負梯度方向,第二個是沿著該方向搜尋,找到該方向的最小值所對應的x就是下次更新的值。梯度下降是最簡單的一種方法,但是很多情況下卻並不使用這種方法,原因是收斂速率比較慢,問題出在第二步上,由於搜尋搜尋時一直打到該方向的最小值,那麼很顯然,繼續沿著該方向搜尋會使函式值變小,函式梯度與搜尋方向夾角大於九十度,所以該點的梯度和搜尋方向在此時正交,這樣相鄰搜尋點的梯度就會呈現鋸齒狀,函式沿著鋸齒狀下降,嚴重降低目標函式的收斂速率。
梯度下降的遞推公式推導是根據函式的一階泰勒展開近似得到的。將f
(x)
x(k)附近進行一階泰勒展開:
f(x)f(x(k))+gTk(xx(k))
這裡,gk=g(x(k))=f(x(k))f(x)x(k)的梯度。
那麼第k+1次的迭代值就可以通過:
x(k+1)x(k)+λkpk.
其中pk是搜尋方向,取負梯度方向pk=f(x(k))可以使函式下降最快,λk是步長,並且取λk使得
f(x(k)+λkpk)=minλ0f(x(k)+λpk)
最速下降法就是這樣,不斷地尋找搜尋方向以及確定搜尋步長,直到達到終止條件,相鄰函式值相遇某個閾值或是x(k)x(k+1)小於某個閾值。但是產生的問題就是最速下降在接近終點的時候收斂速度較慢,容易之字形收斂。當然步長也不必是取該方向下降盡頭的值,可以取固定值,但是太大容易發散,太小收斂速率比較慢。
關於隨機梯度下降法與批量下降法,大多數用梯度下降是求無約束目標函式,例如求經驗損失最小時函式的引數,含有大量的訓練資料。批量下降法是同時使用所有資料對梯度進行更新,很顯然需要好多次迭代。隨機梯度下降是每次只使用一個數據對函式引數進行更新,這樣往往只通過一部分資料更新引數就會收斂,但是由於每次根據一個數據跟新,容易造成噪音問題。

【牛頓法】

由於最速梯度下降收斂速度並不“最速”,區域性搜尋中最速下降的方向和全域性的最小值方向並不一致,所以就有後來改進的方法,包括牛頓法以及擬牛頓法。
牛頓法要求f(x)具有二階連續可導性。
仍然考慮無約束最優化問題的目標函式:

minxRf(x)
這裡所不同的是進行二階泰勒展開:
f(x)f(x(k))+gTk(xx(k))+12(xx(k))TH(x(k))(xx(k))
這裡,gk=g(x(k))=f(x(k))f(x)x(k)的梯度。H(x(k))f(x) 的海塞矩陣
H(x)=[2f(x)xixj]n×n
顯然,f
(x)
有極值的條件是在xk處的一階導數為0,

相關推薦

約束最優化方法——牛頓牛頓BFGSLBFGS

這是前一段時間寫的部落格,然後又重新整理了一下 最速下降法 牛頓法 擬牛頓法 SR1 BFGS DFP LBFGS 【最速下降法】 無約束最優化方法不涉及約束條件,所以都是介紹如何尋找搜尋方向以及搜尋步長。 無約束最優化問題的目標函式:

凸優化理論——約束最優化方法 + Lagrange multipliers + KKT conditions

蠻久前學過了凸優化理論,今天要用到重溫了一下。 只是mark一下優秀的部落格~ 梯度:方向與等值面垂直,並且指向函式值提升的方向。 正定二次型函式: n 階實對稱矩陣 Q,對於任意的非0向量 X,如果有 XTQX>0,則稱 Q 是正定矩

常見的幾種最優化方法(梯度下降牛頓牛頓共軛梯度等)

linear 樣本 計算 每次 理學 系統 是否 底部 有效 我們每個人都會在我們的生活或者工作中遇到各種各樣的最優化問題,比如每個企業和個人都要考慮的一個問題“在一定成本下,如何使利潤最大化”等。最優化方法是一種數學方法,它是研究在給定約束之下如何尋求某些因素(的量),以

【機器學習詳解】解約束優化問題:梯度下降牛頓牛頓

無約束優化問題是機器學習中最普遍、最簡單的優化問題。 x∗=minxf(x),x∈Rn 1.梯度下降 梯度下降是最簡單的迭代優化演算法,每一次迭代需求解一次梯度方向。函式的負梯度方向代表使函式值減小最快的方向。它的思想是沿著函式負梯度方向移動逐步逼

約束演算法-最速下降,牛頓牛頓,共軛梯度求解二次函式極小值

import numpy as np import math a=np.random.randint(1,10,size=[100,1]) G=(a*a.T)+np.random.randint(1,5)*np.eye(100) b=np.dot(G,np.ones(

最優化方法牛頓迭代牛頓迭代

基礎拐點若曲線圖形在一點由凸轉凹,或由凹轉凸,則稱此點為拐點。直觀地說,拐點是使切線穿越曲線的點。拐點的必要條件:設f(x){\displaystyle f(x)}在(a,b){\displaystyle (a,b)}內二階可導,x0∈ (a,b){\displaystyle

最優化學習筆記(五)牛頓牛頓

div size -a article fonts alt water src jsb 最優化學習筆記(五)牛頓法及擬牛頓法

[最優化演算法]最速下降求解約束最優化問題

1. 問題描述 最優化問題的一般形式如下所示: 對於f:D⊆Rn→R1,求解 minx∈Ωf(x)s.t.{s(x)⩾0h(x)=0 其中f(x)稱為優化目標函式,s.t.稱為約束條件。對於無約束最優化,沒有約束條件要求,即在全部定義域內尋找目標函式最優

梯度下降隨機梯度下降批量梯度下降牛頓牛頓共軛梯度

引言 李航老師在《統計學習方法》中將機器學習的三要素總結為:模型、策略和演算法。其大致含義如下: 模型:其實就是機器學習訓練的過程中所要學習的條件概率分佈或者決策函式。 策略:就是使用一種什麼樣的評價,度量模型訓練過程中的學習好壞的方法,同時根據這個方

牛頓牛頓學習筆記

機器學習演算法中經常碰到非線性優化問題,如 Sparse Filtering 演算法,其主要工作在於求解一個非線性極小化問題。在具體實現中,大多呼叫的是成熟的軟體包做支撐,其中最常用的一個演算法是 L-BFGS。為了解這個演算法的數學機理,這幾天做了一些調研,現把學習過程中理解的一些東西整

【數學】梯度下降,牛頓牛頓

梯度下降 將f(x)f(x)一階泰勒展開: f(x)=f(x0)+(x−x0)f′(x0)f(x)=f(x0)+(x−x0)f′(x0) f(x)=f(x0)+Δxf′(x0)f(x)=f(x0)+Δxf′(x0) 如果當前處於x0x0節點,要使得前進同樣的

牛頓牛頓學習筆記(一)牛頓

機器學習演算法中經常碰到非線性優化問題,如 Sparse Filtering 演算法,其主要工作在於求解一個非線性極小化問題。在具體實現中,大多呼叫的是成熟的軟體包做支撐,其中最常用的一個演算法是 L-BFGS。為了解這個演算法的數學機理,這幾天做了一些調研,現把學習過程

牛頓牛頓詳解

參考網址:http://blog.csdn.net/itplus/article/details/21896453 牛頓法: http://blog.csdn.net/itplus/article/details/21896453 擬牛頓條件: http://blog.csdn.ne

牛頓牛頓學習心得

1. 引言 在logistics迴歸中,我們通常使用梯度下降法(Gradient Decend)來優化目標函式。但梯度下降法的策略實際上是比較片面的,因為它只使用了一階導資訊,搜尋方向(梯度方向)比較偏向於區域性資訊。所以,我們引入了牛頓法。 這裡推薦一個牛頓法

牛頓牛頓學習筆記(四)BFGS 演算法

機器學習演算法中經常碰到非線性優化問題,如 Sparse Filtering 演算法,其主要工作在於求解一個非線性極小化問題。在具體實現中,大多呼叫的是成熟的軟體包做支撐,其中最常用的

機器學習中常見的優化方法:梯度下降牛頓牛頓共軛梯度拉格朗日乘數

機器學習中常見的優化方法: 梯度下降法、牛頓法擬牛頓法、共軛梯度法、拉格朗日乘數法 主要內容 梯度下降法 牛頓法擬牛頓法 共軛梯度法 拉格朗日乘數法   許多機器學習演算法,往往建立目標函式(損失函式+正則項),通過優化方法進行優化,根據訓練

MATLAB學習筆記05——約束一維極值問題(二)斐波那契基本牛頓和全域性牛頓

一、斐波那契法 1.斐波那契法與黃金分割法不同的是,黃金是單向縮小區間的演算法,斐波那契是雙向收縮。 斐波那契數列指的是 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89

機器學習最優化方法[2] --牛頓

文章目錄 1、牛頓法 2、擬牛頓法 DFP演算法 BFGS演算法 L-BFGS 參考資料 1、牛頓法 牛頓法也是一種迭代的求解方法,相比於梯度下降法,牛頓法在搜尋方向上不僅考慮一階梯度方向,同時考

最優化——牛頓方法matlab程式

% BFGS function [x, output] = bfgs(fun, dfun, x0, varargin) % Step 1: initialization epsi = 1.0e-6; k = 0; funcN = 0; rho = 0.01; l = 0.1

1.Java基礎之識別符號命名八大基本資料型別三大引用型別運算子以及程式分支結構方法的定義過載遞迴

一、基礎匯入: 1.java採用Unicode編碼,16進位制編碼,支援世界上所有語言(GBK,gb2312,Unicode,UTF-8,ISO-8859-1)。 多執行緒---> c-編譯型語言 Test.java--原始檔,原始檔必須與主類名(public class Test