??????? 優(yōu)化問題一般是給定一個函數f(x),求這個函數在給定作用域上的最小值(若是求最大值可通過加負號轉化為最小值問題)。
?????? 在高等數學上,常用的函數最優(yōu)化方法有三種:1、利用函數的單調性,求導找到目標函數的最值;2、拉格朗日(Lagrange)乘子法;3、KKT條件法。上述三種方法均能求解函數的優(yōu)化問題,不同之處在于應用的情況不同。第一種利用函數單調性的方法一般運用在目標函數無約束條件的情況下;第二種拉格朗日乘子法,主要運用在目標函數有等式約束的情況下;第三種方KKT條件法,主要運用在目標函數有不等式約束的條件的情況下。
??????? 下面分別對上述三種情況進行介紹:
??????? 1、目標函數無約束條件
這是最簡單的一種情況,相信學過高等數學的同學都能很容易的求解這類問題。對于可行域無約束的連續(xù)函數,在定義域R上求令目標函數的導數(或梯度)等于零的點。
??????? 如果上式求解比較困難,可以運用梯度下降和牛頓方法等迭代方法對上式進行迭代逼近極小值。
??????? 2、目標函數具有等式約束條件
??????? 這種情況一般可寫作:
??????? 上式中的s.t.意思是“subject to”意思是“受限于”、“受某某約束”。求f(x)的極小值,但x的取值必須滿足m個h(x)等式。自變量x被限定在一個可行域內,在這個可行域內不一定存在著一個x令f(x)的導數或梯度等于0。
?????? 對于這種情況,一般采用拉格朗日(Lagrange)乘子法。首先需要定義一個拉格朗日函數:
?????? 具體的求解方法是,對上面的拉格朗日函數求各個變量的偏導:
?????? 根據上式,求得x和α的值,將其此x的值帶入f(x),便求得在m個hi(x)=0(簡書不好寫公式,見諒)等式約束的條件下,f(x)的最小值。運用幾何解釋能夠更加便于理解。
??????? 如上圖a所示,目標函數f(x,y)可以看做是一個在(x,y)平面的等高線,圖中的紅線是一個約束等式h(x,y)。其在(x,y)平面上的投影如圖b所示,d1>d2,越往中間函數f(x,y)的值越小。在圖b中,目標函數f(x,y)與h(x,y)有三種位置情況:相交、相切、相離(沒有交集)。當二者相離時沒有交點,那么沒有解,只有相交或相切f(x,y)才有最優(yōu)值。如果g(x,y)與f(x,y)相交,交點不一定是其最優(yōu)值點,因為一定還會有交點內側的點帶入f(x)使其值比交點處的小。
??????? 也可以換種方式理解,x沿著約束的曲線運動,當x的運動方向與f(x,y)的負梯度方向的夾角是銳角時,目標函數f(x,y)的值在減小(因為根據梯度下降法,f(x,y)的負梯度方向是f(x,y)的值下降最快的方向),當x的運動方向與f(x,y)的負梯度方向的夾角是鈍角時,目標函數f(x,y)的值在增大,所以當x的運動方向與f(x,y)的負梯度方向的夾角是直角時,f(x,y)取得最小值,即f(x,y)與g(x,y)相切的時候。因為g(x,y)的法線與x的運動方向相垂直,所以此時f(x,y)的梯度與g(x,y)的梯度應該是平行的。這便是拉格朗日乘子法的條件。
??????? 這個條件與等式約束條件聯(lián)立即可得解。
??????? 3、含有不等式約束的優(yōu)化
??????? 首先看一個相對簡單的只含有一個不等式的約束優(yōu)化,其一般形式如下:
建立一個對應的拉格朗日函數:
??????? 求在滿足g(x)<=0的條件下,f(x)的最小優(yōu)化(其中β>=0,因為g(x)<=0,若β<0,則βg(x)有最小值沒有最大值,不再滿足對偶性,無法可靠的求解,β>=0也是運用拉格朗日乘子法的內在要求),這包括三種情況。
β
?? ? ?? 如上圖a、b、c所示的三種情況,圖中紅色區(qū)域是g(x)<=0,即x的可行域。
??????? 其中a所示為f(x)原來的最優(yōu)解的點落在可行域的內部,約束后的最優(yōu)解與原來f(x)函數的最優(yōu)解相同,此時,有沒有這個g(x)<=0的約束,對f(x)的最優(yōu)解沒有影響,也就是說g(x)<=0這個約束此時不起作用。
??????? 其中b所示為f(x)原來的最優(yōu)解落在可行域的外部,此時f(x)在可行域內的最優(yōu)解不再是原來的最優(yōu)解,其最優(yōu)解應該在g(x)與f(x)相切的位置,即在g(x)的邊界上。
????? c所示的為f(x)原來的最優(yōu)解落在可行域的邊界上,其最優(yōu)解與f(x)原來的最優(yōu)解相同。這種情況與上面的b所述的情況類似,為了便于理解分開來說。
??????? 從上面的描述可以看出,在g(x)<=0約束條件下,f(x)的最優(yōu)解要么落在可行域的邊界g(x)=0上;要么落在g(x)<0的內部,使g(x)不在起作用,此時,可使λ=0,消除g(x)。所以可得下面這個式子:
??????? 由上可知,含有不等式的約束問題,只要滿足一定的條件也可以運用拉格朗日乘子法來進行求解,而這個條件便是KKT條件。
??????? 含有不等式約束優(yōu)化問題的一般形式如下:
定義一個拉格朗日函數如下:
??????? 由以上的分析可知,運用拉格朗日乘子求解含有不等式約束的優(yōu)化問題,需要滿足的KKT條件如下:
??????? 其中,公式1表示,拉格朗日函數取得最小值時,其對x的梯度必須等于0,無論是最優(yōu)解是落在g(x)<=0內部還是邊界上,其對x的梯度都是等于0的(落在內部,最優(yōu)解就是無約束的極小值,則對x的偏導等于0;最優(yōu)解落在邊界上,這個最優(yōu)解要么是無約束的最優(yōu)解,要么是f(x)與g(x)相切的點,則其對x的梯度也等于0)。
??????? 公式2在上面的敘述中已經分析了,約束后的最優(yōu)解要么落在g(x)<=0內部,此時g(x)不起作用,可使β=0消除g(x);要么落在g(x)<=0的邊界上,此時g(x)=0。總之βg(x)=0。
??????? 公式3和公式4是約束的條件。
??????? 公式5是運用拉格朗日乘子法的內在要求,這個在前文也已經敘述。