Andrew Ng机器学习课程7
回顧
通過定義訓練集S={(x(i),y(i));i=1,2,...,m}與線性決策平面(w,b)之間的function margin γ^和geometric margin γ 、好的分類決策平面特點得到了一個最優(yōu)化問題:
下面要介紹的就是如何解決這個最優(yōu)化問題,一個思路就是將這個沒有“現(xiàn)貨”可以解決的優(yōu)化問題,轉變?yōu)閛ff-the-shelf的最優(yōu)化問題的形式,以便直接拿來使用。
最優(yōu)化問題推導過程
約束條件中的||w||=1是一個nasty(非凸)的目標,于是進行第一步的演變:
將最大化geometric margin轉變?yōu)樽畲蠡痜unction margin
max(γ^,w,b)γ^ s.t. y(i)(wTx(i)+b)≥γ^,i=1,2,...,m
雖然沒有了||w||=1的約束,但這個優(yōu)化目標則變?yōu)榱艘粋€nasty(non-convex)函數(shù),需要進行第二步的演變:引入(w,b)的尺度限制,使function margin γ^=1
max(γ,w,b)12||w||2 s.t. y(i)(wTx(i)+b)≥1,i=1,2,...,m
考慮到最大化γ^/||w||=1/||w||等效于最小化||w||2,于是第二步演變后得到的優(yōu)化問題為:
經(jīng)過兩步的推導,問題轉變?yōu)榱艘粋€典型的凸二次目標與線性約束的優(yōu)化問題,這類問題可以通過成熟的software解決,不必深究。
雖然通過上面的推導過程能夠解決并得到一個好的分類決策超平面,但是還得介紹一下Lagrange duality,通過上面優(yōu)化問題的對偶形式,可以引入kernel trick得到在高維空間表現(xiàn)很好的optimal margin classifiers,另外,dual form將得到比上面解普通二次優(yōu)化問題更加有效的方法。
Lagrange duality
1. Lagrange multiplier
考慮下面形式的優(yōu)化問題:
解決方法之一就是Lagrange multipliers,定義Lagrangian為:
L(w,β)=f(w)+sumli=1βihi(w)
βi那一項叫做Lagrange multipliers。通過求解偏微分來得到對應的w、β。
2. primal optimization problem
將如下形式的優(yōu)化問題成為primal optimization問題:
為了解決這個問題,開始進行相關的推導:
- generalized Lagrangian:
L(w,α,β)=f(w)+sumki=1αigi(w)+sumli=1βihi(w) - objective θP(w):
θP(w)=maxα,β:αi≥0L(w,α,β)=maxα,β:αi≥0 f(w)+sumki=1αigi(w)+sumli=1βihi(w)
討論一下,如果gi(w)>0 or hi(w)≠0,則objective就變?yōu)榱藷o窮大,因此maximize就是為了使gi(w)、hi(w)滿足約束條件。當它們滿足約束條件時,為了使objective就等于了f(w)。這里P的含義代表的是primal。
- final optimization form:
minwθP(w)=minw maxα,β:αi≥0L(w,α,β)
- final optimal solution:
p?=minwθP(w)
3. 對偶問題dual optimization problem
- objective θD(α,β):
θD(α,β)=minwL(w,α,β)
這里D代表的是dual。
- dual optimization problem:
maxα,β:αi≥0θD(α,β)=maxα,β:αi≥0 minwL(w,α,β)
- dual solution:
d?=maxα,β:αi≥0θD(w)
4. 耦合primal和dual問題
不加約束地,兩者有如下形式的關系:
我們期望是在滿足某些條件時,令d?=p?。而這個條件就是著名的KKT條件,這里不再詳述,只是進行稍微的解釋說明:f、gi(w)是凸函數(shù),而hi(w)需為affine,即形如hi(w)=aTiw+bi。同時,如果(w,α,β)滿足KKT條件,它就是primal和dual問題的解。
- KKT formulation
?L(w?,α?,β?)?wi=0,i=1,...n?L(w?,α?,β?)?βi=0,i=1,...lα?gi(w?)=0,i=1,...,kgi(w?)≤0,i=1,...,kα?≥0,i=1,...,k
另外值得注意的條件就是,α?gi(w?)=0,i=1,...,k,叫做KKT dual complementary condition,它表明了如果α?>0,那么gi(w?)=0。后續(xù)引入到maximize marge問題中,會推導出support vector的定義。
optimal margin classifiers
這里重寫margin最大化的問題:
通過定義gi(w)這個約束項為如下形式:
這樣這個問題就轉變?yōu)榱松厦嫠榻B的那些預備問題了。從KKT dual complementary condition中可知,α?>0對應訓練樣本中那些functional margin等于1的樣本點,即使得gi(w?)=0,這些點就叫做support vector。
2. 構造對偶問題
- 構造Lagrangian
按照上面的介紹的Lagrangian,構造如下形式:
- 構造θD
按照上面介紹的dual問題的步驟,進行構造,然后求解。對w求解偏微分,得到如下的對應的w:
這個公式很重要,還記得剛才提到的support vector,實際上最后得到的w就是support vectors的樣本點的線性組合。這一現(xiàn)象被稱為??表示定理??。實際上知道了決策超平面w之后,很容易得到b的表達式為:
b?=?maxi:y(i)=?1w?Tx(i)+mini:y(i)=+1w?Tx(i)2
實際上的含義就是當知道斜率之后,求截距b就是不斷地進行平移,移動到兩個樣本的正中間。其實比較困難的地方時在求斜率上。
- 對偶問題
最后推出的dual問題的形式如下:
當然這樣進行dual問題轉化,需要先驗證KKT條件,否則兩者primal和dual問題的解不等,轉化就沒意義了。這樣問題轉化為了求解參數(shù)為αi的最大化問題。
到此,假設已經(jīng)得到了對應的解,那么模型在進行工作時,計算wTx+b時,可以進行如下的轉換:
wTx+b=(∑i+1mαiy(i)x(i))Tx+b=∑i+1mαiy(i)<x,x(i)>+b
所以,計算中只需要計算新輸入的x與訓練集中的x的內積就好了。還記得support vector吧,實際上只需要計算新輸入x與support vcetors的內積就好了。上面的那種形式,有助于我們引出kernel trick。
Kernels核
回顧linear regression,通過features x,x2,x3...,xn來獲取更加powerful的曲線。實際上是通過特征一聲,將原始特征映射到高維空間,隨著n的增大,模型的能力越強,復雜度越高,可以擬合的曲線也越彎曲,但是隨著自由度的增加,模型很有可能overfitting。常規(guī)的方法是不可能達到無窮多維度的擬合的。特征映射記為?,映射后的特征記為?(x)。而kernel的定義為:對應給定的特征映射?(x),K(x,z)=?(x)T?(z)。給定一個kernel就表達了兩層信息,一是特征映射函數(shù),二是內積。Kernel的好處是容易計算,如果對應的特征映射?(x)是一個高維度的矢量,那么計算內積就比較費勁,而通常直接利用Kernel能夠獲得更有效率的計算。另一方面,kernel具有內積的特性,表示了經(jīng)過特征轉換后的特征相似度。比如:
當x,z距離很近時,接近為值接近為1;當x,z距離很遠時,接近為值接近為0;這個Kernel叫做Gaussian kernel。定義Kernel matrix為Kij=K(xi,xj)。K得是半正定的對稱矩陣。這是一個充分條件,被稱為Mercer Theorem。
將Kernel應用與SVM是非常明顯的,而kernel不僅僅能應用于SVM,特別地,當學習算法中需要以輸入特征矢量的內積形式時,使用kernel代替將會在高維特征空間非常高效地工作。所以,稱這種技能為kernel trick。
2015-8-26
藝少
轉載于:https://www.cnblogs.com/huty/p/8519208.html
總結
以上是生活随笔為你收集整理的Andrew Ng机器学习课程7的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP实用小程序(四)
- 下一篇: 【C语言】指针