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
m1i
=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的思想加速模型的訓練。有的時候資料量會影響演算法的結果,如果樣本資料量很大,使用梯度下降優化引數時,一次調整引數需要計算全量的樣本,非常耗時。如果訓練集和驗證集的...