
這一小節介紹隨機梯度下降法(stochastic gradient descent)在神經網絡中的使用,這里首先回顧了第三講中介紹的線性神經網絡的誤差曲面(error surface),如下圖所示。線性神經網絡對應的誤差曲面的縱截面如碗裝,橫截面則如一組同心的橢圓。梯度下降法的作用就是不斷調整參數,使得模型的誤差由“碗沿”降到“碗底”,參數由橢圓外部移動到橢圓的中心附近。當然,這里說的是只有兩個參數的情況,參數更多的情況則更復雜。
下圖給出了梯度方向對梯度改變大小的影響。
下圖說明了學習步長(learning rate)對損失函數改變的影響。過大的學習速率會導致損失函數越來越大,模型距離最優解(或次優解)越來越遠。
上面是模型在所有的訓練數據上做完梯度下降法之后再對參數進行修正的,這叫做批量梯度下降法(batch gradient descent)。而隨機梯度下降法則是每一次計算某一個訓練數據上的梯度或者某一組訓練數據(訓練數據集的一個很小的子集)的梯度,然后更新參數。在每一個訓練數據上計算梯度然后更新參數的稱之為在線學習(online learning),在一小組訓練數據上計算梯度然后更新參數的稱之為小批量梯度下降法(mini-batch gradient descent),后者的效果可能比前者好一些。
下圖是對使用mini-batch gradient descent的幾點建議。
A bag of tricks for mini-batch gradient descent
這一小節介紹使用小批量梯度下降法(mini-batch gradient descent)的一些技巧。下圖是初始化權值參數的技巧。
下圖介紹的是shifting the inputs,其是指給輸入的每一個分量加上一個常數值,使不得輸入的平均值為0。(這里的意思應該是給輸入的每一個分量加上一個常數,不同分量的常數可能不同,使得訓練數據集的所有輸入加在一起是個零向量。當然,這是我自己的理解,可能有出入。)下圖給出了一個二維的線性神經網絡,且給出了兩組訓練數據及其相應向量參數對應的直線??梢钥吹缴厦娴哪莾蓷l直線夾角很小,二者結合在一起就會得到一個很狹長的橢圓的error surface,這樣的是我們不喜歡的error surface,不利于快速找到最優解或次優解。下面我們給輸入的每一個分量都加上一個-100,然后得到的error surface就有一個比較接近圓的形狀,這樣的是我們想要的,便于快速的找到最優解或次優解。另外這里還提到了對隱匿層神經單元的調整,比較了雙曲正切函數(hyperbolic tangent function)和邏輯函數(logistic function),但是這里沒聽明白具體怎么使用。
下圖介紹的是scaling the inputs,該情況針對的是輸入向量的分量取值相差懸殊時,通過給分量乘上一個系數來使得error surface更接近圓形,從而便于快速找到最優解或次優解。
一個更thorough的方法是去除輸入向量不同分量之間的相關性(decorrelate the input components),相關的方法很多,這里給出了主成分分析法(PCA, Principal Components Analysis)。在Andrew Ng的課程中詳細介紹過PCA,詳細內容請閱讀Machine Learning第八周筆記:K-means和降維
。對于線性模型,PCA實現了降維,從而將橢圓形的error surface轉換成了圓形的。
下圖列出了在多層神經網絡中經常遇到的兩個問題。一個是,當我們以很大的學習步長(learning rate)開始訓練網絡時,隱匿單元的權重往往會取到很大的正數或很小的負數,而此時這些權重對應的梯度又很小,給我們造成一種模型好像取得了一個局部最小值。另一個是,在分類網絡中,我們經常使用平方誤差或者交叉熵誤差,一個好的策略是讓每一個輸出單元的輸出情況和實際上的輸出比例相當(實際上輸出1的比例是多少,那么輸出單元的輸出情況一個就是這樣)。神經網絡很快就會發現這一策略,但需要很長的時間才能一點點的優化網絡,看起來就好像模型處于一個局部最小值附近。
下圖提示我們不要太快得減小學習步長(learning rate)。
下面給出四種加快mini-batch learning的方法,前三種我們會在下面一一介紹,最后一種本課程不涉及,感興趣的話請自行搜索。這些方法具有很強的技巧性,需要我們在應用中不斷摸索。
The momentum method
這一小節詳細介紹動量方法(the momentum method),其應用很廣泛,在full-batch learning和mini-batch learning中都可以使用。下面給出了動量方法的intuition和計算公式。
Using momentum speeds up gradient descent learning because
Directions of consistent change get amplified.
Directions of fluctuations get damped.
Allows using much larger learning rates.
Momentum accumulates consistent components of the gradient and attenuates the fluctuating ones. It also allows us to use bigger learning rate because the learning is now more stable.
標準的動量方法(由Nesterov在1983年提出)是在當前位置計算梯度,然后在累積的更新梯度方向上做一個大的跳躍。下面給出了一種更好地動量方法(由IIya Sutskever在2012年提出),其先在先前累積的梯度方向上做一個大的跳躍,再計算新的梯度并修正錯誤。
下面對兩種方法做了比較,圖中藍色箭頭是做兩次標準動量方法得到的;而圖中棕色箭頭是改進動量方法先做的一次大跳躍得到的,紅色箭頭是修正,綠色箭頭是進行一次改進動量方法得到的??梢钥吹?,改進的比標準的要快很多。
Adaptive learning rates for each connection
這一小節介紹the separate, adaptive learning rate for each connection(針對網絡中每個連接的自適應學習步長)。其思想是在神經網絡的每一個連接處都應該有該連接自己的自適應學習步長,并在我們調整該連接對應的參數時調整自己的學習步長:如果權值參數修正梯度,那就應該減小步長;反之,應該增大步長。
下圖給出了intuition。我的理解是在多層神經網絡中,不同層的梯度通常相差懸殊,最開始的幾層對應的梯度可能比最后幾層權值對應的梯度小幾個數量級。另外一方面,網絡中每一單元又受其扇入單元的影響,為了修正一個同樣的錯誤,各個單元的“學習步長”應該是不同的。
一個可行的方法是有一個全局的學習步長,然后對每一個權值參數有一個local gain,用gij表示。初始時gij均取值為1,后每次迭代根據權值梯度的變化情況作出調整,具體調整公式如下圖所示。
下圖列出了幾種提高自適應學習步長性能的幾個技巧。
Rmsprop: Divide the gradient by a running average of its recent magnitude
這一小節介紹rmsprop算法。在網上找到一個python模塊——climin,一個做優化的機器學習包,里面包含了很多優化算法。
首先介紹rprop算法。前面我們說過,不同權值參數的梯度的數量級可能相差很大,因此很難找到一個全局的學習步長。這時,我們想到了在full-batch learning中僅靠權值梯度的符號來選擇學習步長。rprop算法正是采用這樣的思想:對于網絡中的每一個權值參數,當其對應的前面兩個梯度符號相同時,則增大該權值參數對應的學習步長;反之,則減小對應的學習步長。并且,rprop算法將每一個權值對應的學習步長限制在百萬分之一到50之間。
下圖解釋了prop算法為什么不能應用于mini-batch learning中。因為prop算法違背了隨機梯度下降的原理:假設有一個在線學習系統,初始的學習步長較小,在其上應用prop算法。這里有十組訓練數據,前九組都使得梯度符號與之前的梯度符號相同,那么學習步長就會增加九次;而第十次得來的梯度符號與之前的相反,那么學習步長就會減小一次。這樣一個過程下來,學習步長會增長很多,如果系統的訓練數據集非常之大,那學習步長可能頻繁的來回波動,這樣肯定是不利于學習的。
設想是否存在這樣一種算法,其既能保持rprop算法的健壯性,又能應用在mini-batch learning上呢,rmsprop算法應運而生。rmsprop算法不再孤立地更新學習步長,而是聯系之前的每一次梯度變化情況,具體如下。rmsprop算法給每一個權值一個變量MeanSquare(w,t)用來記錄第t次更新步長時前t次的梯度平方的平均值,具體計算方法如下圖所示(注意,其中的系數0.9和0.1只是個例子,具體取值還要看具體情況)。然后再用第t次的梯度除上MeanSquare(w,t)??????????????√得到學習步長的更新比例,根據此比例去得到新的學習步長。按我的理解,如果當前得到的梯度為負,那學習步長就會減小一點點;如果當前得到的梯度為正,那學習步長就會增大一點點。這里的MeanSquare(w,t)??????????????√是名稱中RMS的由來。數據分析師培訓
下圖列出了關于rmsprop算法的一些研究,想了解詳情的話請自行搜索。
最后一張圖是對神經網絡學習方法的一個小總結。
這幾個算法都比較燒腦啊,全是憑大腦推理思考,回頭要好好做實驗。
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25