-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
最優(yōu)化kkt條件(kkt條件例題)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于最優(yōu)化kkt條件的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、SVM(1) 之 拉格朗日乘子法和KKT條件
拉格朗日乘法拉格朗日乘數(shù)法是用來求條件極值的,極值問題有兩類,其一,求函數(shù)在給定區(qū)間上的極值,對自變量
沒有其它要求,這種極值稱為無條件極值。其二,對自變量有一些附加的約束條件限制下的極值,稱為
條件極值。
求這個(gè)橢球的內(nèi)接長方體的最大體積。
下,求
通過拉格朗日乘數(shù)法將問題轉(zhuǎn)化為
然后分別對x,y,z,蘭姆達(dá) 求導(dǎo),得到最值,帶回原式即可
更多參考
https://zh.wikipedia.org/wiki/%E6%8B%89%E6%A0%BC%E6%9C%97%E6%97%A5%E4%B9%98%E6%95%B0
https://blog.csdn.net/acdreamers/article/details/41413445
《統(tǒng)計(jì)學(xué)習(xí)方法》 附錄C
假設(shè) 是定義在R^n上的連續(xù)可微函數(shù),考慮約束最優(yōu)化問題
很多時(shí)候,現(xiàn)實(shí)問題可能跟上述結(jié)構(gòu)不一樣,那么把問題轉(zhuǎn)化一下即可,比如 max->min
其中, 是拉格朗日乘子,并且要求 。
首先我們把 看成是 的函數(shù)(把x看成常量),然后求該函數(shù)的最大值(含x的表達(dá)式),接著再把x看成變量,因此可以定義函數(shù) 如下:
下標(biāo) 代表原始問題
可以證明,如果 滿足原始問題中約束,那么
如果 不滿足原始問題中的約束 ,那么 ,即:
所以如果考慮極小化問題:
稱為廣義勒格朗日函數(shù)的極小極大問題。此時(shí)原始最優(yōu)化問題,轉(zhuǎn)化為廣義拉格朗日函數(shù)的極大極小問題。這樣一來,就把原始最優(yōu)化問題表示為廣義拉格朗日函數(shù)的極小極大問題。我們定義原始問題最優(yōu)解:
我們再定義:
并極大化 ,即:
為廣義拉格朗日函數(shù)的極大極小問題(上一節(jié)的是極小極大問題)。這樣可以將廣義拉格朗日函數(shù)的極大極小問題進(jìn)一步表示為約束最優(yōu)化問題:
對比原始問題,對偶問題是先固定 ,求最優(yōu)化 的解,在確定參數(shù) ;
原始問題是先固定x,求最優(yōu)化 的解,再確定 。
這塊我就不證明了,書上都有。
總之,當(dāng)原始問題和對偶問題的最優(yōu)值相等: 時(shí),可以用求解對偶問題來求解原始問題(當(dāng)然是對偶問題求解比直接求解原始問題簡單的情況下),但是到底滿足什么樣的條件才能使 呢,這就是下面要闡述的 KKT 條件。
作為對比,把拉格朗日函數(shù)再拿出來對比一下
KKT條件 可以分為三部分來考慮:
二、支持向量機(jī)(SVM)基本原理
看了很多關(guān)于SVM的博客,但是常常只能保存書簽之后看,有時(shí)候有的博客就突然沒了,這里就作為搬運(yùn)工總結(jié)一下之后自己看吧。主要內(nèi)容來自于:
支持向量機(jī)通俗導(dǎo)論(理解SVM的三層境界)
線性回歸
給定數(shù)據(jù)集 , 其中, ,線性回歸試圖學(xué)習(xí)到一個(gè)線性模型,盡可能地輸出正確標(biāo)記.
如果我們要用線性回歸算法來解決一個(gè)分類問題,(對于分類,y 取值為 0 或者 1),但如果你使用的是線性回歸,那么假設(shè)函數(shù)的輸出值可能遠(yuǎn)大于 1,或者遠(yuǎn)小于 0,就算所有訓(xùn)練樣本的標(biāo)簽 y 都是 0 或 1但是如果算法得到的值遠(yuǎn)大于 1 或者遠(yuǎn)小于 0 的話,就會感覺很奇怪。所以我們在接下來的要研究的算法就叫做邏輯回歸算法,這個(gè)算法的性質(zhì)是:它的輸出值永遠(yuǎn)在 0 到 1 之間。
所以邏輯回歸就是一個(gè)分類算法,這個(gè)算法的輸出值永遠(yuǎn)在 0 到 1 之間.
我們先看二分類的LR,具體做法是:利用sigmoid 函數(shù),將每一個(gè)點(diǎn)的回歸值映射到0,1之間.sigmoid函數(shù)特性如下:
如圖所示,令 , 當(dāng) z > 0 , z 越大, sigmoid 返回值越接近1(但永遠(yuǎn)不會超過1). 反之,當(dāng)z < 0時(shí),z 越小, sigmoid 返回值越接近0(但永遠(yuǎn)不會小于0).
支持向量機(jī) ,因其英文名為support vector machine,故一般簡稱SVM,通俗來講,它是一種二類分類模型,其基本模型定義為 特征空間 上的間隔最大的線性分類器,其學(xué)習(xí)策略便是間隔最大化,最終可轉(zhuǎn)化為一個(gè)凸二次規(guī)劃問題的求解。
線性分類器
給定一些數(shù)據(jù)點(diǎn),它們分別屬于兩個(gè)不同的類,現(xiàn)在要找到一個(gè)線性分類器把這些數(shù)據(jù)分成兩類。如果用x表示數(shù)據(jù)點(diǎn),用y表示類別(y可以取1或者-1,分別代表兩個(gè)不同的類),一個(gè)線性分類器的學(xué)習(xí)目標(biāo)便是要在n維的數(shù)據(jù)空間中找到一個(gè)超平面(hyper plane),這個(gè)超平面的方程可以表示為( wT中的T代表轉(zhuǎn)置):
logistic回歸目的是從特征學(xué)習(xí)出一個(gè)0/1分類模型,而這個(gè)模型是將特性的線性組合作為自變量,由于自變量的取值范圍是負(fù)無窮到正無窮。因此,使用logistic函數(shù)(或稱作sigmoid函數(shù))將自變量映射到(0,1)上,映射后的值被認(rèn)為是屬于y=1的概率。
假設(shè)函數(shù):
其中x是n維特征向量,函數(shù)g就是logistic函數(shù)。
圖像為:
在超平面w x+b=0確定的情況下,|w x+b|能夠表示點(diǎn)x到距離超平面的遠(yuǎn)近,而通過觀察w x+b的符號與類標(biāo)記y的符號是否一致可判斷分類是否正確,所以,可以用(y (w*x+b))的正負(fù)性來判定或表示分類的正確性。于此,我們便引出了函數(shù)間隔(functional margin)的概念。
定義函數(shù)間隔 (用表示)為
而超平面(w,b)關(guān)于T中所有樣本點(diǎn)(xi,yi)的函數(shù)間隔最小值(其中,x是特征,y是結(jié)果標(biāo)簽,i表示第i個(gè)樣本),便為超平面(w, b)關(guān)于訓(xùn)練數(shù)據(jù)集T的函數(shù)間隔:
但這樣定義的函數(shù)間隔有問題,即如果成比例的改變w和b(如將它們改成2w和2b),則函數(shù)間隔的值f(x)卻變成了原來的2倍(雖然此時(shí)超平面沒有改變),所以只有函數(shù)間隔還遠(yuǎn)遠(yuǎn)不夠。
事實(shí)上,我們可以對法向量w加些約束條件,從而引出真正定義點(diǎn)到超平面的距離--幾何間隔(geometrical margin)的概念。
假定對于一個(gè)點(diǎn) x ,令其垂直投影到超平面上的對應(yīng)點(diǎn)為 x0 ,w 是垂直于超平面的一個(gè)向量, 為樣本x到超平面的距離,如下圖所示:
根據(jù)平面幾何知識,有
其中||w||為w的二階范數(shù)(范數(shù)是一個(gè)類似于模的表示長度的概念), 是單位向量(一個(gè)向量除以它的模稱之為單位向量)。
又由于x0 是超平面上的點(diǎn),滿足 f(x0)=0,代入超平面的方程 ,可得 ,即
隨即讓此式 的兩邊同時(shí)乘以 ,再根據(jù) 和 ,即可算出 :
為了得到 的絕對值,令 乘上對應(yīng)的類別 y,即可得出幾何間隔(用 表示)的定義:
從上述函數(shù)間隔和幾何間隔的定義可以看出:幾何間隔就是函數(shù)間隔除以||w||,而且函數(shù)間隔y (wx+b) = y f(x)實(shí)際上就是|f(x)|,只是人為定義的一個(gè)間隔度量,而幾何間隔|f(x)|/||w||才是直觀上的點(diǎn)到超平面的距離。
對一個(gè)數(shù)據(jù)點(diǎn)進(jìn)行分類,當(dāng)超平面離數(shù)據(jù)點(diǎn)的“間隔”越大,分類的確信度(confidence)也越大。所以,為了使得分類的確信度盡量高,需要讓所選擇的超平面能夠最大化這個(gè)“間隔”值。這個(gè)間隔就是下圖中的Gap的一半。
通過由前面的分析可知:函數(shù)間隔不適合用來最大化間隔值,因?yàn)樵诔矫婀潭ㄒ院?,可以等比例地縮放w的長度和b的值,這樣可以使得 的值任意大,亦即函數(shù)間隔 可以在超平面保持不變的情況下被取得任意大。但幾何間隔因?yàn)槌狭? ,使得在縮放w和b的時(shí)候幾何間隔的值 是不會改變的,它只隨著超平面的變動而變動,因此,這是更加合適的一個(gè)間隔。換言之,這里要找的最大間隔分類超平面中的“間隔”指的是幾何間隔。
于是最大間隔分類器(maximum margin classifier)的目標(biāo)函數(shù)可以定義為
同時(shí)需滿足一些條件,根據(jù)間隔的定義,有
回顧下幾何間隔的定義 ,可知:如果令函數(shù)間隔 等于1(之所以令等于1,是為了方便推導(dǎo)和優(yōu)化,且這樣做對目標(biāo)函數(shù)的優(yōu)化沒有影響),則有 = 1 / ||w||且 ,從而上述目標(biāo)函數(shù)轉(zhuǎn)化成了:
相當(dāng)于在相應(yīng)的約束條件 下,最大化這個(gè)1/||w||值,而1/||w||便是幾何間隔。
據(jù)了解,
由于這個(gè)問題的特殊結(jié)構(gòu),還可以通過拉格朗日對偶性(Lagrange Duality)變換到對偶變量 (dual variable) 的優(yōu)化問題,即通過求解與原問題等價(jià)的對偶問題(dual problem)得到原始問題的最優(yōu)解,這就是線性可分條件下支持向量機(jī)的對偶算法,這樣做的優(yōu)點(diǎn)在于:一者對偶問題往往更容易求解;二者可以自然的引入核函數(shù),進(jìn)而推廣到非線性分類問題。
那什么是拉格朗日對偶性呢?簡單來講,通過給每一個(gè)約束條件加上一個(gè)拉格朗日乘子 ,(Lagrange multiplier),定義拉格朗日函數(shù)(通過拉格朗日函數(shù)將約束條件融合到目標(biāo)函數(shù)里去,從而只用一個(gè)函數(shù)表達(dá)式便能清楚的表達(dá)出我們的問題)
然后令:
容易驗(yàn)證,當(dāng)某個(gè)約束條件不滿足時(shí),例如 ,那么顯然有 (只要令 即可)。而當(dāng)所有約束條件都滿足時(shí),則最優(yōu)值為 ,亦即最初要最小化的量。
因此,在要求約束條件得到滿足的情況下最小化 ,實(shí)際上等價(jià)于直接最小化 (當(dāng)然,這里也有約束條件,就是 ≥0,i=1,…,n) ,因?yàn)槿绻s束條件沒有得到滿足, 會等于無窮大,自然不會是我們所要求的最小值。
具體寫出來,目標(biāo)函數(shù)變成了:
這里用 表示這個(gè)問題的最優(yōu)值,且和最初的問題是等價(jià)的。如果直接求解,那么一上來便得面對w和b兩個(gè)參數(shù),而 又是不等式約束,這個(gè)求解過程不好做。不妨把最小和最大的位置交換一下,變成:
交換以后的新問題是原始問題的對偶問題,這個(gè)新問題的最優(yōu)值用 來表示。而且有 ≤ ,在滿足某些條件的情況下,這兩者相等,這個(gè)時(shí)候就可以通過求解對偶問題來間接地求解原始問題。
換言之,之所以從minmax 的原始問題,轉(zhuǎn)化為maxmin 的對偶問題,一者因?yàn)? 是 的近似解,二者,轉(zhuǎn)化為對偶問題后,更容易求解。
下面可以先求L 對w、b的極小,再求L對 的極大。
KKT條件
≤ 在滿足某些條件的情況下,兩者等價(jià),這所謂的“滿足某些條件”就是要滿足KKT條件。
要讓兩者等價(jià)需滿足strong duality (強(qiáng)對偶),而后有學(xué)者在強(qiáng)對偶下提出了KKT條件,且KKT條件的成立要滿足constraint qualifications,而constraint qualifications之一就是Slater條件。所謂Slater 條件,即指:凸優(yōu)化問題,如果存在一個(gè)點(diǎn)x,使得所有等式約束都成立,并且所有不等式約束都嚴(yán)格成立(即取嚴(yán)格不等號,而非等號),則滿足Slater 條件。對于此處,Slater 條件成立,所以 ≤ 可以取等號。
一般地,一個(gè)最優(yōu)化數(shù)學(xué)模型能夠表示成下列標(biāo)準(zhǔn)形式:
其中,f(x)是需要最小化的函數(shù),h(x)是等式約束,g(x)是不等式約束,p和q分別為等式約束和不等式約束的數(shù)量。
KKT條件的意義:它是一個(gè)非線性規(guī)劃(Nonlinear Programming)問題能有最優(yōu)化解法的必要和充分條件。
而KKT條件就是指上面最優(yōu)化數(shù)學(xué)模型的標(biāo)準(zhǔn)形式中的最小點(diǎn) x* 必須滿足下面的條件:
我們這里的問題是滿足 KKT 條件的(首先已經(jīng)滿足Slater條件,再者f和gi也都是可微的,即L對w和b都可導(dǎo)),因此現(xiàn)在我們便轉(zhuǎn)化為求解第二個(gè)問題。
也就是說,原始問題通過滿足KKT條件,已經(jīng)轉(zhuǎn)化成了對偶問題。而求解這個(gè)對偶學(xué)習(xí)問題,分為3個(gè)步驟:首先要讓L(w,b,a) 關(guān)于 w 和 b 最小化,然后求對 的極大,最后利用SMO算法求解對偶問題中的拉格朗日乘子。
對偶問題求解的3個(gè)步驟
將以上結(jié)果代入之前的L:
得到:
具體推導(dǎo)過程是比較復(fù)雜的,如下所示:
最后,得到:
“倒數(shù)第4步”推導(dǎo)到“倒數(shù)第3步”使用了線性代數(shù)的轉(zhuǎn)置運(yùn)算,由于ai和yi都是實(shí)數(shù),因此轉(zhuǎn)置后與自身一樣?!暗箶?shù)第3步”推導(dǎo)到“倒數(shù)第2步”使用了(a+b+c+…)(a+b+c+…)=aa+ab+ac+ba+bb+bc+…的乘法運(yùn)算法則。最后一步是上一步的順序調(diào)整。
從上面的最后一個(gè)式子,我們可以看出,此時(shí)的拉格朗日函數(shù)只包含了一個(gè)變量,那就是 (求出了 便能求出w,和b,由此可見,則核心問題:分類函數(shù) 也就可以輕而易舉的求出來了)。
上述式子要解決的是在參數(shù)上 求最大值W的問題,至于 和 都是已知數(shù)。要了解這個(gè)SMO算法是如何推導(dǎo)的,請?zhí)较挛牡?.5節(jié)、SMO算法。
總結(jié)
讓我們再來看看上述推導(dǎo)過程中得到的一些有趣的形式。首先就是關(guān)于我們的 hyper plane ,對于一個(gè)數(shù)據(jù)點(diǎn) x 進(jìn)行分類,實(shí)際上是通過把 x 帶入到 算出結(jié)果然后根據(jù)其正負(fù)號來進(jìn)行類別劃分的。而前面的推導(dǎo)中我們得到:
因此分類函數(shù)為:
這里的形式的有趣之處在于,對于新點(diǎn) x的預(yù)測,只需要計(jì)算它與訓(xùn)練數(shù)據(jù)點(diǎn)的內(nèi)積即可(表示向量內(nèi)積),這一點(diǎn)至關(guān)重要,是之后使用 Kernel 進(jìn)行非線性推廣的基本前提。此外,所謂 Supporting Vector 也在這里顯示出來——事實(shí)上,所有非Supporting Vector 所對應(yīng)的系數(shù) 都是等于零的,因此對于新點(diǎn)的內(nèi)積計(jì)算實(shí)際上只要針對少量的“支持向量”而不是所有的訓(xùn)練數(shù)據(jù)即可。
為什么非支持向量對應(yīng)的 等于零呢?直觀上來理解的話,就是這些“后方”的點(diǎn)——正如我們之前分析過的一樣,對超平面是沒有影響的,由于分類完全有超平面決定,所以這些無關(guān)的點(diǎn)并不會參與分類問題的計(jì)算,因而也就不會產(chǎn)生任何影響了。
回憶一下我們通過 Lagrange multiplier得到的目標(biāo)函數(shù):
注意到如果 xi 是支持向量的話,上式中紅顏色的部分是等于 0 的(因?yàn)橹С窒蛄康?functional margin 等于 1 ),而對于非支持向量來說,functional margin 會大于 1 ,因此紅顏色部分是大于零的,而 又是非負(fù)的,為了滿足最大化, 必須等于 0 。這也就是這些非Supporting Vector 的點(diǎn)的局限性。
至此,我們便得到了一個(gè)maximum margin hyper plane classifier,這就是所謂的支持向量機(jī)(Support Vector Machine)。當(dāng)然,到目前為止,我們的 SVM 還比較弱,只能處理線性的情況,不過,在得到了對偶dual 形式之后,通過 Kernel 推廣到非線性的情況就變成了一件非常容易的事情了(通過求解對偶問題得到最優(yōu)解,這就是線性可分條件下支持向量機(jī)的對偶算法,這樣做的優(yōu)點(diǎn)在于:一者對偶問題往往更容易求解;二者可以自然的引入核函數(shù),進(jìn)而推廣到非線性分類問題”)。
事實(shí)上,大部分時(shí)候數(shù)據(jù)并不是線性可分的,這個(gè)時(shí)候滿足這樣條件的超平面就根本不存在。在上文中,我們已經(jīng)了解到了SVM處理線性可分的情況,那對于非線性的數(shù)據(jù)SVM咋處理呢?對于非線性的情況,SVM 的處理方法是選擇一個(gè)核函數(shù) κ(⋅,⋅) ,通過將數(shù)據(jù)映射到高維空間,來解決在原始空間中線性不可分的問題。
具體來說,在線性不可分的情況下,支持向量機(jī)首先在低維空間中完成計(jì)算,然后通過核函數(shù)將輸入空間映射到高維特征空間,最終在高維特征空間中構(gòu)造出最優(yōu)分離超平面,從而把平面上本身不好分的非線性數(shù)據(jù)分開。如圖所示,一堆數(shù)據(jù)在二維空間無法劃分,從而映射到三維空間里劃分:
而在我們遇到核函數(shù)之前,如果用原始的方法,那么在用線性學(xué)習(xí)器學(xué)習(xí)一個(gè)非線性關(guān)系,需要選擇一個(gè)非線性特征集,并且將數(shù)據(jù)寫成新的表達(dá)形式,這等價(jià)于應(yīng)用一個(gè)固定的非線性映射,將數(shù)據(jù)映射到特征空間,在特征空間中使用線性學(xué)習(xí)器,因此,考慮的假設(shè)集是這種類型的函數(shù):
這里ϕ:X->F是從輸入空間到某個(gè)特征空間的映射,這意味著建立非線性學(xué)習(xí)器分為兩步:
首先使用一個(gè)非線性映射將數(shù)據(jù)變換到一個(gè)特征空間F,
然后在特征空間使用線性學(xué)習(xí)器分類。
而由于對偶形式就是線性學(xué)習(xí)器的一個(gè)重要性質(zhì),這意味著假設(shè)可以表達(dá)為訓(xùn)練點(diǎn)的線性組合,因此決策規(guī)則可以用測試點(diǎn)和訓(xùn)練點(diǎn)的內(nèi)積來表示:
如果有一種方式可以在特征空間中直接計(jì)算內(nèi)積〈φ(xi · φ(x)〉,就像在原始輸入點(diǎn)的函數(shù)中一樣,就有可能將兩個(gè)步驟融合到一起建立一個(gè)非線性的學(xué)習(xí)器,這樣直接計(jì)算法的方法稱為核函數(shù)方法:
核是一個(gè)函數(shù)K,對所有x,z,滿足 ,這里φ是從X到內(nèi)積特征空間F的映射。
來看個(gè)核函數(shù)的例子。如下圖所示的兩類數(shù)據(jù),分別分布為兩個(gè)圓圈的形狀,這樣的數(shù)據(jù)本身就是線性不可分的,此時(shí)咱們該如何把這兩類數(shù)據(jù)分開呢(下文將會有一個(gè)相應(yīng)的三維空間圖)?
事實(shí)上,上圖所述的這個(gè)數(shù)據(jù)集,是用兩個(gè)半徑不同的圓圈加上了少量的噪音生成得到的,所以,一個(gè)理想的分界應(yīng)該是一個(gè)“圓圈”而不是一條線(超平面)。如果用 和 來表示這個(gè)二維平面的兩個(gè)坐標(biāo)的話,我們知道一條二次曲線(圓圈是二次曲線的一種特殊情況)的方程可以寫作這樣的形式:
注意上面的形式,如果我們構(gòu)造另外一個(gè)五維的空間,其中五個(gè)坐標(biāo)的值分別為 ,那么顯然,上面的方程在新的坐標(biāo)系下可以寫作:
關(guān)于新的坐標(biāo) ,這正是一個(gè) hyper plane 的方程!也就是說,如果我們做一個(gè)映射 ,將 按照上面的規(guī)則映射為 ,那么在新的空間中原來的數(shù)據(jù)將變成線性可分的,從而使用之前我們推導(dǎo)的線性分類算法就可以進(jìn)行處理了。這正是 Kernel 方法處理非線性問題的基本思想。
再進(jìn)一步描述 Kernel 的細(xì)節(jié)之前,不妨再來看看上述例子在映射過后的直觀形態(tài)。當(dāng)然,你我可能無法把 5 維空間畫出來,不過由于我這里生成數(shù)據(jù)的時(shí)候用了特殊的情形,所以這里的超平面實(shí)際的方程是這個(gè)樣子的(圓心在 軸上的一個(gè)正圓)
因此我只需要把它映射到 ,這樣一個(gè)三維空間中即可,下圖即是映射之后的結(jié)果,將坐標(biāo)軸經(jīng)過適當(dāng)?shù)男D(zhuǎn),就可以很明顯地看出,數(shù)據(jù)是可以通過一個(gè)平面來分開的
核函數(shù)相當(dāng)于把原來的分類函數(shù):
映射成:
而其中的 可以通過求解如下 dual 問題而得到的:
這樣一來問題就解決了嗎?似乎是的:拿到非線性數(shù)據(jù),就找一個(gè)映射
三、SVM與Neural Network
囫圇吞棗看完SVM,個(gè)人感覺如果不好好理解一些概念,或說如果知其然而不知其所以然的話,不如不看。因此我想隨便寫一寫,把整個(gè)思路簡單地整理一遍。:)
SVM與神經(jīng)網(wǎng)絡(luò)
支持向量機(jī)并不是神經(jīng)網(wǎng)絡(luò),這兩個(gè)完全是兩條不一樣的路吧。不過詳細(xì)來說,線性SVM的計(jì)算部分就像一個(gè)單層的神經(jīng)網(wǎng)絡(luò)一樣,而非線性SVM就完全和神經(jīng)網(wǎng)絡(luò)不一樣了(是的沒錯(cuò),現(xiàn)實(shí)生活中大多問題是非線性的),詳情可以參考 知乎答案 。
這兩個(gè)冤家一直不爭上下,最近基于神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)因?yàn)锳lphaGo等熱門時(shí)事,促使神經(jīng)網(wǎng)絡(luò)的熱度達(dá)到了空前最高。畢竟,深度學(xué)習(xí)那樣的多層隱含層的結(jié)構(gòu),猶如一個(gè)黑盒子,一個(gè)學(xué)習(xí)能力極強(qiáng)的潘多拉盒子。有人或許就覺得這就是我們真正的神經(jīng)網(wǎng)絡(luò),我們不知道它那數(shù)以百千計(jì)的神經(jīng)元干了什么,也不理解為何如此的結(jié)構(gòu)能誕生如此美好的數(shù)據(jù)
——
猶如復(fù)雜性科學(xué)般,處于高層的我們并不能知道底層的”愚群“為何能涌現(xiàn)。兩者一比起來,SVM似乎也沒有深度學(xué)習(xí)等那么令人狂熱,連Hinton都開玩笑說SVM不過是淺度學(xué)習(xí)(來自深度學(xué)習(xí)的調(diào)侃)。
不然,個(gè)人覺得相對于熱衷于隱含層的神經(jīng)網(wǎng)絡(luò),具有深厚的數(shù)學(xué)理論的SVM更值得讓我們研究。SVM背后偉大的數(shù)學(xué)理論基礎(chǔ)可以說是現(xiàn)今人類的偉大數(shù)學(xué)成就,因此SVM的解釋性也非神經(jīng)網(wǎng)絡(luò)可比,可以說,它的數(shù)學(xué)理論讓它充滿了理性,這樣的理性是一個(gè)理工科生向往的。就如,你渴望知道食物的來源以確定食物是否有毒,如果有毒是什么毒,這樣的毒會在人體內(nèi)發(fā)生了什么反應(yīng)以致于讓你不適
—— 我的理性驅(qū)使我這么想,一個(gè)來路不明的食物是不能讓我輕易接受的。
SVM是什么
簡單點(diǎn)講,SVM就是個(gè)分類器,它用于回歸的時(shí)候稱為SVR(Support Vector Regression),SVM和SVR本質(zhì)上都一樣。下圖就是SVM分類:
(邊界上的點(diǎn)就是支持向量,這些點(diǎn)很關(guān)鍵,這也是”支持向量機(jī)“命名的由來)
SVM的目的:尋找到一個(gè)超平面使樣本分成兩類,并且間隔最大。而我們求得的w就代表著我們需要尋找的超平面的系數(shù)。
用數(shù)學(xué)語言描述:
這就是SVM的基本型。
SVM的基本型在運(yùn)籌學(xué)里面屬于二次規(guī)劃問題,而且是凸二次規(guī)劃問題(convex quadratic programming)。
二次規(guī)劃
二次規(guī)劃的問題主要用于求最優(yōu)化的問題,從SVM的求解公式也很容易看出來,我們的確要求最優(yōu)解。
簡介:
在限制條件為
的條件下,找一個(gè)n 維的向量 x ,使得
為最小。
其中,c為n 維的向量,Q為n × n 維的對稱矩陣,A為m × n 維的矩陣,b為m 維的向量。
其中,根據(jù)優(yōu)化理論,如果要到達(dá)最優(yōu)的話,就要符合KKT條件(Karush-Kuhn-Tucker)。
KKT
KKT是在滿足一些有規(guī)則的條件下,一個(gè)非線性規(guī)則問題能有最優(yōu)解的一個(gè)充分必要條件。也就是說,只要約束條件按照這個(gè)KKT給出的規(guī)則列出,然后符合KKT條件的,就可以有最優(yōu)解。這是一個(gè)廣義化拉格朗日乘數(shù)的成果。
把所有的不等式約束、等式約束和目標(biāo)函數(shù)全部寫為一個(gè)式子
L(a, b, x)= f(x) + a*g(x)+b*h(x)
KKT條件是說最優(yōu)值必須滿足以下條件:
L(a, b, x)對x求導(dǎo)為零
h(x) = 0
a*g(x) = 0
對偶問題
將一個(gè)原始問題轉(zhuǎn)換為一個(gè)對偶問題,懂的人知道對偶問題不過是把原始問題換了一種問法,從另一角度來求問題的解,其本質(zhì)上是一樣的。就好像我不能證明我比百分之五的人丑,但是我能證明我比百分之九十五的人帥,那樣就夠了。那么,為啥要用對偶問題,直接求原始問題不好嗎?參考一下 為什么我們要考慮線性規(guī)劃的對偶問題?
而二次規(guī)劃的對偶問題也是二次規(guī)劃,性質(zhì)、解法和原來一樣,所以請放心。(只做簡要介紹
最后訓(xùn)練完成時(shí),大部分的訓(xùn)練樣本都不需要保留,最終只會保留支持向量。這一點(diǎn)我們從圖上也能看得出來,我們要確定的超平面只和支持向量有關(guān)不是嗎?
(你看,只和支持向量有關(guān))
然而,問題又出現(xiàn)了(新解法的出現(xiàn)總是因?yàn)樾聠栴}的出現(xiàn)),對于SVM的對偶問題,通過二次規(guī)劃算法來求解的計(jì)算規(guī)模和訓(xùn)練樣本成正比,開銷太大。換句話來說,輸入數(shù)據(jù)小的時(shí)候還好,不過小數(shù)據(jù)幾乎沒啥用,但是數(shù)據(jù)量大起來又計(jì)算量太大,所以就得尋找一種適合數(shù)據(jù)量大而且計(jì)算量小的解法,這個(gè)就是SMO。
SMO
SMO,Sequential Minimal Optimization,針對SVM對偶問題本身的特性研究出的算法,能有效地提高計(jì)算的效率。SMO的思想也很簡單:固定欲求的參數(shù)之外的所有參數(shù),然后求出欲求的參數(shù)。
例如,以下是最終求得的分類函數(shù),也就是我們SVM的目標(biāo):
SMO算法每次迭代只選出兩個(gè)分量ai和aj進(jìn)行調(diào)整,其它分量則保持固定不變,在得到解ai和aj之后,再用ai和aj改進(jìn)其它分量。
如何高效也能通過SMO算法的思想看得出來 ——
固定其他參數(shù)后,僅優(yōu)化兩個(gè)參數(shù),比起之前優(yōu)化多個(gè)參數(shù)的情況,確實(shí)高效了。然而,與通常的分解算法比較,它可能需要更多的迭代次數(shù)。不過每次迭代的計(jì)算量比較小,所以該算法表現(xiàn)出較好的快速收斂性,且不需要存儲核矩陣,也沒有矩陣運(yùn)算。說白了,這樣的問題用SMO算法更好。
核函數(shù)
我們的SVM目的其實(shí)也簡單,就是找一個(gè)超平面,引用一張圖即可表述這個(gè)目的:
然而現(xiàn)實(shí)任務(wù)中,原始樣本空間也許并不能存在一個(gè)能正確劃分出兩類樣本的超平面,而且這是很經(jīng)常的事。你說說要是遇到這樣的數(shù)據(jù),怎么劃分好呢:
告訴我你的曲線方程吧,傻了吧~
于是引入了一個(gè)新的概念:核函數(shù)。它可以將樣本從原始空間映射到一個(gè)更高維的特質(zhì)空間中,使得樣本在這個(gè)新的高維空間中可以被線性劃分為兩類,即在空間內(nèi) 線性劃分 。這個(gè)過程可以觀看 視頻 感受感受,由于是youtube所以我截一下圖:
這是原始數(shù)據(jù)和原始空間,明顯有紅藍(lán)兩類:
通過核函數(shù),將樣本數(shù)據(jù)映射到更高維的空間(在這里,是二維映射到三維):
而后進(jìn)行切割:
再將分割的超平面映射回去:
大功告成,這些就是核函數(shù)的目的。
再進(jìn)一步,核函數(shù)的選擇變成了支持向量機(jī)的最大變數(shù)(如果必須得用上核函數(shù),即核化),因此選用什么樣的核函數(shù)會影響最后的結(jié)果。而最常用的核函數(shù)有:線性核、多項(xiàng)式核、高斯核、拉普拉斯核、sigmoid核、通過核函數(shù)之間的線性組合或直積等運(yùn)算得出的新核函數(shù)。(這里只涉及概念,不涉及數(shù)學(xué)原理)
軟間隔
知道了上面的知識后,你不是就覺得SVM分類就應(yīng)該是這樣的:
然而這也不一定是這樣的,上圖給出的是一種完美的情況,多么恰巧地兩類分地很開,多么幸運(yùn)地能有一個(gè)超平面能將兩個(gè)類區(qū)分開來!要是這兩個(gè)類有一部分摻在一起了,那又該怎么分?。?/p>
有時(shí)候如果你非要很明確地分類,那么結(jié)果就會像右邊的一樣 ——
過擬合。明顯左邊的兩個(gè)都比過擬合好多了,可是這樣就要求允許一些樣本不在正確的類上,而且這樣的樣本越少越好,”站錯(cuò)隊(duì)“的樣本數(shù)量要通過實(shí)際來權(quán)衡。這就得用上”軟間隔“,有軟間隔必然有硬間隔,應(yīng)間隔就是最開始的支持向量機(jī),硬間隔支持向量機(jī)只能如此”明確“地分類。特意找來了這個(gè)數(shù)學(xué)解釋:
其中一個(gè)樣本要是”站錯(cuò)隊(duì)“就要有損失,我們的目的就是:找出總損失值最小并且能大概分類的超平面。而計(jì)算一個(gè)樣本的損失的損失函數(shù)也有很多種,例如:hinge損失、指數(shù)損失、対率損失等。
只是簡單地把思路整理了一遍而已。
四、XGBoost與GBDT(一)-幾種最優(yōu)化方法對比
發(fā)現(xiàn)了作者的一個(gè)ppt GBDT算法原理與系統(tǒng)設(shè)計(jì)簡介 ,從頭復(fù)習(xí)了一波相關(guān)的內(nèi)容,寫兩篇記錄下來.
從根本上來說, GBDT 與XGBoost最大的區(qū)別在于二者用的優(yōu)化方法不一樣,所以從先從最優(yōu)化方法開始復(fù)習(xí).
最優(yōu)化問題通常分為兩個(gè)大類:
在機(jī)器學(xué)習(xí)中,典型的做法就是選擇一個(gè)合適的模型 ,對該模型的損失函數(shù) ,通過最優(yōu)化的方法最小化損失函數(shù),從而求解模型的參數(shù).
最常見的幾種優(yōu)化方法包括[2]:
可以看出,雖然牛頓法收斂速度較快,但是每次迭代過程,計(jì)算海塞矩陣的逆過程相當(dāng)繁瑣,特別是當(dāng)該矩陣維度較大時(shí).因此就有了逆牛頓法,他使用正定矩陣來近似求海塞矩陣的逆.
擬牛頓法和梯度下降法一樣只要求每一步迭代時(shí)知道目標(biāo)函數(shù)的梯度,另外,因?yàn)閿M牛頓法不需要二階導(dǎo)數(shù)的信息,所以有時(shí)比牛頓法更為有效。常用的擬牛頓法有DFP算法和BFGS算法.此處不再贅述.
下面補(bǔ)充擬牛頓法的思路(摘自[3]):
共軛梯度法是一種用于解決無約束凸二次規(guī)劃問題的方法.
啟發(fā)式方法指人在解決問題時(shí)所采取的一種根據(jù)經(jīng)驗(yàn)規(guī)則進(jìn)行發(fā)現(xiàn)的方法。其特點(diǎn)是在解決問題時(shí),利用過去的經(jīng)驗(yàn),選擇已經(jīng)行之有效的方法,而不是系統(tǒng)地、以確定的步驟去尋求答案。啟發(fā)式優(yōu)化方法種類繁多,包括經(jīng)典的模擬退火方法、遺傳算法、蟻群算法以及粒子群算法等等。
上面前三種算法,解決的問題都僅限于無約束的凸優(yōu)化, 而拉格朗日乘數(shù)法則解決含有約束條件的優(yōu)化問題,例如svm算法的解法推導(dǎo).約束優(yōu)化問題的一般形式是:
這個(gè)問題可以轉(zhuǎn)化成函數(shù) 的無條件極值問題.
對于約束條件為不等式的問題,有科學(xué)家拓展了拉格朗日乘數(shù)法.增加了kkt條件以求解.沒學(xué)過最優(yōu)化,這塊就沒法細(xì)談了.有機(jī)會一定要補(bǔ)上.
[1]Poll的筆記.常見的幾種最優(yōu)化方法[EB/OL]. https://www.cnblogs.com/maybe2030/p/4751804.html,2015-08-23 .
[2]超神冉.最優(yōu)化算法——常見優(yōu)化算法分類及總結(jié)[EB/OL]. https://blog.csdn.net/qq997843911/article/details/83445318,2018-10-27 .
[3]李航.統(tǒng)計(jì)學(xué)習(xí)方法[M].清華大學(xué)出版社:北京,2012:220.
[4]Ja1r0.共軛梯度法[EB/OL]. https://zhuanlan.zhihu.com/p/28623599,2018-05-28 .
以上就是關(guān)于最優(yōu)化kkt條件相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
怎樣預(yù)定酒店(怎樣預(yù)訂酒店最優(yōu)惠)
最優(yōu)化建模算法與理論(最優(yōu)化建模算法與理論答案)
SQL Error: select * from ***_ecms_news order by rand() desc limit 2