引言:
這個系列的筆記是臺大李宏毅老師機器學習的課程筆記
視頻鏈接(bilibili):李宏毅機器學習(2017)
另外已經有有心的同學做了速記并更新在github上:李宏毅機器學習筆記(LeeML-Notes)
很久都沒有用高數及線性代數的知識,很多都生疏了,這節課有很多的數學公式及概念,建議先看一下簡書上的這篇介紹梯度及梯度下降法的文章深入淺出--梯度下降法及其實作,真的是深入淺出,好評如潮,
這里需要知道的是:
- 什么是梯度?
- 為什么要用梯度下降法?
一、什么是梯度
梯度是微積分中一個很重要的概念,梯度的意義在于:
- 在單變數的函式中,梯度其實就是函式的微分,代表著函式在某個給定點的切線的斜率
- 在多變數函式中,梯度是一個向量,向量有方向,梯度的方向就指出了函式在給定點的上升最快的方向
二、為什么要用梯度下降法?
機器學習的目的是根據現有資料集,預測未知資料的解,首先制定預測函式f*, 其次根據預測函式制定出合理的損失函式,損失函式的意義在于如果它的值取得最小值,那么認為原來的預測函式擬合訓練集資料擬合的最好,所以求出損失函式的最小值就很關鍵,而根據上面梯度的概念,梯度的負方向是函式值下降的方向,沿著梯度下降的方向就可以找到損失函式取最小值的解,
三、學習率的設定

學習率設定分以下幾種情況:
- 非常大:導致損失突然變得非常大,無法收斂
- 較大:損失收斂在比較的值上
- 較小:損失雖然一直在減小,但速度很慢
- 正好:損失逐漸減小,最終收斂在一個比較小的值上
調節學習率的一般思想:
- 在一開始學習率取較大值,這樣便于更加快速到達最低點
- 慢慢地學習率取值逐漸縮小,這樣會避免學習率取值過大從而錯過最低點
自適應調節學習率的方法:
- Adagrad
四、Stochastic gradient decent(SGD)隨機梯度下降
相比梯度下降法遍歷所有資料,SGD可以隨機選取某一個樣本計算損失后然后更新梯度,提高訓練速度,但不一定可以得到全域最優解,
博客園上一篇文章寫得比較清楚 [Machine Learning] 梯度下降法的三種形式BGD、SGD以及MBGD
五、Feature scaling 特征縮放/歸一化
為什么要進行特征縮放?
如果樣本的取值范圍過大,在應用梯度下降演算法尋找全域最小值的時候,損失函式需要花費巨大的代價,進行縮放后,多維特征將具有相近的尺度,這將幫助梯度下降演算法更快地收斂,
很多文章都拿吳恩達的課程中圖來舉例:
圖2 歸一化之前的等高線圖
圖3 歸一化之后的等高線圖


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/41264.html
標籤:其他
上一篇:MASK-RCNN(2)
下一篇:Faiss向量相似性搜索
