**:
機器學習在這幾年得到快速發展,乙個很重要的原因是 large dataset(大規模資料),這節課就來介紹用機器學習演算法處理大規模資料的問題。
關於資料的重要性,有一句話是這麼說的:
it』s not who has the bestalgorithmthat wins.然而,當資料量過大時,計算的複雜度會增加,計算成本也會提高。假如資料量是一百萬,使用梯度下降演算法來訓練引數,每走一步,需要對百萬資料進行求和計算,這樣的計算量是極大的。但現實問題總是有大量資料,比如全國的車輛、網民等等。那麼,我們就有必要研究一下如何更好地處理大規模資料。it』s who has the mostdata.
以 linear regression 為例,先開看看我們原來的梯度下降演算法:
圖中給出了要求的model h(x)、目標函式j、以及梯度下降演算法(迴圈部分)。迭代的過程:每一步使用所有資料計算θ,並重新賦值,然後下一步再使用所有資料和上一步求得的θ更新θ。圖中右側,中心點是最優點,θ從起始點,每迭代一步就像中心點移動一步,最終走到中心點求出θ最優值。這裡的問題是,每迭代一步,就需要計算所有資料(如百萬資料)。
上述梯度下降演算法也叫 batch gradient descent 。下面我們做些改進,以適應大資料的情況。
上圖右側,我們改變了迭代形式。對於訓練集中每個資料,fit θ,使得模型符合這個資料,然後用第二個資料走同樣步驟,以此類推。也就是說,每個資料都能獲得目前為止最優的θ。這樣的迭代,我們稱為 stochastic gradient descent 。
需要注意:迭代之前,需要 randomly shuffle training example. 因為資料的不同使用次序,得到的結果不盡相同。
下面給出該演算法的步驟和演示圖:
從演示圖可以看出,θ最後可能圍繞最優點左右搖擺而達不到最優點。θ甚至可能不會converge。那麼,怎麼檢查θ能否converge呢?
每迭代n個資料(eg.1000),使用目前得到的θ,計算這n個資料的cost,並繪製在橫座標為迭代次數、縱座標為cost的座標系中。隨著迭代次數增加,座標系中的曲線越來越長。觀察曲線形狀,如果一直呈下降趨勢,那麼說明可以converge,如果一直上下搖擺或者上公升趨勢,就說明無法converge。對於後者,可以隨著迭代次數的增加逐漸減小α(學習速度),就可以保證θ可以converge。
乙個應用:online learning
online learning 是根據不斷湧入的新資料更新θ從而改進我們的model。例如乙個貨運訂單系統,使用者輸入出發地、目的地,**會給出**,使用者會選擇下單或取消。這裡的model就是,給出使用者特徵和出發地、目的地,通過model得出適當**。這是乙個 logistic regress 問題。每當有乙個使用者進行上述行為,我們的訓練集就動態增加了乙個資料,這樣就可以使用 stochastic gradient descent 動態優化model。
在 batch gradient descent 中,我們每次迭代使用全部m個資料。
在 stochastic gradient descent 中,每次迭代使用1個資料。
在 mini-batch gradient descent 中,每次迭代用b(2-m)個資料,算作一種折中方案。b即為 mini-batch 。
結合上面兩個演算法,第三個演算法很容易理解,如下:
當資料量很大,我們又希望使用 batch gradient descent 時,可以將資料分割並分布到不同 的機器上進行區域性運算,然後彙總。
圖中,把迭代式加和的部分分割開,400個資料分布到4臺機器上,每台機器同步處理100個資料,
最後將四個結果再相加,得到迭代式中加和項的結果。
總的來說,對於大資料,或者分布到不同機器上同步處理,或者使用單資料迭代的演算法。
梯度下降演算法 梯度下降演算法為何叫梯度下降?
首先,我們知道乙個演算法的名字可以很好地去解釋乙個演算法,那麼梯度下降演算法是什麼呢?很明顯的,就是用梯度這個工具來解決問題的一種演算法。解決什麼問題呢?如何在乙個函式曲面的某一點,找到乙個函式值變化最大的方向。比如 我們站在山上的某一點,我們想要以最快的速度上山,但是我們的步子大小是一定的,那麼最...
梯度下降演算法 梯度下降演算法公式推導
場景假設 梯度下降法的基本思想可以模擬為乙個下山的過程。假設這樣乙個場景 乙個人被困在山上,需要從山上下來 找到山的最低點 但此時山上的濃霧很大,導致可視度很低 因此,下山的路徑就無法確定,必須利用自己周圍的資訊一步一步地找到下山的路。這個時候,便可利用梯度下降演算法來幫助自己下山。怎麼做呢,首先以...
梯度下降演算法
梯度下降演算法 最速下降演算法 其是解決引數無約束最優化的一類方法。無約束 對引數沒有任何限制,最多限制為實數,有的根本就沒有限定 在機器學習中,都會讓自己的乙個模型達到乙個最優值 最大或最小等等 這裡有乙個非常簡單的模型 f x wx b 這裡先假設x就是一維情況。如果我們知道f x 與x的對應點...