梯度下降算法
- 深度學習中梯度下降算法簡介
- 找極小值問題
- 數學上求最小值
- 梯度
- 梯度下降算法
- 找極小值問題在深度學習流程中
- 深度學習整體流程圖
- 求解損失函數的目標
- 權重的更新
深度學習中梯度下降算法簡介
找極小值問題
引子: 我們訓練一個人工智能模型,簡單點說,就是根據數據,調整模型的參數,使模型預測的值和我們數據的值一樣。但一開始肯定不一樣,所以我們引入損失函數,用它來計算,還差多少;差多少我們求出來,我們怎么調整原有模型里面的參數呢?
哎! 調整原有模型的參數目的就是為了使得預測的值和要求值一樣嘛,是不是求一個模型參數可以使得計算出的預測值和要求值之間的差距最小呢?===》這就是找極小值問題
所以本質上就是求損失函數的極小值。
數學上求最小值
拆解示意:
目標: 找到合適的x值,使得f(x)最小。
邏輯
1.任取一點x0,計算在這一點的導數值f(x0)
2.根據導數的正負,決定x0應當調大還是調小;導數為正,那么就調小x;因為增大,y也會增大;導數為負,增大x
3.迭代進行1,2步直到導數為0;或者導數變號了。
什么情況下導數為變號?
那就函數的值,之前在減小,現在在增大了,所以導數就會編號,那么最小值就在其中(救贖之道,就在其中)
梯度
梯度: 可以直接理解就是導數,只是在深度學習中,通常不是一個導數,即對多元函數進去求導。
舉個例子:
一元函數:
原函數:y=5x^2
導函數:y= 10x
即在x=1時,導數值為10
多元函數
三元函數:y=2x^2 + 6z^2 + 7m^3
導函數(即對三個未知數進行偏導求解):y={4x,12z,21m^2}
在[1,1,1]處的梯度為[4,12,21];并且梯度是個向量
都是對函數進行求導,可以用導數去理解梯度
梯度下降算法
釋義: 梯度下降算法就是計算出模型在輸入數據的梯度,然后通過學習率對模型原有的權重參數進行更新的一個邏輯,其中使用的算法有多類,我們會介紹到
找極小值問題在深度學習流程中
深度學習整體流程圖
如下示意圖即為深度學習的流程圖,其中找極小值問題價值就對應著損失函數–>優化器–>模型
求解損失函數的目標
1.損失函數越小,模型越好
2.學習的目標就是損失函數最小化
3.模型的權重影響損失函數
4.通過梯度下降來找最優權重
權重的更新
更新的邏輯
1.根據輸入的x與模型當前的權重,計算預測值y1
2.根據y1和y使用loss函數算計loss
3.根據loss計算模型的權重的梯度
4.使用梯度和學習率,根據優化器來調整模型的權重
更新的方式:
1.所有的樣本一起計算梯度(累加)Gradient descent
2.每次使用一個樣本計算梯度 Stochastic gradient descent
3.每次使用n個樣本計算梯度(累加)Mini-batch gradient descent