Python梯度下降法

本文主要講解梯度下降算法,以及Python的實(shí)現(xiàn)一個(gè)簡單的例子

梯度下降法又稱為最速下降法富岳,是 1847 年有數(shù)學(xué)家柯西提出的拯腮,是解析法中最古老的一種窖式,其他解析方法或是它的變形动壤,活受到啟發(fā)得到,因此它是最優(yōu)化方法的基礎(chǔ)阁簸。

對(duì)于一個(gè)無約束問題的目標(biāo)函數(shù)

可微函數(shù)

是一階連續(xù)可微哼丈。由泰勒展開式得到:

泰勒展開式

選取

迭代方程

其中r(gamma)是迭代步長削祈,這就是梯度下降法脑漫。當(dāng)然由于梯度方向是變化最快的放向,取定x的變化方向?yàn)樘荻鹊姆捶较蛴判遥梢员WC迭代速度最快,當(dāng)然這個(gè)算法的缺點(diǎn)就是

  • 只使用一階導(dǎo)數(shù)羹饰,迭代的速度較慢,控制好步長及初值队秩,否則可能出現(xiàn)迭代不收斂的情況
  • 迭代到靠近極值的時(shí)候,迭代的速度減慢
  • 如果函數(shù)不是凸函數(shù)筒主,則很可能只是局部最優(yōu)解鸟蟹,而不是全局最優(yōu)解乌妙。當(dāng)然極值和最值概念建钥,讀者肯定清楚

接下來給一個(gè)例子幫助理解:

考慮函數(shù) f(x) = x^2 -3x + 5此函數(shù)在x=1.5 時(shí)取得最小值為2.75
迭代初值為x(0)=3,迭代步長為r=0.01

f(x) 的梯度即為函數(shù)的導(dǎo)數(shù)df/dx = 2x - 3
x(n + 1) = x(n) - r df/dx =x(n) - h*(2 x(n) - 3)
x(n + 1) = 0.98 x(n) + 0.03
到此為止泽艘,可以通過求解以上數(shù)列的通項(xiàng)公式奈搜,然后求極限得到最終收斂1.5馋吗。在此我使用迭代1000次得到的結(jié)果為x=1.5000000008414838說明通過求解橫坐標(biāo)的收斂值,最終可以得到函數(shù)的最小值宏粤。

梯度下降法實(shí)現(xiàn)的思路:

  • 通過迭代橫坐標(biāo)最終收斂的值,確定函數(shù)取得極值的橫坐標(biāo)来农。
  • 迭代前后函數(shù)值的差小于某一個(gè)指定常數(shù)eps崇堰,如|f(x) - f(x0)| < eps,則跳出循環(huán)海诲,否則繼續(xù)迭代方程

下面給出兩種實(shí)現(xiàn)方法的Python代碼

def grad_dec(eps=1e-8, delta=0.001):
    """
    :param eps: 函數(shù)值誤差
    :param delta: 迭代步長
    """
    x0 = 3.0
    f = lambda a: a * a - 3.0 * a + 5.0
    while True:
        x = x0 - delta * (2.0 * x0 - 3.0)
        if abs(x - x0) < eps: # 指定橫坐標(biāo)收斂跳出循環(huán)
            break
        x0 = x
    print(x, f(x))


if __name__ == '__main__':
    grad_dec()

輸出結(jié)果為:
1.500004984618336  2.7500000000248463
def grad_dec(eps=1e-8, delta=0.001):
    """
    :param eps: 函數(shù)值誤差
    :param delta: 迭代步長
    """
    x = 3.0
    f = lambda a: a * a - 3.0 * a + 5.0
    while True:
        f_start = f(x)
        x = x - delta * (2.0 * x - 3.0)
        f_end = f(x)
        if f_start - f_end < eps:
            break
    print(x, f(x))


if __name__ == '__main__':
    grad_dec()

輸出結(jié)果為:
1.5015783203943125  2.750002491095267

仔細(xì)看程序,及輸出的精度特幔,你會(huì)發(fā)現(xiàn)什么蚯斯?

我是邊學(xué)邊寫筆記饵较,如果寫的不好的地方,請(qǐng)大神指出循诉。(限于markdown輸出LaTeX數(shù)學(xué)公式不是很方便嵌牺,所以給出公式不是很多)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市募疮,隨后出現(xiàn)的幾起案子僻弹,更是在濱河造成了極大的恐慌,老刑警劉巖蹋绽,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異退敦,居然都是意外死亡蚣抗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門翰铡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人例证,你說我怎么就攤上這事迷捧。” “怎么了漠秋?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我晌该,道長绿渣,這世上最難降的妖魔是什么燕耿? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮淀散,結(jié)果婚禮上蚜锨,老公的妹妹穿的比我還像新娘。我一直安慰自己亚再,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布则剃。 她就那樣靜靜地躺著如捅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪镜遣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天朴肺,我揣著相機(jī)與錄音坚洽,去河邊找鬼。 笑死讶舰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的般甲。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼敷存,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了锚烦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蛉拙,失蹤者是張志新(化名)和其女友劉穎彻亲,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苞尝,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡野来,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了曼氛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡徽级,死狀恐怖聊浅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情低匙,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布欺抗,位于F島的核電站强重,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏间景。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一圾亏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧召嘶,春花似錦、人聲如沸弄跌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽淳玩。三九已至非竿,卻和暖如春蜕着,著一層夾襖步出監(jiān)牢的瞬間红柱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國打工韧骗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留零聚,地道東北人袍暴。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓政模,卻偏偏與公主長得像,于是被迫代替她去往敵國和親淋样。 傳聞我的和親對(duì)象是個(gè)殘疾皇子颂龙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

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