1. 程式人生 > >【機器學習 吳恩達】CS229課程筆記notes1翻譯-Part II分類和logistic迴歸

【機器學習 吳恩達】CS229課程筆記notes1翻譯-Part II分類和logistic迴歸

CS229 課程筆記

吳恩達

Part II  分類和logistic迴歸

      我們現在談論分類問題。分類問題與迴歸問題類似,區別是在分類問題中,我們現在想要預測的y值只取少量的離散值。現在,我們聚焦於二值分類問題,y只取兩個值,0和1。(我們在這裡說的大多數可以擴充套件到多分類問題。)例如,如果我們試圖構建一個垃圾郵件分類器,x(i)可能是一封郵件的某些特徵,如果郵件是垃圾郵件,y為1,如果不是垃圾郵件,y為0。0也叫做負類,1叫做正類,它們用符號“-”和“+”表示。給定x(i),相應的y(i)也叫做訓練樣本的標籤。

5  Logistic迴歸

      我們可以嘗試解決分類問題,忽略y是離散值的事實,使用我們之前的線性迴歸演算法試圖預測給定x的y的值。然而,很容易構建這樣的例子,但是這種演算法的效能非常差。直觀地,對於hθ

(x),取值大於1或小於0沒有意義,我們知道,y∈{0,1}。

      為了解決分類問題,讓我們改變我們的假設hθ(x)的形式。我們將選擇

 

      其中

 

      這叫做logistic函式,或sigmoid函式,下面是g(z)的描點影象:

 

      注意,當z-->∞時,g(z)趨向於1,當z--> -∞時,g(z)趨向於0。因此,g(z),h(x)的取值介於0和1之間。如前所述,我們仍使得x0=1,因此

      現在,我們g(z)函式的選擇如上所述,實際上其他平滑地從0增長到1的函式也可以使用,但由於很多原因(當我們談論廣義線性模型和生成學習演算法時我們會看到),選擇logistic函式是十分自然的。在繼續之前,sigmoid函式的推導是一個有用的特性,推導如下:

 

      因此,給定logistic迴歸模型,我們怎麼擬合θ?下面我們將看到最小平方迴歸怎麼在一系列假設下推導成最大似然估計,讓我們給我們的分類模型賦予一系列概率假設,然後通過最大似然擬合引數。

      讓我們假設

 

      上式可以寫得更緊湊一點,如下:

 

      假設m個訓練樣本是獨立生成的,我們可以寫出似然函式如下:

 

      如前,最大化log似然函式更容易:

 

      我們怎麼最大化似然函式?與我們線上性迴歸例子中的推導相似,我們可以使用梯度上升。寫成向量符號,我們的更新可以寫成。(注意,更新公式中為正而不是負,是由於我們現在是最大化,而不是最小化一個函式。)讓我們從一個訓練樣本開始,對對數似然函式l(θ)求導如下:

 

      上面,我們使用g’(z)=g(z)(1-g(z))的事實,這給出了我們隨機梯度上升規則:

 

      如果我們把上式與LMS(最小均方)更新規則做比較,我們看到它看起來很相似,但他們不是同一個演算法,因為hθ(x(i))現在定義為θTx(i)的非線性函式。儘管如此,對於兩個非常不同的演算法和學習問題,我們最後得到相同的更新規則,這令人驚訝。這是巧合?還是背後有更深層的原因?我們將在廣義線性模型(GLM)中進行回答。

6  插話:感知學習演算法

     我們現在簡要談論一種演算法,當我們談論學習理論時,我們還將回來。考慮修改logistic迴歸方法,迫使其輸出值或者是0或者是1,為此,我們需要改變g的定義為閾值函式:

 

      如果我們像前面一樣,讓hθ(x)=g(θTx),但使用修改後的g的定義,我們使用更新規則

 

      那麼我們得到感知學習演算法。

      在20世紀60年代,感知被認為是大腦中單個神經元的一個粗略的模型。儘管它如此簡單,但在我們後面課程中談論學習理論時,它將提供給我們分析的起始點。然而,儘管感知演算法外觀上與我們談論的其他演算法相似,相較於logistic迴歸與最小平方線性迴歸,它實際上是一個非常不同型別的演算法。特別地,很難賦予感知預測有意義的概率解釋,或者像最大似然估計演算法那樣推導感知演算法。

7  最大化l(θ)的其他演算法

      回到logistic迴歸,g(z)是sigmoid函式,讓我們現在談論一個不同的演算法來最小化l(θ)。

      我們考慮牛頓方法找到函式的零點。特別地,假定我們有函式f:R-->R,我們希望找到一個值θ,使得f(θ)=0。這裡θ∈R是一個實數。牛頓方法執行下面的更新:

 

      該方法有一個自然的解釋,我們認為它通過一個線性函式逼近函式f,該線性函式是f在當前的θ處的切線,使得線性函式等於0,讓下一個θ值為線性函式為0的地方的θ值。

      下面是牛頓方法的執行過程:

 

      在最左圖中,函式f沿著線y=0繪製。我們試圖找到θ,以便f(θ)=0;得到的θ的值大約為1.3,。假定我們用θ=4.5初始化該演算法。牛頓方法擬合出一條直線,為f在θ=4.5處的切線,與值為0的線有交點(中圖)。這給出我們下一個θ值,大約為2.8。最右圖顯示了再執行一次迭代的結果,更新的θ值大約為1.8,更多的迭代之後,我們快速靠近θ=1.3。

      牛頓方法給出了一種方式使得f(θ)=0。如果我們想要用它來最大化某個函式l呢?l的最大值相當於一階導數l’(θ)為0的點。因此,通過讓f(θ)=l’(θ),我們可以使用相同的演算法來最大化l,我們獲得更新規則:

 

      (考慮:如果我們想要使用牛頓方法來最小化,而不是最大化一個函式,應該改變什麼?)

      最後,在我們的logistic迴歸中,θ是向量值,因此我們需要擴充套件牛頓方法來應用到logistic迴歸中。將牛頓方法擴充套件到多維情形中(也叫做Newton-Raphson方法),通過如下給出:

 

      這裡,是l(θ)關於θi的偏導數向量,H是n×n矩陣(實際上是n+1×n+1矩陣,假定我們包括截距項),叫做Hessian矩陣,其矩陣項如下給出:

 

      牛頓方法比批梯度下降演算法收斂得更快,需要更少的迭代就能非常靠近最小值。然而,一次牛頓方法的迭代比梯度下降演算法的代價更高,因為它需要計算n×n的Hessian矩陣,並對它求逆;但只要n不太大,牛頓方法通常更快。當我們把牛頓方法應用到最大化logistic迴歸對數似然函式l(θ)時,該方法叫做Fisher scoring。