人工智能筆記之機器學習原理

機器學習原理

學習完數學理論就差不多該開始學習機器學習的原理了,現在流行的深度學習和強化學習,基本都是基於機器學習的原理,機器學習是基礎,所以需要先了解機器學習是什麼,怎麼實現的。

1. 機器學習的本質

機器學習的本質是找到一個功能函數,這個函數會根據我們的輸入,返回一個結果。所謂函數就是輸入了一個或幾個變量(x),通過數學轉換之後輸出一個數據(y),所以只要確定了數學轉換的算法,以及算法中所需要的參數,就能確定這個函數。

2. 機器學習任務及具體步驟

機器學習的核心任務有兩個,首先是找到合適的算法,其次是計算該算法所需要的參數。一般我們舉一個最簡單的函數,如 y=wx+by=wx+b,其中w是變量的係數,代表權重,參數b是常量,代表偏置量。通過給出大量的x值和y值,算出w和b,那麼就可以得出具體的功能函數,我們也就找到規律了,有了具體的函數,根據輸入x的值,我們就知道輸出的y值了,這就是機器學習,具體的步驟如下:

Created with Raphaël 2.2.01. 算法選擇2. 初始化參數3. 計算誤差4. 誤差夠小?6. 完畢5. 調整參數yesno

根據x,y值的輸入,推算規律

x y
12 33
45 34
32 3
56 43
  1. 算法選擇:選用最簡單的線性函數 y=wx+by=wx+b
  2. 初始化參數:就是給w,b一個初始的值,這個初始的值是個隨機數
  3. 計算誤差:現在已經知道了w和b,那麼就可以把樣本數據中的x帶入函數中求y值,爲了避免混淆把這次算出的y值記作yhaty^{hat},然後通過計算誤差的函數計算誤差,計算誤差函數爲
    J(w,b)=i=In[(wx+b)y]2 J(w,b)=\sum^n_{i=I}[(wx+b)-y]^2
  4. 判斷學習是否完成:每次計算出來的誤差相互對比,總誤差不超過0.0001,就認爲學習已經完成。
  5. 調整參數:學習的目的是爲了把誤差降到最低,根據數學知識我們知道,沿着誤差函數的導數方向調整參數,誤差函數就可以變小了。即,用現有的誤差公式求對參數w的偏導數,以及對參數b的偏導數,就能得到ΔwΔb\Delta w,\Delta b,再用原來的參數w,b減去ΔwΔb\Delta w,\Delta b,就實現了對參數的調整,每次只調整1%,這個1%就是學習率 η\eta
    具體過程如下:
    w=wηΔwb=bηΔb w=w-\eta \Delta w \\ b=b-\eta \Delta b
    利用符合函數的求導公式:
    f(g(x))=f(x)g(x) f(g(x))^\prime=f^\prime(x)g^\prime(x) ,令 g(x)=wx+(by)g(x)=wx+(b-y),
    f(g(x))=i=In[wx+(by)]2 f(g(x))=\sum^n_{i=I}[wx+(b-y)]^2 ,上述誤差函數的偏導數分別爲
    Δw=wJ(w,b)=i=1n2(wx+by)xΔb=bJ(w,b)=i=1n2(wx+by) \Delta w= \frac{∂}{∂w}J(w,b)=\sum^n_{i=1}2(wx+b-y)x \\ \Delta b= \frac{∂}{∂b}J(w,b)=\sum^n_{i=1}2(wx+b-y)
  6. 反覆迭代,根據步驟3計算的誤差,再次進行步驟4和步驟5的迭代循環,直到誤差變得足夠小,此時的w和b值就是機器學習要找的參數。以後就可以用這個具體的功能函數根據任意一個新的x值,計算出對應的y值了。

3. 機器學習的複雜化

現實中基本不可能只存在一個變量,影響事務發展的因素也不可能只有一個,所以將線程方程複雜化之後,我們得出一個公式:
h(θ)=θ0x0+θ1x1++θnxn=i=1nθixi h(\theta)=\theta_0x_0+\theta_1x_1+\cdots+\theta_nx_n=\sum^n_{i=1}\theta_ix_i
其中θ\theta代表權重,n是變量的個數。之後我們就可以得出損失函數,也叫代價函數,可以用公式表示爲:
J(θ)=i=1n(hθ(x(i))y(i))2 J(\theta)=\sum^n_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2
其中m表示樣本數據的個數,機器學習的目標就是讓損失函數足夠小,而辦法就是不斷的調整θ\theta,調整的方法就是對J(θ)J(\theta)求偏導數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章