在本節中,我們將介紹梯度下降(gradient descent)的工作原理。雖然梯度下降在深度學習中很少被直接使用,但理解梯度的意義以及沿著梯度反方向更新自變數可能降低目標函式值的原因是學習後續優化演算法的基礎。隨後,我們將引出隨機梯度下降(stochastic gradient descent)。
我們先以簡單的一維梯度下降為例,解釋梯度下降演算法可能降低目標函式值的原因。假設連續可導的函式f:
r→rf:r→r f: \mathbb \rightarrow \mathbb
x的值較接近最優解。
def
gd(eta)
: x =
10 results =
[x]for i in
range(10
):x -= eta *
2* x # f(x) = x * x的導數為f'(x) = 2 * x
print
('epoch 10, x:'
, x)
return results
res = gd(
0.2)
copy to clipboard
error
copied
輸出:
下面將繪製出自變數epoch 10, x: 0.06046617599999997
copy to clipboarderror
copied
xx x
x的迭代軌跡。
def
show_trace
(res)
:n =
max(
abs(
min(res)),
abs(
max(res)),
10)f_line = np.arange(
-n, n,
0.1)
d2l.set_figsize(
)d2l.plt.plot(f_line,
[x x for x in f_line]
)d2l.plt.plot(res,
[x x for x in res]
,『-o』
)d2l.plt.xlabel(
『x』)
d2l.plt.ylabel(
『f(x)』
)
show_trace(res)
copy to clipboard
error
copied
上述梯度下降演算法中的正數
ηη \eta
x的值依然與最優解存在較大偏差。
輸出:show_trace(gd(
copy to clipboard0.05
))
error
copied
如果使用過大的學習率,∣ηepoch 10, x: 3.4867844009999995
copy to clipboarderror
copied
f′(x
)∣∣ηf′(x)∣ \left|\eta f'(x)\right|x=
0並逐漸發散。
輸出:show_trace(gd(
copy to clipboard1.1)
)
error
copied
在了解了一維梯度下降之後,我們再考慮一種更廣義的情況:目標函式的輸入為向量,輸出為標量。假設目標函式f:epoch 10, x: 61.917364224000096
copy to clipboarderror
copied
rd→r
f:rd→r f: \mathbb^d \rightarrow \mathbb
u來最小化方向導數
深度學習(七)梯度下降法
應用機器學習演算法時,我們通常採用梯度下降法來對採用的演算法進行訓練。其實,常用的梯度下降法還具體包含有三種不同的形式,它們也各自有著不同的優缺點。總結如下 下面我們以線性回歸演算法來對三種梯度下降法進行比較。一般線性回歸函式的假設函式為 對應的能量函式 損失函式 形式為 下圖為乙個二維引數 0和 ...
吳恩達深度學習 2 4 梯度下降
在上一節中學習了邏輯回歸模型,也知道了損失函式,損失函式是衡量單一訓練樣例的效果,還知道了成本函式,成本函式用於衡量引數w和b的效果,在全部訓練集上來衡量,下面我們討論如何使用梯度下降法來訓練或學習訓練集上的引數w和b。回歸一下,以下圖中是熟悉的邏輯回歸演算法,第二行是成本函式,成本函式j是引數w和...
Pytorch 深度學習 Day03 梯度下降
對於目標函式 f x 如果 f x 在 x 上的值比在 x 鄰近的其他點的值更小,那麼 f x 可能是乙個區域性最小值 local minimum 如果 f x 在 x 上的值是目標函式在整個定義域上的最小值,那麼 f x 是全域性最小值 global minimum 深度學習模型的目標函式可能有若...