梯度下降法即在誤差方向上下降乙個梯度值

2021-10-02 07:16:20 字數 1394 閱讀 8385

如函式 y = 3x, 當x為1時,y= 3,而目標是100, 所以差距為+97;

此時梯度為3, 所以 增加乙個梯度值,即變為y=6x;

此時梯度為6,再帶入x,值變為6, 差距變為+94, 再增加乙個梯度值,即變為y=12x;

此時梯度為12,再帶入x,值變為12, 差距變為+88, 再增加乙個梯度值,即變為y=24x;

此時梯度為24,再帶入x,值變為24, 差距變為+76, 再增加乙個梯度值,即變為y=48x;

此時梯度為48,再帶入x,值變為48, 差距變為+52;再增加乙個梯度值,即變為y=96x;

此時梯度為96,再帶入x,值變為96, 差距變為+4;再增加乙個梯度值,即變為y=192x;

此時梯度為192,再帶入x,值變為192, 差距變為-92;再減去乙個梯度值,即變為y=96x;

此時梯度為96x,好吧,差距又變為+4了..........

如上,此時你就會發現:

1: 梯度下降下能以log2的方式快速逼近誤差

2:最終梯度值可能過大,逼近誤差時,會在最近位置波動,誤差仍然很大

解決方法有:

1:增加學習率,減少變化的梯度值

以最後一次迭代為例,如學習率為0.47,即變為 y=(192-192*0.47)x,即 y=101.16x,代入後,差距變為-1.16....

2:增加乙個能以無限小梯度逼近誤差的中間函式,即增加乙個誤差函式

還以y=3x為例:如增加乙個誤差函式 e =絕 (目標值-輸出值)的絕對值 / (目標值+輸出值);

最後一次迭代為:(192-192*abs (100-192) / (100+192))x = 131.5x, 代入後,差距變為-31.5,

再迭代:(131.5- 131.5 * 31.5/(100+131.5))x = 113.6x, 代入後,差距變為-13.6,

再迭代:(113.6- 113.6* 13.6/(100+113.6))x = 106.3x, 代入後,差距變為-6.3,

再迭代:(106.3- 106.3* 6.3/(100+106.3))x = 103.0x, 代入後,差距變為-3,

再迭代:(103.0- 103* 3/(100+103))x = 101.47x, 代入後,差距變為-1.47

再迭代:(101.47- 101.47* 1.47/(100+101.47))x = 100.72x, 代入後,差距變為-0.72

再迭代:(100.72- 100.72* .72/(100+100.72))x = 100.35x, 代入後,差距變為-0.35

再迭代:(100.35- 100.35* .35/(100+100.35))x = 100.17x, 代入後,差距變為-0.17

.......如此迴圈,以致於最終獲得目標誤差值為止。

當然,深度學習的誤差函式的選取方法與理論還有很多,但基本原理就如上了

梯度下降法(一)入門

梯度下降法 是乙個一階 最優化演算法 通常也稱為 最速下降法 我之前也沒有關注過這類演算法。最近,聽史丹福大學的機器學習課程時,碰到了用梯度下降演算法求解線性回歸問題,於是看了看這類演算法的思想。今天只寫了一些入門級的知識。我們知道,函式的曲線如下 程式設計實現 c code cpp view pl...

梯度下降法 一元線性回歸

import numpy as np import matplotlib.pyplot as plt 載入資料,delimite表示分隔符為逗號 data np.genfromtxt data.csv delimiter x data data 0 y data data 1 plt.scatter...

梯度下降法 一元線性回歸

import numpy as np import matplotlib.pyplot as plt 載入資料 data np.genfromtxt data.csv delimiter x data data 0 y data data 1 plt.scatter x data,y data pl...