機器學習--牛頓方法
不知道為什麼分享不了了,就算是這樣,我也要常常把自己的思考寫下來,就算沒什麼用,等到七老八十的時候,我還能回憶回憶,很好很好~
一、牛頓方法
要注意,牛頓方法並不是機器學習方法,而是機器學習模型尋找最優引數的方法,它只是一種工具,用來求取代價函式最優解的工具。基本上所有常見的優化方法都與牛頓方法有著或多或少的聯絡,都是牛頓法的親戚,也正是因為這樣,它們才具有令人滿意的表現。而各種優化方法的本質差異在於每迭代一步的方向和步長選取,即下式中的α和p
中前面我們說過的梯度下降法,收斂速度慢,對於特徵數目上千萬的問題,表現不盡人意。但是牛頓法的收斂速度是二階的,這意味著 如果第k次的誤差是0.01,則第k+1次迭代誤差將會變為0.0001,這樣的收斂速度,還是很棒的吧~下面就簡單介紹一下牛頓法的原理。
如果我們要求某一個高次函式與x軸的交點,在一次二次的時候我們還有求根公式可以解決,但高次就無法直接求交點了。如下圖為某一函式f(x):
於是牛頓法就提出了一個關鍵性的思想:近似。儘管我們無法求得f(x)與x軸真實的交點,但我們能給出近似的解。如下圖:
我們從點(4.5,0)開始,求這點的切線與x軸的交點如紅色圈,將其作為函式與x軸交點更好的一個近似,再求這個點處切線與x軸交點作為一個更好的近似,如下圖:
根據導數定義,△=f(x)/f'(x),所以引數的迭代公式為:
轉到我們要求的問題,代價函式的最小值問題或者似然函式的最小值問題,無約束優化問題的必要條件就是導數為0,所以牛頓法用在最優化引數中的迭代公式為:
如果此時使多元函式,即引數theta是一個向量,那麼二階導數和一階導數分別用hessian陣和梯度向量來代替,即:
其中
二、廣義線性模型Generalized Linear Models
前面幾節課講的線性迴歸中y的分佈屬於高斯分佈,而邏輯迴歸中的y分佈屬於伯努利分佈,神奇的是,這兩種分佈恰好都是指數分佈的特殊形式。這裡的廣義線性模型,其中y分佈屬於一般的指數分佈,線性迴歸和邏輯迴歸都是廣義線性模型的特殊情況。指數分佈的一般模型為:
其中yita是自然分佈引數,T(y)為充分統計量,一般T(y)=y。Ng詳細講解了伯努利分佈和高斯分佈是如何表達成上面這個形式的。
2.1.伯努利分佈
伯努利分佈可以表示為:
:
綜合起來可以表示為:
對比上面指數分佈的表示式,我們可以確定引數如下:
由上面的式子我們還能解出
有木有覺得這個式子很熟悉啊,對,沒錯就是前面講過的邏輯迴歸中sigmod函式,這也就從根本上解釋了為什麼要使用那個形式的sigmod函式。
2.2.高斯分佈
推導過程類似,最後的結果為高斯分佈也是指數家族的一員,它的相關引數為:
2.3.廣義線性模型
如果我們需要對某個時間段訪問我們部落格的人數進行預測,特徵量可能是部落格原創文章的質量,在朋友圈的推廣等等,那我們最好選擇泊松分佈,因為泊松分佈在計數統計上面有著良好的表現,恰好,泊松分佈也是指數分佈的一員,這樣我們就可以對這類問題建立機器學習模型。為了用廣義線性模型的方法,我們需要進行三點假設:
1.y|x屬於指數分佈,引數是
2.給一個特徵量,我們的目標是預測T(y)的值(這個T(y)我仔細思考了一下就是真正輸出y的函式,大多數情況下都是y,但是也有的情況不是。比如我們統計一個商店一段時間內的人流量想要真正估計的是營業額,這個T(y)代表的就是人流量和營業額之間的關係,當然這個例子舉的不好,大概是這意思)。所以我們要使我們的學習假設模型為:
這線上性迴歸和邏輯迴歸中是滿足的,比如邏輯迴歸中:
3.自然分佈引數滿足:
好了,有了以上的準備工作,我們就能從廣義線性模型中得到原始線性迴歸和邏輯迴歸的模型了。
對於原始線性迴歸有:
對於邏輯迴歸有:
全部符合我們之前的結論。
下面由廣義線性模型匯出一種新的模型SoftMax 迴歸,這是一種多分類問題,是邏輯迴歸的推廣,考慮y有k種取值情況
y∈{1,2,....k}
類似於伯努利分佈,這個指數分佈的引數有k-1個,分別是,其中是冗餘引數。 為了方便表達,定義:
不同於前兩種,現在沒有T(y)=y這個條件。
再引入一種記號
則我們可以簡潔的把T(y)這個k-1維的向量表示為:
這也是T(y)和y之間的關係表現。
綜上所示,類似於伯努利分佈的,我們有:
比較顯然,各項引數為:
關鍵的是,從中可以得到:
進一步推導:
所以有:
也就是說,在前面三點假設下,y分佈模型為:
基於這樣分佈的一個變數,我們機器學習的假設模型為:
得到模型的具體表達之後,我們要做的就是求最佳的引數theta了,求取最佳引數的辦法是極大化似然函式或者極小化代價函式,這裡我們選擇極大化概率函式,也就是max下面這個函式:
對於這個問題,我們可以選取牛頓法或者梯度下降法就可以解決啦。
3.總結
課是越來越難了,我發現概率的知識我好多都忘了。聽得時候雲裡霧裡,但是隨著整理一遍思路慢慢清晰了。
到現在為止所講的主要是對於一個變數(屬於指數分佈的大家族)進行預測或者分類,根據這個變數的特徵。那我們有一套方法,首先找出這個變數的分佈模型p(y|x),再利用分佈模型得到機器學習的假設模型h(x)=E(y|x),接著計算似然函式,極大化似然函式得到機器學習模型中的最佳引數,問題解決。