機器學習淺談

韓信大將軍發表於2018-05-13

機器學習淺談

  最近整理之前的學習成果,為了加深學習印象,同時也為自己的學習過程做一個記錄,決定寫下一系列的學習心得文章,梳理之前的學習內容。今天將從整體上記錄一下我學習機器學習的過程,以及對機器學習的哲學理解。

大綱

  • 為什麼機器可以學習
  • 如何進行機器學習
  • 機器學習的小案例——Perceptron

1. 為什麼機器可以學習

  學習的思路便是從得到的樣本中去了解一般性規律,用數學的表達方法就是:從一堆樣本中找到現實世界中的規則函式f(x)

f(x)
,而現實世界中的這一f(x)
f(x)
函式又是幾乎不可能得到的,所以機器學習便是根據資料樣本通過一個學習過程得到可以擬合f(x)
f(x)
的函式g(x)
g(x)
,機器學習中的演算法幾乎都是從這一原理出發。

  那麼基於資料如何求出最符合f(x)

f(x)
g(x)
g(x)
變成了機器學習的重要問題,也是核心問題,這個問題將貫穿機器學習的始終。一提起樣本與真實概率之間的關係,可以使用Hoeffding 不等式,如下:

P[|νμ|>ϵ]2exp(2ϵ2N)
P\left[|\nu-\mu|>\epsilon\right]\le2\exp\left(-2\epsilon^2N\right)

  這個公式告訴我們當樣本數量N

N
足夠大時,樣本的錯誤率幾乎可以與現實世界的錯誤率相等,如果滿足了這一條件也就是機器學習已經成功了一半,要想整個機器學習取得全部成功還有一個條件必不可少:錯誤率 ν
\nu
要很小,第二個條件就是機器學習演算法的目標了。而Hoeffding 不等式就是機器學習的理論基礎。

  這個公式的機器學習理解為:ν

\nu
代表的是樣本資料中的h(x)
h(x)
的錯誤率Ein
E_{in}
h(x)
h(x)
表示的是機器學習中的一種假設,而μ
\mu
則代表的是h(x)
h(x)
在樣本以外的錯誤率Eout
E_{out}
,即真實的錯誤率,其數學表達方法為:

Eout=εxp[h(x)f(x)]Ein=1Nn=1N[h(xn)yn]


  中εxPx

x
的產生規律,可以知道這又是我們不知道的,所以在樣本的收集中這一點特別重要,要保證樣本產生的規律與這一規律相符。

  通過Hoeffding 不等式和機器學習的與之的聯絡,可以得出在N

N
足夠大的時候,in-sample error Ein
E_{in}
會與 out-of-sample Eout
E_{out}
之間的差距會很小:

P[|Ein(h)Eout(h)|>ϵ]2exp(2ϵ2N)
P\left[\left|E_{in}(h)-E_{out}(h)\right|>\epsilon\right]\le2\exp\left(-2\epsilon^2N\right)

  這也就解決了我們剛才所說的第一個問題,也保證我們使用機器學習演算法得到的小的Ein

E_{in}
是有用的,是可以反映真實世界的,是學習到了知識的。

2. 如何進行機器學習

  經過上一部分的梳理我們知道了機器學習可以分為以下兩個問題:

Eout(g)Ein(g)Ein(g) little enough
E_{out}(g)\approx E_{in}(g) \\ E_{in}(g)\ little\ enough

  其實只知道這部分還不足以證明機器就可以學習了,這一部分還需要使用break point、成長函式、VC bound 等數學方法再去證明機器學習的可行性,但在這裡不做詳細的數學推導,後續會陸續記錄。這一部分將講述如何進行機器學習。

  機器學習的大體流程:

這裡寫圖片描述

  因為實際機器學習過程中noise 的因素是不可避免的,所以f(x)

f(x)
之外需加上noise 部分,這也將現實世界的X
\boldsymbol{X}
y
y
之間的關係為:

yP(y|X)
y\sim P(y | \boldsymbol{X})

即結果與資料之間的關係由確定關係y=f(x)
y=f(\boldsymbol{x})
變成了不確定關係。noise的存在也使得訓練資料的結果並不能真實體現現實資料,這也是以後出現過擬合現象的原因之一。

3. 機器學習案例——Perceptron

  這一部分只介紹一個非常簡單的機器學習演算法,Perceptron Learning Algorithm,以後會將所學習的機器學習或者深度學習演算法逐步做一個總結。

  Perceptron 是一個線性分類器,所以其表現形式為:

h(x)=sign(i=0dωixi)=sign(ωTx)
h(x)=sign\left(\sum^d_{i=0}\omega_ix_i\right)=sign\left(\boldsymbol{\omega^T\cdot x}\right)

這裡的x
x
的維度為d
d
,為了表達方便給x
x
增加一個維度為1,ω
\omega
也增加一個維度用來做偏置量。

  上式便是Perceptron 的備選函式集(Hypothesis set),而Perceptron 則作為機器學習流程圖中的優化演算法A。Perceptron 的優化過程為:

  1. 選取初始權重ω0
    \omega_0
  2. 將權重代入到線性分類器中,找到出現錯誤的點sign(ωtTxn(t))yn
    sign\left(\boldsymbol{\omega^T_t\cdot x_{n(t)}}\right)\not=y_n
  3. 修改錯誤ωt+1=ωt+yn(t)xn(t)
    \boldsymbol{\omega_{t+1}}=\boldsymbol{\omega_t}+y_{n(t)}\boldsymbol{x_{n(t)}}
  4. 一直重複2和3步,直到沒有錯誤為止

      這是一個簡單的機器學習演算法,可以解決簡單的線性可分資料集,這一演算法針對上述機器學習流程圖而言沒有顯性的說明錯誤函式(err measure),但是從演算法優化過程來看,這個演算法的err measure 正是最簡單的0/1 error,針對err measure 還會在複習幾個演算法之後專門開一篇介紹。

      這篇文章簡單地介紹了機器學習的流程以及一些機器學習的哲學問題,其實無論學會多少機器學習演算法,總歸逃不過這一流程,機器學習哲學理念打好對於以後學習演算法也會事半功倍。這篇文章總體的線條較粗,要在以後不斷的進行優化和加強。

      第一次使用Markdown 來編輯文章,竟然還有些喜愛這東西了。