李宏毅機器學習2016 第三講 梯度下降
視頻鏈接:李宏毅機器學習(2016)(3)_演講?公開課_科技_bilibili_嗶哩嗶哩
課程資源:Hung-yi Lee
課程相關PPT已經打包命名好了:鏈接:https://pan.baidu.com/s/1c3Jyh6S 密碼:77u5
我的第二講筆記:李宏毅機器學習2016 第二講 偏差與方差
Gradient Descent
本講主要講解了關於梯度下降演算法使用的一些技巧(tips)以及最後對梯度下降背後的數學原理和梯度下降的限制進行了講解。
Tip1:Tuning your learning rate
我們知道學習率太大或者太小都會對找到最優點有不好的影響。一個普遍流行且簡單的觀點是在每個epoch後,通過乘以一個因子來減小學習率。因為在一開始,距離目標點較遠就需要一個較大的學習率,經過多個epoch後,就開始接近目標點,因此需要減小學習率。此外,學習率不能夠達到one-size-fits-all,對應不同的參數有不同的學習率。
Adagrad:
在Adagrad中,更新權值不再是僅僅減去學習率乘以偏導數。而是:
此處,
因此,
在Adagrad中,對於學習率不再設置為固定的值,自適應地為各個參數分配不同學習率的演算法。每次迭代過程中,每個參數優化時使用不同的學習率。這是因為同一個更新速率不一定適合所有參數。比如有的參數可能已經到了僅需要微調的階段,但又有些參數由於對應樣本少等原因,還需要較大幅度的調動。主要思想是產生「反差」,看看過去的梯度有多大,再相除,看看反差有點大。 是讓權值隨梯度越大,變化越大;而分母是讓權值梯度越大,變化越小。
Tip2:Stochastic Gradient Descent
簡言之,隨機梯度下降就是每次隨機(或順序)選擇一個訓練樣本計算損失進行權值更新,而不是像批處理那樣對全部的訓練樣例進行損失求和之後再進行權值的更新。
雖然一次僅處理一個樣例就更新權值,會出現更新權值的方向並不按預期的方向,但是在整個訓練樣本上做梯度下降之後,權值的整體更新方向會朝著預期的方向,並且會更快。
Tip3:Feature Scaling
Feature Scaling 可理解為使得特徵的輸入在相同的尺度,也可稱為規範化輸入。
這樣能夠使得損失函數能夠更快得優化。
通常採用的規範化方法是:
Gradient Descent Theory
在使用隨機梯度進行最小化損失函數時,是否每次更新參數後,損失函數的值都會變小?
這個陳述是不正確的。並不能保證每次都朝著預期的方向更新參數。
梯度下降理論的數學支持。
先介紹下泰勒級數。
當然了,泰勒級數同樣可以對多變數進行展開。
基於泰勒級數,只要紅色圈足夠小,在紅色圈內就滿足:
這就變成找到對應的θ1和θ2能夠使得L(θ)最小。並且θ1和θ2滿足:
如果使用泰勒級數的二次展開式的話,就會變成使用牛頓法來求解最優問題了。
但在深度學習中,那並不實用,還是用選擇用一次展示式——梯度下降。
More Limitations of Gradient Descent
在梯度下降中,通常認為是當導數值為0時,就認為求得了最優解了。但是,出現導數為0的點並不僅僅是最優點,還有可能是之前談及的局部最優點,鞍點(不是極大值也不是極小值的臨界點),甚至在「高原」處,導數值小到可以約等於0。這就是梯度下降的限制。
總結:
本講主要講解了能夠使得梯度下降工作更高效的三種方法:
Adagrad、SGD、Feature Scaling。
以及梯度下降理論背後的數學理論知識和梯度下降的限制。
推薦閱讀:
※重新理解Bias和Variance
※XGBoost/GBDT相關blog推薦
※為什麼深度學習突然在改變你的生活
※Python3《機器學習實戰》學習筆記(三):決策樹實戰篇之為自己配個隱形眼鏡
※【西瓜書】周志華《機器學習》學習筆記與習題探討(三)②