1. 程式人生 > >機器學習&深度學習優化演算法

機器學習&深度學習優化演算法

梯度下降演算法

1.給定資料集X = {x^{(1)},x^{(2)},x^{(3)},...,x^{(n)}}, 資料標記為:Y = {y^{(1)},y^{(2)},y^{(3)},...,y^{(n)}}

   學習器:f(x;w) =w _{1}x _{1} + w _{2}x _{2} + w _{3}x _{3} + ... + w _{n}x _{n}, 學習率:\alpha

   for i = 0 : \infty

   {

        w_{i} = w_{i} + \alpha * 1/m \sum_{i=1}^{m}(y^{i} - f(x^{(i)};w)) * x^{(i)}

   } 

    2.批量梯度下降演算法(BGD)

批量梯度下降演算法又稱之為最速梯度下降,這裡的“批量”指的是全部一起處理的意思。

2.給定資料集X = {x^{(1)},x^{(2)},x^{(3)},...,x^{(n)}}, 資料標記為:Y = {y^{(1)},y^{(2)},y^{(3)},...,y^{(n)}}

   學習器:f(x;w) =w _{1}x _{1} + w _{2}x _{2} + w _{3}x _{3} + ... + w _{n}x _{n}

, 學習率:\alpha

 for i = 0 : \infty

   {

        w_{i} = w_{i} + \alpha * 1/N \sum_{i=1}^{N}(y^{i} - f(x^{(i)};w)) * x_{i}^{(j)}

   } 

這裡的 指的是樣本數量。我們計算一次梯度時,需要計算完所有的資料的誤差梯度,累加後再平均,這就是我們要找的最速下降梯度。也就類似於:“環顧四周”。

    當然,實物具有兩面性,有點是準確,但是在如今大資料的時代,這就造成了巨大的計算困難。

    3.隨機梯度下降演算法(SGD)

2.給定資料集X = {x^{(1)},x^{(2)},x^{(3)},...,x^{(n)}

}, 資料標記為:Y = {y^{(1)},y^{(2)},y^{(3)},...,y^{(n)}}

   學習器:f(x;w) =w _{1}x _{1} + w _{2}x _{2} + w _{3}x _{3} + ... + w _{n}x _{n}, 學習率:\alpha

 for i = 0 : \infty

   {

        隨機選擇一條資料x^{(j)};

        w_{i} = w_{i} + \alpha * (y^{(j)} - f(x^{(j)};w)) * x_{i}^{(j)};

   } 

  SGD最大的好處就是我們不需要考慮資料集的尺寸,我們看見一條資料就修改一條資料,我們的機器學習就可以邊學習邊工作,也就是現在流行的 線上學習(Online Learing)。