官术网_书友最值得收藏!

2.2 模型優化基本方法

在優化目標較為復雜時,通常很難直接通過參數估計方法求得最優估計值。事實上,機器學習的模型訓練除了使用前述參數估計法之外,還可通過數值優化計算方法確定模型參數。這類數值優化方法通常采用迭代逼近的方式確定最優解。在逼近最優解的過程中,模型性能會逐漸提升,故稱此類方法為模型優化方法。由于模型優化方法采用迭代方式逼近最優解的策略,故在很多情況下能夠有效應對優化目標較為復雜的情況。機器學習的模型優化方法有很多,本節主要介紹兩種基本方法,即梯度下降方法和牛頓迭代法。

2.2.1 梯度下降法

梯度下降方法是機器學習最常用的模型優化方法之一,其基本思想是朝著函數梯度的反方向不斷迭代更新參數。由于梯度方向為函數值上升最快的方向,故梯度反方向就是函數值下降最快的方向。一直朝著梯度反方向更新參數可以使函數值得到最快的下降,從而能夠盡可能快速地逼近函數極小值點直至收斂。梯度下降方法的數學表達如下

978-7-111-63202-3-Chapter02-47.jpg

其中,stepk為第k次迭代的步長;Pk為第k次尋優方向,即為梯度反方向978-7-111-63202-3-Chapter02-48.jpg

式(2-11)的含義是在第k次迭代起始點Xk確定的情況下,向目標函數梯度反方向走一段距離并將此次所到新位置Xk+stepkPk作為下次迭代的起點賦值給Xk+1。通過對stepk適當取值就可由此得到目標函數的最優解。圖2-1表示初始迭代點為X1的梯度下降迭代過程。

梯度下降方法的關鍵在于如何確定每次迭代的搜索方向和迭代步長。以圖2-1所示的迭代過程為例,從起始點X1開始通過梯度下降法進行迭代優化,則有

X2=X1+step1P1

其中,978-7-111-63202-3-Chapter02-49.jpg

FX)為優化的目標函數,則步長step1可通過下列優化方式確定

978-7-111-63202-3-Chapter02-50.jpg

978-7-111-63202-3-Chapter02-51.jpg

圖2-1 梯度下降方法的迭代過程

現給出步長stepk的具體計算公式,根據二次泰勒展開式可將目標函數FX)近似表示為正定二次函數

978-7-111-63202-3-Chapter02-52.jpg

其中,A為正定的系數矩陣;X為參數向量;b為常數向量;c為常數。

Xk處對FX)求梯度可得978-7-111-63202-3-Chapter02-53.jpg。從Xk點出發沿著梯度的反方向進行搜索,則有

978-7-111-63202-3-Chapter02-54.jpg

在選擇最優步長時,每步搜索方向均與上步搜索方向正交,即有978-7-111-63202-3-Chapter02-55.jpg。將978-7-111-63202-3-Chapter02-56.jpg展開,則有[AXk-stepkPk)+bT]Pk=0,由此解出stepk并將其代入迭代公式(2-14),則可將梯度下降迭代公式進一步改寫為

978-7-111-63202-3-Chapter02-57.jpg

在機器學習的具體應用中,梯度下降方法的步長有時會根據需要人為設定,這需要一定的經驗。如果步長設定過大,則會導致算法不收斂;如果步長設定過小,則會使算法收斂得較慢,提高計算的時間成本。

例如,對于函數問題min978-7-111-63202-3-Chapter02-58.jpg,顯然有

978-7-111-63202-3-Chapter02-59.jpg

假設起始點為X1=(1,1)T,則有FX1)=5,978-7-111-63202-3-Chapter02-60.jpg。由迭代公式可得

978-7-111-63202-3-Chapter02-61.jpg

若迭代次數允許,則可一直迭代下去,直到滿足終止條件,得到近似最優解。

【例題2.5】試根據表2-4中的數據建立線性回歸模型,并使用該模型預測出面積為137m2的房屋價格,要求其中對目標函數的優化采用梯度下降法。

表2-4 房屋價格與房屋面積數據

978-7-111-63202-3-Chapter02-62.jpg

【解】表2-4中數據較大,不方便計算,因此這里先對其進行歸一化處理再求解線性回歸模型,具體方式為

X=(Si-Smin)/(Smax-Smin);y=(Pi-Pmin)/(Pmax-Pmin

其中,SminSmax分別表示最小和最大的房屋面積取值;Si表示序號為i的房屋的面積取值;PminPmax分別表示最小和最大的房屋價格取值;Pi表示序號為i的房屋價格取值。

經過歸一化后的數據如表2-5所示。

表2-5 歸一化后的數據

978-7-111-63202-3-Chapter02-63.jpg

假設模型的具體形式為y=w1X+w0。使用該模型構造目標函數,并采用誤差平方和作為優化目標。為方便計算,將目標函數定義為1/2倍的誤差平方和,即

978-7-111-63202-3-Chapter02-64.jpg

其中,yi為序號為i的數據的真實值;978-7-111-63202-3-Chapter02-65.jpg為對應的預測值;w=(w0w1T為參數向量

使用梯度下降方法對上述目標函數進行優化,通過如下迭代公式更新參數向量

978-7-111-63202-3-Chapter02-66.jpg

其中,η為步長,此處步長選定為η=0.01;wold表示當前更新的起點;wnew表示更新后的權重向量。目標函數Ew)的梯度為

978-7-111-63202-3-Chapter02-67.jpg

由此可將梯度下降算法的迭代計算公式轉化為

978-7-111-63202-3-Chapter02-68.jpg

設置w0=(1,1)T,對上式進行1000次迭代,通過Python編程計算可得如表2-6所示的計算結果(表中僅給出部分迭代結果)。

表2-6 梯度下降方法迭代取值表

978-7-111-63202-3-Chapter02-69.jpg

由表2-6中數據可知,經過1000次迭代后算法趨于收斂。因此可根據梯度下降方法求得線性回歸模型為y=0.704037X+0.142370。對面積為137m2的房屋價格進行預測時,應先對該面積數據進行歸一化計算,得到歸一化后數據為X=0.2。將其代入回歸模型計算對應的預測輸出為y=0.2831774,即得房屋價格預測值為257.33萬元。□

梯度下降法在靠近極小值時收斂速度通常會減慢,使得計算效率下降。人們為此提出了很多改進策略,共軛梯度下降法就是其中之一。共軛梯度下降法最初為求解非線性方程組而提出,后被推廣到求解無約束優化問題,并逐漸成為最具代表性的最優化方法之一。該算法思想與梯度下降方法的相同之處在于都有著沿目標函數負梯度方向搜索的步驟;不同點在于梯度下降方法的搜索方向一直是負梯度方向,共軛梯度下降法的搜索方向從第二次確定搜索方向時,不再采用負梯度方向,而是經修正后的方向。因此,如何修正下次迭代的搜索方向是共軛梯度下降法的關鍵技術。下面具體介紹共軛梯度下降法。首先,給出共軛的概念。

A為Rn×n上的對稱正定矩陣,Q1Q2為Rn上的兩個非零向量,若有978-7-111-63202-3-Chapter02-70.jpg,則稱Q1Q2關于矩陣A共軛,向量Q1Q2的方向為一組共軛方向。

共軛梯度下降法的基本思路如圖2-2所示。首先,任意選取初始點X1,計算目標函數在該點的梯度值978-7-111-63202-3-Chapter02-71.jpg,并將負梯度方向作為初次搜索方向,即978-7-111-63202-3-Chapter02-72.jpg;然后,按圖中箭頭方向搜索下一點,即按公式Xk+1=Xk+αkPk計算下一點X2,其中αk表示第k次迭代步長,為978-7-111-63202-3-Chapter02-73.jpg的優化值。

978-7-111-63202-3-Chapter02-74.jpg

圖2-2 共軛梯度下降法

搜索到X2后,計算該點對應的梯度值978-7-111-63202-3-Chapter02-75.jpg,并按下式調整搜索方向

978-7-111-63202-3-Chapter02-76.jpg

其中,stepk為調整搜索方向時的步長。將式(2-16)兩側同時乘以APk可得

978-7-111-63202-3-Chapter02-77.jpg

將步長stepk調整為stepk+1,使得Pk+1Pk關于A共軛,即有978-7-111-63202-3-Chapter02-78.jpg,可得

978-7-111-63202-3-Chapter02-79.jpg

重復以上步驟,即可得到逼近最優解的序列{X1X2,…,Xn,…}。

例如,對于優化問題978-7-111-63202-3-Chapter02-80.jpg,取X1=(2,2)T為迭代初始值,由此可得初次的搜索方向978-7-111-63202-3-Chapter02-81.jpg,并按下式計算X2

978-7-111-63202-3-Chapter02-82.jpg

首先,通過優化問題arg min[2(2-8α12+(2-4α12]求出α1=5/18,然后由此算出X2=(-2/9,8/9)T978-7-111-63202-3-Chapter02-83.jpg。再由式(2-18)算出α2=9/20,由此算出函數極值點X3=(0,0)T

【例題2.6】UCI_IRIS數據集是一個常用訓練數據集,共有121條數據,表2-7為其中的部分數據。試用UCI_IRIS數據集和共軛梯度下降法訓練一個多層神經網絡模型。

【解】由表2-7可知,UCI_IRIS數據集中每個示例包含4個特征,所有示例分屬3個類別。故感知機模型輸入層應包含4個特征輸入結點及1個偏置輸入結點,輸出層應包含3個輸出結點。由此可構造如圖2-3所示具有10個隱含結點的神經網絡模型。

表2-7 UCI_IRIS數據訓練集中部分數據

978-7-111-63202-3-Chapter02-84.jpg

978-7-111-63202-3-Chapter02-85.jpg

圖2-3 包含10個隱含結點的多層神經網絡

978-7-111-63202-3-Chapter02-86.jpg為第ι層第i個神經元與第ι+1層第k個神經元之間的連接權重,978-7-111-63202-3-Chapter02-87.jpg為第ι層第i個結點的偏置項,第ι層激活函數表示為φι,則對于樣本輸入X=(x1x2x3x4T,該模型的第j個隱含層結點的輸出hj

978-7-111-63202-3-Chapter02-88.jpg

將上式表示為矩陣形式,則有

978-7-111-63202-3-Chapter02-89.jpg

同理可得該模型的輸出fX)為

978-7-111-63202-3-Chapter02-90.jpg

其中,φ2為Sigmoid激活函數;φ3為softmax激活函數,該激活函數可將模型輸出映射為偽概率形式。

通過對目標函數的優化計算方式估計模型參數。可將目標函數定義為模型輸出在訓練集上的平均誤差,通過該誤差(目標函數)的最小化實現對模型的訓練構造。具體地說,使用如下的式(2-19)作為目標函數,該目標函數依據模型對樣本輸出類別的概率來對錯分樣本施加一定懲罰,并將對所有錯分樣本所施加懲罰的均值作為模型輸出在訓練集上的平均誤差。

978-7-111-63202-3-Chapter02-91.jpg

其中,fjXi)表示模型第j個輸出結點對樣本Xi的輸出;978-7-111-63202-3-Chapter02-92.jpg為樣本Xi所對應的標簽向量yi中第j個元素的取值。

代入數據并用共軛梯度算法優化上述目標函數,通過TersonFlow框架編程計算可得權重更新結果,表2-8為輸入層到隱藏層的部分連接權重的部分計算數據,表2-9為隱藏層到輸出層的部分連接權重的部分計算數據,取值保留小數點后兩位。

表2-8 輸入層到隱藏層的部分連接權重取值

978-7-111-63202-3-Chapter02-93.jpg

表2-9 隱藏層到輸出層的部分連接權重取值

978-7-111-63202-3-Chapter02-94.jpg

取滿足精度要求的第100000迭代得到的連接權重w*1w*2和偏置b*1b*2作為最終模型參數,由此得到所求的分類映射規則

978-7-111-63202-3-Chapter02-95.jpg

使用所求模型對如表2-10所示的測試數據進行預測,得到表中最后一列的預測計算結果。與該表中實際種類值進行比較,可知預測結果均為正確。□

表2-10 測試數據與計算結果比較

978-7-111-63202-3-Chapter02-96.jpg

共軛梯度下降法可以看成是梯度下降法的一種改進策略,僅需一階導數信息,并克服了梯度法迭代后期收斂速度較慢的不足,是一種比較有效的優化算法。

2.2.2 牛頓迭代法

牛頓迭代法(以下簡稱牛頓法)是一種快速迭代搜索算法,主要用于求函數零點,即求方程的根。該算法要求目標函數具有二階連續偏導數,這是因為下一個近似值需要通過在現有近似值附近進行一階泰勒展開來確定。由微積分理論可知,任意n階可導的函數都可在任意點Xk處展開為冪函數形式,故可將具有連續二階導數的函數fX)在點Xk處展開為

978-7-111-63202-3-Chapter02-97.jpg

如果忽略上述二階展開式的余項,則可將方程fX)=0近似表示為

978-7-111-63202-3-Chapter02-98.jpg

f′Xk)≠0,則可由上式得到方程fX)=0的一個近似根,即X=Xk-fXk/f′Xk),將其作為新的近似根,記為Xk+1,則可得到如下迭代式

978-7-111-63202-3-Chapter02-99.jpg

如果迭代初值X0選擇適當,則可通過上述迭代公式獲得以方程fX)=0的根為極限的收斂序列{Xk}。當k值足夠大時,就可獲得滿足精度要求的方程近似根Xk

我們知道,對于函數優化問題,目標函數的極值點為函數駐點,即為目標函數導函數的根,故可使用上述牛頓迭代法求解目標函數導函數的根,由此獲得目標函數的極值點。為此令函數fX)為函數FX)的導函數,則當fX)=0時,FX)在點X處取得極值。

假設目標函數FX)具有連續的三階導數且F″Xk)≠0,則同理可得到如下迭代式

978-7-111-63202-3-Chapter02-100.jpg

適當選擇初值X0就可使上述迭代收斂到方程F′x)=0的根,即目標函數Fx)的極值點,故可用這種推廣的牛頓法進行模型優化。然而,機器學習的代價函數或目標函數通常比較復雜,一般會包含多個模型參數,此時通過牛頓法進行模型參數更新就相當于求解多元目標函數的極小值點。故將上述一元函數的牛頓法進一步推廣到多元函數的向量情形。

FX)為三次可微的n元函數,則由多元函數泰勒展開式將其在Xk展開,得

978-7-111-63202-3-Chapter02-101.jpg

其中,X=(x1x2,…,xnT978-7-111-63202-3-Chapter02-102.jpg處的一階導數,即

978-7-111-63202-3-Chapter02-103.jpg

978-7-111-63202-3-Chapter02-104.jpg時的二階導數,是一個Hesse矩陣,具體形式為

978-7-111-63202-3-Chapter02-105.jpg

假定式(2-23)右邊為n元正定二次凸函數且存在唯一的最優解,對上式求一階微分978-7-111-63202-3-Chapter02-106.jpg,則可將978-7-111-63202-3-Chapter02-107.jpg近似地表示為

978-7-111-63202-3-Chapter02-108.jpg

由上式可得978-7-111-63202-3-Chapter02-109.jpg的一個近似解,記為Xk+1,則得到如下迭代式

978-7-111-63202-3-Chapter02-110.jpg

可將上式表示為迭代搜索通式Xk+1=Xk+stepkPk,其中搜索步長stepk恒為1,搜索方向為978-7-111-63202-3-Chapter02-111.jpg。由于方向Pk為從Xk到二次函數極小點的方向,故亦稱為從Xk發出的牛頓方向。由此可知,牛頓迭代法其實就是從迭代初始點開始,沿著牛頓方向且步長恒為1的迭代搜索算法。根據以上討論,可得牛頓迭代法的具體計算步驟歸納如下:

(1)設定初始點X0和終止準則,并置Xk=0;

(2)求解點Xk對應的目標函數值、梯度和Hesse矩陣;

(3)根據978-7-111-63202-3-Chapter02-112.jpg確定搜索方向Pk

(4)依迭代公式(2-26)確定下一個點Xk+1

(5)判斷是否滿足終止條件,若滿足,則輸出解Xk+1;否則k=k+1,轉到步驟2。

【例題2.7】試根據表2-11中的數據建立一個預測廣告投入和凈利潤之間關系的機器學習模型,并使用該模型預測廣告投入為2.1萬元時所對應的凈利潤,要求模型優化過程采用牛頓迭代法。

表2-11 廣告投入和銷售額數據表(單位:萬元)

978-7-111-63202-3-Chapter02-113.jpg

【解】畫出表2-11中數據散點圖如圖2-4所示。由圖2-4可知,可用二次函數擬合表中數據,故設機器學習模型為y=w0+w1X+w2X2。使用該模型構造目標函數并用誤差平方和作為優化目標。為便于計算,將目標函數定義為誤差平方和的1/2,即

978-7-111-63202-3-Chapter02-114.jpg

其中,yi為第i個數據的真實值;978-7-111-63202-3-Chapter02-115.jpg為對應的預測值。

代入數據求得目標函數具體表達式為

978-7-111-63202-3-Chapter02-116.jpg

設置初始點W0=(w0w1w2T=(1,1,1)T,求出978-7-111-63202-3-Chapter02-117.jpg978-7-111-63202-3-Chapter02-118.jpg分別為

978-7-111-63202-3-Chapter02-119.jpg

因為目標函數為二次函數,故Hesse矩陣為常數。根據牛頓迭代法公式

978-7-111-63202-3-Chapter02-120.jpg

求得W1=(-0.5559,5.313,-0.1448)T,得到所求機器學習模型為

y=-0.5559X2+5.313X-0.1448

該模型的函數圖像如圖2-5所示。將X=2.1代入模型可得y=8.560981,即廣告投入為2.1萬元時預測可獲得的凈利潤為8.560981萬元。□

978-7-111-63202-3-Chapter02-121.jpg

圖2-4 廣告投入和凈利潤數據散點圖

978-7-111-63202-3-Chapter02-122.jpg

圖2-5 最終模型的函數圖像

牛頓法的收斂速度很快,這是其他算法難以媲美的。究其原因是由于該算法每次迭代都會構造一個恰當的二次函數逼近目標函數,并使用從迭代點指向該二次函數極小點的方向來構造搜索方向。牛頓法的不足之處主要在于搜索方向構造困難,不僅需要計算梯度,還要計算Hesse矩陣及逆矩陣。為此介紹一種名為擬牛頓法的改進牛頓法。

擬牛頓法不僅收斂速度快,而且不用計算Hesse矩陣。首先,給出擬牛頓法的基本原理和實現步驟,然后介紹擬牛頓法中一種有效的具體實現算法,即DFP算法。

978-7-111-63202-3-Chapter02-123.jpg978-7-111-63202-3-Chapter02-124.jpg,則可將牛頓法迭代式轉化為如下形式

978-7-111-63202-3-Chapter02-125.jpg

擬牛頓法的基本原理就是尋求一個近似矩陣來取代Hesse矩陣的逆矩陣978-7-111-63202-3-Chapter02-126.jpg。假設這個近似矩陣為Hk=HXk),則迭代公式可轉化為如下形式

978-7-111-63202-3-Chapter02-127.jpg

顯然,當近似矩陣Hk為單位陣時,則上式就是梯度法的迭代公式。為使得Hk能夠更好地近似978-7-111-63202-3-Chapter02-128.jpg,需要其滿足如下條件:

(1)Hk應為對稱正定矩陣,以確保算法朝著目標函數下降的方向搜索;

(2)Hk+1Hk之間應有一定關系,例如Hk+1=Hk+Ψk,其中Ψk為修正矩陣。

(3)Hk應滿足擬牛頓條件。

現在導出擬牛頓條件。假設目標函數FX)具有連續三階導數,將FX)在X=Xk+1處進行二階泰勒展開并略去余項,可得

978-7-111-63202-3-Chapter02-129.jpg

則當Gk+1為正定矩陣時有978-7-111-63202-3-Chapter02-130.jpg。既然要用矩陣Hk+1來近似取代978-7-111-63202-3-Chapter02-131.jpg,那么Hk+1也應該滿足

978-7-111-63202-3-Chapter02-132.jpg

上式即為擬牛頓條件。

令ΔXk=Xk+1-Xk,Δgk=gk+1-gk,則亦可將擬牛頓條件寫成

978-7-111-63202-3-Chapter02-133.jpg

擬牛頓法在一定程度上保留了牛頓法計算速度較快的優勢,其具體實現還取決于Ψk的選取,不同的Ψk構成不同的具體算法。下面介紹一種名為DFP的常用擬牛頓法。DFP算法對擬牛頓法中修正公式的修正項進行如下優化,即設

978-7-111-63202-3-Chapter02-134.jpg

其中,δkτk都是待定常數;QkMkn維向量。

由于上式應滿足式(2-23),故有ΨkΔgkXk-HkΔgk,即有

978-7-111-63202-3-Chapter02-135.jpg

978-7-111-63202-3-Chapter02-136.jpg,則有

978-7-111-63202-3-Chapter02-137.jpg

代回式(2-30),得到

978-7-111-63202-3-Chapter02-138.jpg

此時,可將修正公式轉化為

978-7-111-63202-3-Chapter02-139.jpg

下面結合實例介紹DFP算法的具體實現過程。例如,對于優化問題978-7-111-63202-3-Chapter02-140.jpg取初始點X0=(1,1)T,則有g0=(2,8)T。根據公式進行計算,可得

978-7-111-63202-3-Chapter02-141.jpg

由式(2-34),可得

978-7-111-63202-3-Chapter02-142.jpg

從而算得搜索方向P1=-H1g1=(-1.49416,0.09340)T。通過對下列目標函數的優化計算arg978-7-111-63202-3-Chapter02-143.jpgFX1+step1P1)獲得搜索步長,得到step1=0.49423,由此算出X2=(0,0)T。由于在點X2處梯度為0,故X2即為最優解。

【例題2.8】求解下面的無約束優化問題

978-7-111-63202-3-Chapter02-144.jpg

【解】取初始點X0=(0,0,0)TH0=I,設置精度e=1×10-12,當滿足精度或在某點梯度為0時迭代終止。當X0=(0,0,0)T時,求得g0=(-4,-12,0)T。確定搜索方向,得到:

P0=-H0g0=(4,12,0)T

通過優化計算978-7-111-63202-3-Chapter02-145.jpg獲得搜索步長,可得到步長step0和X1

step0=0.131579; X1=(0.526316,1.57895,0)T

由此算得X1處的梯度為

g1=(-1.89474,0.631579,-3.15789)T

從而算得Δg0H1分別為

978-7-111-63202-3-Chapter02-146.jpg

確定搜索方向

P1=-H1g1=(2.06369,0.382166,2.90446)T

同理計算步長以及新的點:step1=0.419146,X2=(1.3913,1.73913,1.21739)T。計算在X2處的梯度g2、梯度差Δg1H2分別為

g2=(1.56522,-0.521739,-1.04348)T, Δg1=(3.45995,-1.15332,2.11442)T

978-7-111-63202-3-Chapter02-147.jpg

確定搜索方向

P2=-H2g2=(-0.734694,0.489796,1.46939)T

計算步長以及新的點step3=0.532609,X3=(1.0,2.0,2.0)T。計算在X3處的梯度g3=(0,0,0)T,停止迭代。取該無約束優化問題的最優解為X*=X3=(1.0,2.0,2.0)T。□

主站蜘蛛池模板: 榆树市| 苗栗市| 三门县| 登封市| 孝昌县| 宁阳县| 灵石县| 若尔盖县| 西青区| 沁水县| 陵水| 门头沟区| 手游| 浠水县| 木兰县| 青田县| 平定县| 山东省| 大庆市| 惠水县| 民乐县| 孝昌县| 佳木斯市| 鸡西市| 子长县| 西乡县| 贺兰县| 自贡市| 红原县| 株洲市| 遂平县| 拜泉县| 贞丰县| 靖江市| 灵宝市| 乌鲁木齐市| 博湖县| 白朗县| 和政县| 开鲁县| 海淀区|