[動手學(xué)深度學(xué)習(xí)-PyTorch版]-7.2優(yōu)化算法-梯度下降和隨機(jī)梯度下降

7.2 梯度下降和隨機(jī)梯度下降

在本節(jié)中塔嬉,我們將介紹梯度下降(gradient descent)的工作原理。雖然梯度下降在深度學(xué)習(xí)中很少被直接使用,但理解梯度的意義以及沿著梯度反方向更新自變量可能降低目標(biāo)函數(shù)值的原因是學(xué)習(xí)后續(xù)優(yōu)化算法的基礎(chǔ)谋右。隨后,我們將引出隨機(jī)梯度下降(stochastic gradient descent)豹爹。

7.2.1 一維梯度下降

image.png
%matplotlib inline
import numpy as np
import torch
import math
import sys
sys.path.append("..") 
import d2lzh_pytorch as d2l
image.png
def gd(eta):
    x = 10
    results = [x]
    for i in range(10):
        x -= eta * 2 * x  # f(x) = x * x的導(dǎo)數(shù)為f'(x) = 2 * x
        results.append(x)
    print('epoch 10, x:', x)
    return results

res = gd(0.2)

輸出:

epoch 10, x: 0.06046617599999997
image.png
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)
image.png

7.2.2 學(xué)習(xí)率

image.png
show_trace(gd(0.05))

輸出:

epoch 10, x: 3.4867844009999995
image.png

image.png
show_trace(gd(1.1))

輸出:

epoch 10, x: 61.917364224000096
image.png

7.2.3 多維梯度下降

image.png

image.png
def train_2d(trainer):  # 本函數(shù)將保存在d2lzh_pytorch包中方便以后使用
    x1, x2, s1, s2 = -5, -2, 0, 0  # s1和s2是自變量狀態(tài)赘艳,本章后續(xù)幾節(jié)會使用
    results = [(x1, x2)]
    for i in range(20):
        x1, x2, s1, s2 = trainer(x1, x2, s1, s2)
        results.append((x1, x2))
    print('epoch %d, x1 %f, x2 %f' % (i + 1, x1, x2))
    return results

def show_trace_2d(f, results):  # 本函數(shù)將保存在d2lzh_pytorch包中方便以后使用
    d2l.plt.plot(*zip(*results), '-o', color='#ff7f0e')
    x1, x2 = np.meshgrid(np.arange(-5.5, 1.0, 0.1), np.arange(-3.0, 1.0, 0.1))
    d2l.plt.contour(x1, x2, f(x1, x2), colors='#1f77b4')
    d2l.plt.xlabel('x1')
    d2l.plt.ylabel('x2')
image.png
eta = 0.1

def f_2d(x1, x2):  # 目標(biāo)函數(shù)
    return x1 ** 2 + 2 * x2 ** 2

def gd_2d(x1, x2, s1, s2):
    return (x1 - eta * 2 * x1, x2 - eta * 4 * x2, 0, 0)

show_trace_2d(f_2d, train_2d(gd_2d))

輸出:

epoch 20, x1 -0.057646, x2 -0.000073
image.png

7.2.4 隨機(jī)梯度下降

image.png
def sgd_2d(x1, x2, s1, s2):
    return (x1 - eta * (2 * x1 + np.random.normal(0.1)),
            x2 - eta * (4 * x2 + np.random.normal(0.1)), 0, 0)

show_trace_2d(f_2d, train_2d(sgd_2d))

輸出:

epoch 20, x1 -0.047150, x2 -0.075628
image.png

可以看到,隨機(jī)梯度下降中自變量的迭代軌跡相對于梯度下降中的來說更為曲折吼拥。這是由于實(shí)驗所添加的噪聲使模擬的隨機(jī)梯度的準(zhǔn)確度下降。在實(shí)際中线衫,這些噪聲通常指訓(xùn)練數(shù)據(jù)集中的無意義的干擾凿可。

小結(jié)

  • 使用適當(dāng)?shù)膶W(xué)習(xí)率,沿著梯度反方向更新自變量可能降低目標(biāo)函數(shù)值授账。梯度下降重復(fù)這一更新過程直到得到滿足要求的解枯跑。
  • 學(xué)習(xí)率過大或過小都有問題。一個合適的學(xué)習(xí)率通常是需要通過多次實(shí)驗找到的白热。
  • 當(dāng)訓(xùn)練數(shù)據(jù)集的樣本較多時敛助,梯度下降每次迭代的計算開銷較大,因而隨機(jī)梯度下降通常更受青睞屋确。

參考文獻(xiàn)

[1] Stewart, J. (2010). Calculus: early transcendentals. 7th ed. Cengage Learning.


注:本節(jié)與原書基本相同纳击,原書傳送門

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市攻臀,隨后出現(xiàn)的幾起案子焕数,更是在濱河造成了極大的恐慌,老刑警劉巖刨啸,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件百匆,死亡現(xiàn)場離奇詭異,居然都是意外死亡呜投,警方通過查閱死者的電腦和手機(jī)加匈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門存璃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人雕拼,你說我怎么就攤上這事纵东。” “怎么了啥寇?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵偎球,是天一觀的道長。 經(jīng)常有香客問我辑甜,道長衰絮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任磷醋,我火速辦了婚禮猫牡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘邓线。我一直安慰自己淌友,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布骇陈。 她就那樣靜靜地躺著震庭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪你雌。 梳的紋絲不亂的頭發(fā)上器联,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機(jī)與錄音婿崭,去河邊找鬼主籍。 笑死,一個胖子當(dāng)著我的面吹牛逛球,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播苫昌,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼颤绕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了祟身?” 一聲冷哼從身側(cè)響起奥务,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎袜硫,沒想到半個月后氯葬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡婉陷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年帚称,在試婚紗的時候發(fā)現(xiàn)自己被綠了官研。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡闯睹,死狀恐怖戏羽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情楼吃,我是刑警寧澤始花,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站孩锡,受9級特大地震影響酷宵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜躬窜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一浇垦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧斩披,春花似錦溜族、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至厕倍,卻和暖如春寡壮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背讹弯。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工况既, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人组民。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓棒仍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親臭胜。 傳聞我的和親對象是個殘疾皇子莫其,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容