吳恩達機器學習 第18章 大規模機器學習

2021-09-28 18:00:07 字數 3288 閱讀 6044

min-batch 梯度下降法

mapreduce

決定機器學習效果好壞的不是演算法,而是資料。

大道至簡

首先採用使用少量樣本訓練演算法,如果不能達到效果的情況下,再考慮是否可以通過增加樣本的數量,來提公升演算法:

之前使用的梯度下降法,每次θ

\theta

θ引數的優化,都需要遍歷所有的訓練樣本,也稱之為」batch梯度下降法「。

repeat\sum_^m(h_\theta(x^-y^)x_j^

θj​:=θ

j​−α

m1​∑

i=1m

​(hθ

​(x(

i)−y

(i))

xj(i

)​

(for j=0....n)
如果樣本數量非常大的情況下,這種方式的效率會就會變低,相對而言,隨機梯度下降法的效率會更高一些。

隨機梯度下降法只需要遍歷一次樣本,每次使用乙個樣本來更新θ

\theta

θ引數,每個樣本使用一次後就丟失掉,這樣就大大減少了訪問樣本的次數:

for( i=1;i<=m;i++)(h_\theta(x^-y^)x_j^

θj​:=θ

j​−α

m1​(

hθ​(

x(i)

−y(i

))xj

(i)​

(for j=0....n)
}

前提是訓練之前,需要把樣本隨機打亂,否則可能會對隨機梯度下降的效果造成影響。

如上圖所示,紅色的線代表batch梯度下降,粉色的線代表隨機梯度下降,從圖上可以看出兩者的不同:

隨機梯度下降,有時候接近中心後,一直在中心周圍徘徊,卻無法收斂,怎麼辦呢,請看下節。

本節介紹隨機梯度下降收斂的一種方式:圖形法。

回憶一下代價函式:

j (θ

)=12

m∑i=

1m(h

(xi)

−yi)

2j(θ)=\frac\sum_^^2

j(θ)=2

m1​i

=1∑m

​(h(

xi​)

−yi​

)2為了書寫方便,簡寫為:

c os

t(θ,

(x(i

),y(

i)))

=∑i=

1m(h

(xi)

−yi)

2cost(\theta,(x^,y^))=\sum_^^2

cost(θ

,(x(

i),y

(i))

)=i=

1∑m​

(h(x

i​)−

yi​)

2然後就是計算一批cos

t(θ,

(x(i

),y(

i)))

cost(\theta,(x^,y^))

cost(θ

,(x(

i),y

(i))

)值,比如1000個樣本,然後取平均值來繪圖,注意,要先計算cos

t(θ,

(x(i

),y(

i)))

cost(\theta,(x^,y^))

cost(θ

,(x(

i),y

(i))

)再更新θ

\theta

θ。這個通過多個批次的計算後cos

t(θ,

(x(i

),y(

i)))

cost(\theta,(x^,y^))

cost(θ

,(x(

i),y

(i))

)就能形成一條曲線,觀察曲線的趨勢,對演算法進行調優。下面看看不同的曲線,該如何調優:

學習率α

\alpha

α的優化,是隨機梯度優化的很重要的乙個環節。如果發現曲線開始收斂的效果不錯,但是曲線在臨近全域性最小點時不斷徘徊,無法收斂,這種情況下,使用動態變化的α

\alpha

α效果會比較好:隨時間不斷減少:

α =c

1ite

1+c2

\alpha=\frac

α=ite1

​+c2

​c1​

​ 其中,c1,

c2c_1,c_2

c1​,c2

​是常量,ite

1ite_1

ite1

​指的是迭代次數,這樣α

\alpha

α就會隨著迭代次數的增加而不斷減小。

缺點是需要額外計算c1,

c2c_1, c_2

c1​,c2

​的值。

min-batch梯度下降是界於batch梯度下降和隨機梯度下降之間的一種演算法,每次更新引數的時候,需要計算乙個小批次的樣本,不是乙個(隨機梯度),也不是所有(batch梯度)。

min-batch梯度下降擁有隨機梯度下降同樣的優點,同時要比隨機梯度下降效率更快。計算公式為:

如上圖所示,每次更新θ

\theta

θ,需要計算10個樣本的值。當資料擁有更好的向量話的方式時,乙個批次的樣本可以平行計算,從而提高計算的效率。

缺點就是因為多了乙個引數b(批次大小),增加了演算法的複雜度。

假設有乙個物流**,使用者輸入起點、終點,**給出**,使用者決定是否需要選擇該物流服務,y=1表示選擇,y=0表示不選擇。:=

θj−α

(hθ(

x)−y

)xj\theta:=\theta_j-\alpha(h_\theta(x)-y)x_j

θ:=θj​

−α(h

θ​(x

)−y)

xj​(for ?=0:?)

}只要機器學習演算法能夠表達為對資料集的求和等線性計算,就可以使用map-reduce來提公升效率。

map-reduce可以把求和操作,分布到多台裝置上平行計算,然後通過一台裝置對計算結果進行彙總,從而達到提公升學習效率的目的。目前機器cpu都是多核的,map-reduce也可以在多個核心上進行並行處理,提公升效率。

吳恩達機器學習筆記 18 大規模機器學習

本章講了梯度下降的幾種方式 batch梯度下降 mini batch梯度下降 隨機梯度下降。也講解了如何利用mapreduce或者多cpu的思想加速模型的訓練。有的時候資料量會影響演算法的結果,如果樣本資料量很大,使用梯度下降優化引數時,一次調整引數需要計算全量的樣本,非常耗時。如果訓練集和驗證集的...

吳恩達機器學習筆記 18 大規模機器學習

本章講了梯度下降的幾種方式 batch梯度下降 mini batch梯度下降 隨機梯度下降。也講解了如何利用mapreduce或者多cpu的思想加速模型的訓練。有的時候資料量會影響演算法的結果,如果樣本資料量很大,使用梯度下降優化引數時,一次調整引數需要計算全量的樣本,非常耗時。如果訓練集和驗證集的...

吳恩達機器學習筆記 18 大規模機器學習

本章講了梯度下降的幾種方式 batch梯度下降 mini batch梯度下降 隨機梯度下降。也講解了如何利用mapreduce或者多cpu的思想加速模型的訓練。有的時候資料量會影響演算法的結果,如果樣本資料量很大,使用梯度下降優化引數時,一次調整引數需要計算全量的樣本,非常耗時。如果訓練集和驗證集的...