【CV】吴恩达机器学习课程笔记第17章
本系列文章如果沒有特殊說明,正文內容均解釋的是文字上方的圖片
機器學習 | Coursera
吳恩達機器學習系列課程_bilibili
目錄
- 17 大規模機器學習
- 17-1 學習大數據集
- 17-2 隨機梯度下降
- 17-3 mini-batch 梯度下降
- 17-4 隨機梯度下降收斂
- 17-5 在線學習機制
- 17-6 map-reduce和數據并行
17 大規模機器學習
17-1 學習大數據集
- 如果數據集中有1億個樣本,那么梯度下降算法的計算量會變得很大
- 如果訓練效果(誤差)的圖像是像左邊的坐標系一樣的話,那么1億個樣本的數據集訓練的效果很可能會比1000個樣本的數據集好
- 而如果圖像像右邊的坐標系一樣的話,1000個樣本的數據集很有可能訓練效果跟1億個樣本的數據集差不多
17-2 隨機梯度下降
原來的梯度下降算法稱為批量梯度下降算法(batch gradient descent),因為要對所有樣本遍歷
下面描述隨機梯度下降算法(stochastic gradient descent)
以線性回歸為例,代價函數為:Jtrain?(θ)=12m∑i=1m(hθ(x(i))?y(i))2J_{\operatorname{train}}(\theta)=\frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}Jtrain?(θ)=2m1?∑i=1m?(hθ?(x(i))?y(i))2
隨機梯度下降的過程:
1.隨機打亂所有數據(將所有樣本重新隨機排列)
2.重復上圖中的循環(最外層的Reapt循環可能需要1到10次)
- 隨機梯度下降算法的每一步怎么走取決于遇到的那個數據集,所以隨機梯度下降算法向中心靠攏的過程是迂回的,不一定每次都是向中心靠攏的
- 而原來的梯度下降算法由于每一次都遍歷了整個數據集,所以他每一次都是向中心靠攏的
每一次更新參數值都是根據一個樣本來更新的,如果第一個樣本和第二個樣本很相近,那么第一個樣本更新完的參數值到第二個樣本的時候,第二個樣本的cost函數(即更新參數那個公式里面減掉的那項)幾乎接近于0了,那么就不會怎么更新參數值了
這個算法應該會先過擬合然后再逐漸的到好的擬合
17-3 mini-batch 梯度下降
- batch梯度下降算法中每一次下降用到了全部的m個樣本
- 隨機梯度下降算法中每一次下降用到了1個樣本
- mini-batch梯度下降算法中每一次下降用到b個樣本
- b稱為mini-batch size,一般取值為10,一般取值范圍為2到100
假設取值為b=10
算法如上圖所示
17-4 隨機梯度下降收斂
在隨機梯度下降算法中,如何判斷是否已經收斂?
- 在每次要更新θ\thetaθ之前,計算這個樣本的cost函數
- 每經歷了1000次循環迭代(遍歷了1000個樣本),就把這1000(也可以是前5000之類的)個樣本的cost函數的平均值輸出出來
上圖是畫出的圖像
- 如果是像左上角的圖像,那么說明算法正在收斂,如果用一個大的學習率α\alphaα,那么可能得到左上角藍色的曲線,如果用小的,就可能是紅色的曲線(收斂相對比較慢,但震蕩的比較小)
- 右上角藍色曲線表示取1000次輸出一次cost函數的均值的曲線,紅色曲線表示取5000次(曲線會比較平滑,但反應會比1000次的慢)
- 左下角藍色曲線表示取1000次(看起來是震蕩的沒有收斂,但是如果換成取5000次可能就能看到紅色的曲線:正在收斂,只是比較慢),但也有可能看到粉色曲線,表示函數沒有在收斂
- 右下角的曲線表示函數是發散的,可能需要縮小學習率α\alphaα
一般學習算法中的學習率α\alphaα是一個常數,所以一般代價函數的值會在最小值附近震蕩,但是如果想要更加靠近最小值的話,可以定義學習率α\alphaα為α=常數1?循環次數?+常數2?\alpha=\frac{\text { 常數1 }}{\text { 循環次數 }+\text { 常數2 }}α=?循環次數?+?常數2??常數1??,讓α\alphaα隨著循環次數的增加而逐漸變小
由于這個方法需要再額外確定兩個參數,所以這個方法用的很少,因為原來的結果已經足夠滿意了
17-5 在線學習機制
可以解決有連續的數據流,想要用算法從中學習的問題
以寄快遞網站為例:用戶在網站上用確定的目的地和始發地來查詢寄件費用,有時用戶會選擇服務(得到一個正樣本y=1y=1y=1),有時不會選擇(得到一個負樣本y=0y=0y=0),需要我們預測選擇我們的服務的概率來給出一個合理的價格
每次多一個數據就更新一次參數值,跟之前的隨機梯度算法很像
這樣的優點是能不斷適應和更新用戶的選擇變化來調整輸出值,但只能適用于有很多用戶數據流入的情況,如果用戶數據很少,不能用這樣的算法
上圖解釋了點擊率預測問題(CTR)的實現
17-6 map-reduce和數據并行
假設用批量梯度下降算法
假設訓練集中共有400個樣本即m=400,那么梯度下降算法中就需要對400個數據進行求和
將訓練集分為4份,用4臺電腦分別求和第1-100、101-200、201-300、301-400的數據,求和完后再匯總到一臺主機上對4個數據進行求和,再進行接下來的運算,這樣運算效率就是原來的4倍
- 只要運算中有求和操作就可以用map-reduce來做
- map-reduce也可以應用于一臺電腦上的多核cpu
- 一般向量化后直接調用線性代數庫來運算,有些線性代數庫在計算中會自動用map-reduce分配多核分工完成計算
總結
以上是生活随笔為你收集整理的【CV】吴恩达机器学习课程笔记第17章的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 狮子座男生和双鱼座女生配吗?
- 下一篇: 【CV】吴恩达机器学习课程笔记第18章