1. 程式人生 > >【機器學習】1 監督學習應用與梯度下降

【機器學習】1 監督學習應用與梯度下降

例如 tla ges 機器 fprintf lns 找到 輸入 style

監督學習

技術分享

簡單來說監督學習模型如圖所示

其中 x是輸入變量 又叫特征向量 y是輸出變量 又叫目標向量

通常的我們用(x,y)表示一個樣本 而第i個樣本 用(x(i),y(i))表示

h是輸出函數

監督學習的任務是學習一個模型,使模型能夠對任意的輸入,做出很好的預測。

習慣的樣本訓練數目用m表示

梯度下降算法

h(x) = Θ0 +Θ1x1+...+Θixi

J(Θ)= 1/2 *∑(i from 1 to m) (h(Θ)(x (i) - y(i))^2

Θ(i) := Θ(i) - α * (?/?Θ(i))J(Θ)

(其過程好比在山上某一點 在當前點找到最一個方向,使得這點下山速度最快,其原理是通過求導,使梯度下降)

技術分享

梯度下降算法的計算步驟:

    1. 先決條件: 確認優化模型的假設函數和損失函數。

    比如對於線性回歸,假設函數表示為 hθ(x1,x2,...xn)=θ0+θ1x1+...+θnxn, 其中θi (i = 0,1,2... n)為模型參數,xi (i = 0,1,2... n)為每個樣本的n個特征值。這個表示可以簡化,我們增加一個特征x0=1 ,這樣hθ(x0,x1,...xn)=i=0nθixihθ。

    同樣是線性回歸,對應於上面的假設函數,損失函數為:

J(θ0,θ1...,θn)=12mi=0m(hθ(x0,x1,...xn)?yi)2J(θ0,θ1...,θn)=12m∑i=0m(hθ(x0,x1,...xn)?yi)2

    2. 算法相關參數初始化:主要是初始化θ0,θ1...,θn,算法終止距離ε以及步長α。在沒有任何先驗知識的時候,我喜歡將所有的θ初始化為0, 將步長初始化為1。在調優的時候再 優化。

    3. 算法過程:

      1)確定當前位置的損失函數的梯度,對於θiθi,其梯度表達式如下:

        ?θiJ(θ0,θ1...,θn)

      2)用步長乘以損失函數的梯度,得到當前位置下降的距離,即α?θiJ(θ0,θ1...,θn)對應於前面登山例子中的某一步。

      3)確定是否所有的θi,梯度下降的距離都小於εε,如果小於ε則算法終止,當前所有的

θi(i=0,1,...n)即為最終結果。否則進入步驟4.

      4)更新所有的θθ,對於θi,其更新表達式如下。更新完畢後繼續轉入步驟1.

        θi:=θi?α?θiJ(θ0,θ1...,θn)

例如 : 對房屋的現有x1 = 尺寸 x2 = 鄰居

則有h(x) = hθ(x) = θ0 +θ1x1+θ2x2 (θ0 = 0)

= ∑ (n from 1 to n) θixi = θTx;

J(θ) = (?/?Θ(i))(1/2 * hθ(x) -y)^2;

J‘(θ) = [hθ(x) -y)]*x(i);

更新步驟 θ(i) := θ(i) - α (hθ(x) - y)*x(i);

(α為學習速度)

通過不斷的叠代更新,減小梯度 直到收斂

在MATLAB下實現

% 設置步長為0.1,f_change為改變前後的y值變化,僅設置了一個退出條件。
syms x;f=x^2;
step=0.1;x=2;k=0;         %設置步長,初始值,叠代記錄數
f_change=x^2;             %初始化差值
f_current=x^2;            %計算當前函數值
ezplot(@(x,f)f-x.^2)       %畫出函數圖像
axis([-2,2,-0.2,3])       %固定坐標軸
hold on
while f_change>0.000000001                %設置條件,兩次計算的值之差小於某個數,跳出循環
    x=x-step*2*x;                         %-2*x為梯度反方向,step為步長,!最速下降法!
    f_change = f_current - x^2;           %計算兩次函數值之差
    f_current = x^2 ;                     %重新計算當前的函數值
    plot(x,f_current,‘ro‘,‘markersize‘,7) %標記當前的位置
    drawnow;pause(0.2);
    k=k+1;
end
hold off
fprintf(‘在叠代%d次後找到函數最小值為%e,對應的x值為%e\n‘,k,x^2,x)

  

運行結果如圖所示:(在octave中實現)  

技術分享

【機器學習】1 監督學習應用與梯度下降