【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 17—Large Scale Machine Learning 大规模机器学习...
Lecture17 Large Scale Machine Learning大規模機器學習
17.1 大型數據集的學習 Learning With Large Datasets
如果有一個低方差的模型, 通常通過增加數據集的規模,可以獲得更好的結果。
但是如果數據集特別大,則首先應該檢查這么大規模是否真的必要,也許只用 1000個訓練集也能獲得較好的效果,可以繪制學習曲線來幫助判斷。
?
17.2 隨機梯度下降法 Stochastic Gradient Descent
如果必須使用一個大規模的訓練集,則可以嘗試使用隨機梯度下降法(SGD)來代替批量梯度下降法。
隨機梯度下降算法 則首先對訓練集隨機“洗牌”,然后在每一次計算之后便更新參數 θ
?
在批量梯度下降算法還沒有完成一次迭代時,隨機梯度下降算法便已經走出了很遠。但 SGD 不是每一步都是朝著”正確”的方向邁出的。因此雖然會逐漸走向全局最小值的位置,但可能無法到達最小值點,而是在附近徘徊。不過很多時候這已經足夠了。
17.3 小批量梯度下降 Mini-Batch Gradient Descent
小批量梯度下降算法,介于批量梯度下降算法和隨機梯度下降算法之間,每計算常數b次訓練實例,更新一次參數 θ 。
通常會令 b 在 2-100 之間。小批量梯度下降的好處在于可以用向量化的方式來循環b個訓練實例,如果用的線性代數函數庫能支持平行處理,那算法的總體表現將與隨機梯度下降近似。
17.4 隨機梯度下降算法的收斂 Stochastic Gradient Descent Convergence
在批量梯度下降中,可以令代價函數 J 為迭代次數的函數,繪制圖表判斷梯度下降是否收斂。但是,在大規模的訓練集下不現實,因為計算代價太大。
當數據集很大時使用隨機梯度下降算法,這時為了檢查隨機梯度下降的收斂性,我們在每1000次迭代運算后,對最后1000個樣本的cost值求一次平均,將這個平均值畫到圖中。
?下面是可能得到的幾種圖像:
圖1:紅色線的學習率比藍色線要小,因此收斂的慢,最后收斂的更好一些。
圖2:紅線通過對5000次迭代求平均,而不是1000個,得到更加平滑的曲線。
圖3:藍線顛簸不平而且沒有明顯減少。可以增大α來使得函數更加平緩,也許能使其像紅線一樣下降;或者可能仍像粉線一樣顛簸不平且不下降,說明模型本身可能存在一些錯誤。
圖4:如果曲線正在上升,說明算法發散。應該把學習速率α的值減小。
還可以令學習率隨著迭代次數的增加而減小,例如令:
這樣,隨著不斷地靠近全局最小值,學習率會越來越小,迫使算法收斂而非在最小值附近徘徊。
但是通常不需要這樣做便能有非常好的效果,對α進行調整所耗費的計算通常不值得。?
17.5 在線學習 Online Learning
有一種大規模的機器學習機制,叫做在線學習機制。讓我們可以模型化問題。它指的是針對數據流,而非針對離線靜態數據集進行學習。例如,許多在線網站都有持續不斷的用戶流,對于每一個用戶,網站希望能不將數據存儲到數據庫中,便順利地進行算法學習。
在線學習的算法與隨機梯度下降算法有些類似,只對單一的實例進行學習,而非對一個提前定義的訓練集進行循環:
Repeat forever (as long as the website is running) {
Get (x, y) corresponding to the current user
θ: = θj ? α(hθ(x) ? y)xj
(for j = 0: n)
}
一旦對一個數據的學習完成,便可以丟棄它,不需要再存儲。這樣的好處在于可以針對用戶當前行為,不斷更新模型以適應該用戶。慢慢地調試學習到的假設,將其調節更新到最新的用戶行為。
?
17.6 映射化簡和數據并行 Map Reduce and Data Parallelism
映射化簡和數據并行對于大規模機器學習問題而言非常重要。之前提到,批量梯度下降算法計算代價非常大。如果能將數據集分配給多臺計算機,讓每一臺計算機處理數據集的一個子集,然后將結果匯總求和,這樣的方法叫做映射簡化。
例如有 400 個訓練實例,可以將批量梯度下降的求和任務分配給 4 臺計算機進行處理:
如果任何學習算法能夠表達為對訓練集函數的求和,那么便能將這個任務分配給多臺計算機(或者同一臺計算機的不同 CPU 核心),以達到加速處理的目的。例如邏輯回歸:
很多高級的線性代數函數庫能夠利用多核 CPU 的來并行地處理矩陣運算,這也是算法的向量化實現如此重要的緣故(比調用循環快)。
?
轉載于:https://www.cnblogs.com/maxiaodoubao/p/10222170.html
總結
以上是生活随笔為你收集整理的【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 17—Large Scale Machine Learning 大规模机器学习...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BZOJ3233【AHOI2013】找硬
- 下一篇: 外媒分析:iPhone销量低于预期是中国