機器學習基礎知識-迴歸與梯度下降法

一、機器學習的概念
        機器學習(Machine Learning,ML)是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、算法複雜度理論等多門學科。專門研究計算機怎樣模擬或實現人類的學習行爲,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能。它是人工智能的核心,是使計算機具有智能的根本途徑。它的應用已遍及人工智能的各個分支,如專家系統、自動推理、自然語言理解、模式識別、計算機視覺、智能機器人等領域。

二、按學習形式分類
        1)監督學習(supervised learning)
        監督學習,即在機械學習過程中提供對錯指示。一般實在是數據組中包含最終結果(0,1)。通過算法讓機器自我減少誤差。這一類學習主要應用於分類和預測 (regression & classify)。
        2)非監督學習(unsupervised learning)
        非監督學習又稱歸納性學習(clustering)利用K方式(Kmeans),建立中心(centriole),通過循環和遞減運算(iteration&descent)來減小誤差,達到分類的目的。

三、迴歸與機器學習
        迴歸,研究一個隨機變量Y對另一個(X)或一組(X1,X2,…,Xk)變量的相依關係的統計分析方法。一般來說,迴歸分析是通過規定因變量和自變量來確定變量之間的因果關係,建立迴歸模型,並根據實測數據來求解模型的各個參數,然後評價迴歸模型是否能夠很好的擬合實測數據;如果能夠很好的擬合,則可以根據自變量作進一步預測。
直白的講,迴歸就是對一組數據集,我們能夠找到一個曲線近似的擬合各個點。如果擬合的曲線恰好是一條直線,那麼就是線性迴歸;如果是二次曲線,就是二次迴歸等等。

        前面的概念中,我們知道機器學習可以簡單的理解爲計算機系統模擬人類學習知識並根據所學知識產生新的判斷輸出的過程,我們可以將回歸看作一個簡單的學習過程,在一個線性迴歸中,我們需要通過一組數據集建立一個擬合函數h(x)=ax+b來擬合各個數據點,這可以看作是一個學習的過程,直線與各個點擬合越好,我們稱其學習的結果越令人滿意,當擬合最好時,我們可以通過給其其他的節點,並通過擬合函數來預測新值,當然給定的學習數據不同,最終產生的擬合效果也不同,這和人類學習知識是一致的。

        上述過程闡述瞭如下圖的典型機器學習過程,首先給出一個輸入數據,我們的算法會通過一系列的過程得到一個估計的函數,這個函數有能力對沒有見過的新數據給出一個新的估計,也被稱爲構建一個模型。


        爲了描述更多關於機器學習的基礎,下面給出幾個標識符和概念:
        訓練數據的輸入值和輸出值我們用X和Y表示,X爲可以是n維向量,代表實際學習對象的特徵,例如長、寬、高等;
        擬合的函數(或者稱爲假設或者模型),一般寫做 y = h(x);
        我們用X1,X2..Xn 去描述n維向量X裏面的分量,比如x1=房間的面積,x2=房間的朝向,等等,我們可以做出一個估計函數:

        θ在這兒稱爲參數,在這兒的意思是調整X中每個分量的影響力,就是到底是房屋的面積更重要還是房屋的地段更重要。也就是說對於一個給定的房屋數據X,它郵兩部分數據組成,我們需要構造一個線性組合以表達房屋X的具體價值Y。如果我們令X0 = 1,就可以用向量的方式來表示了:

        既然我們能夠寫出房屋的價值與房屋面積和地段等屬性的表達式,那麼我們就可以根據任意房屋的相關性質預測或者直接計算房屋的價值,但是,這個表達式是我們猜測的,其中的參數θ如何確定呢?就是利用現有的數據進行“學習”的過程,每一個θ都能夠獲得一個表達式,那麼到底θ爲何值時h函數纔是最好的呢,我們需要一個機制去評估我們θ是否比較好,所以說需要對我們做出的h函數進行評估,一般這個函數稱爲損失函數(loss function)或者錯誤函數(error function),描述h函數不好的程度,在下面,我們稱這個函數爲J函數。在這兒我們可以做出下面的一個錯誤函數,具體函數形式爲什麼是這樣子的,我們可以暫時認爲是神說的:

image

        形式上看這個錯誤估計函數應該是去對x(i)的估計值與真實值y(i)差的平方和作爲錯誤估計函數,在做一些常係數的調整方便計算;那麼,針對這個錯誤函數,我們已知X(i),Y(i),m(已知數據個數即學習數據規模)求θ使得錯誤函數的值最小的過程,關於求這樣的最小值問題有很多方法,其中有最小二乘法(min square),是一種完全是數學描述的方法,在stanford機器學習開放課最後的部分會推導最小二乘法的公式的來源,這個來很多的機器學習和數學書上都可以找到,這裏就不提最小二乘法,而我們這裏按照該門課程的順序介紹使用梯度下降法求解令J最小的θ。

四、梯度下降法

        梯度下降法,是求解無約束最優化問題的一種常用方法,有實現簡單的優點。梯度下降法是迭代算法,每一步需要求解目標函數的梯度向量。首先我們應該清楚,一個多元函數的梯度方向是該函數值增大最陡的方向。具體化到1元函數中時,梯度方向首先是沿着曲線的切線的,然後取切線向上增長的方向爲梯度方向,2元或者多元函數中,梯度向量爲函數值f對每個變量的導數,該向量的方向就是梯度的方向,當然向量的大小也就是梯度的大小。

 

 

        梯度下降法是利用負梯度方向(梯度方向是求最大值的方向)來決定每次迭代的新的搜索方向,使得每次迭代能使待優化的目標函數逐步減小。一種簡單形式是:x(k+1)=x(k)-a*g(k),其中a稱爲學習速率,可以是較小的常數。g(k)是曲線x(k)在k點的的梯度。對於上述錯誤函數J,我們使用梯度下降法求解最小值時的θ是按下面的流程進行的:

        1)首先對θ賦值,這個值可以是隨機的,也可以讓θ是一個全零的向量。
        2)改變θ的值,使得J(θ)按梯度下降的方向進行減少。
        爲了更清楚,給出下面的圖(當然我不覺得直接給出這麼個圖大家能看明白,爲什麼J的曲線是這個樣子呢?如果明白最好了,不明白可以暫時不管,認爲是神告訴我們的就好了,實際上這是一個表示參數θ與誤差函數J(θ)的關係圖,紅色的部分是表示J(θ)有着比較高的取值(山頂 或者 凸起的頂部),我們需要的是,能夠讓J(θ)的值儘量的低。也就是深藍色的部分(山底 或者 凹下的最低點),找到這個地方的θ。(當然θ是由θ0,θ1兩個維度組成的二維向量):

 

        在上面提到梯度下降法的第一步是給θ給一個初值,假設隨機給的初值是在圖上的十字點。
        然後我們將θ按照梯度下降的方向進行調整,就會使得J(θ)往更低的方向進行變化,如圖所示,算法的結束將是在θ下降到無法繼續下降爲止。

 

 

         當然,可能梯度下降的最終點並非是全局最小點,可能是一個局部最小點,因爲初始點不同,梯度的方向也可能改變,於是乎可能是下面的情況,那麼我麼也可以意識到,梯度下降算法所得到的最優解可能是局部最小點,(即陷在某一處的凹坑處,出不來了):

 

        下面我將用根據梯度下降法的簡單形式和梯度的概念對J(θ)求解,以下是一些推到過程,(用到的求導過程如果不懂的話就去問神或者查查高等數學知識吧,話說學得高等數學終於知道幹什麼了),根據梯度下降法形式x(k+1)=x(k)-a*g(k),我們首先應該求解梯度g(θ),即對我們的函數J(θ)求偏導J

        下面是更新的過程,也就是θi會向着梯度最小的方向進行減少。θi表示更新之前的值,-後面的部分表示按梯度方向減少的量,α表示步長,也就是每次按照梯度減少的方向變化多少。

         一個很重要的地方值得注意的是,梯度是有方向的,對於一個向量θ,每一維分量θi都可以求出一個梯度的方向,我們就可以找到一個整體的方向,在變化的時候,我們就朝着下降最多的方向進行變化就可以達到一個最小點,不管它是局部的還是全局的。


參考文章:
        http://baike.sogou.com/v231046.htm

        http://blog.csdn.net/zimohuakai/article/details/6918590?c=8a2ab459604151929a8ea5f995489aab

        http://blog.csdn.net/xiazdong/article/details/7950084

        http://blog.csdn.net/a15620907776/article/details/39299651

        http://v.163.com/movie/2008/1/B/O/M6SGF6VB4_M6SGHJ9BO.html

發佈了34 篇原創文章 · 獲贊 7 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章