優(yōu)化算法總結(jié)

機(jī)器學(xué)習(xí)中的無(wú)約束優(yōu)化算法摩渺,包括最小二乘简烤、梯度下降、牛頓/擬牛頓法摇幻;樣本量不算很大横侦,且存在解析解挥萌,可選用最小二乘法,速度快枉侧;樣本量大時(shí)使用梯度下降或牛頓法引瀑,二者區(qū)別是梯度下降是梯度求解,牛頓法是二階Hessian矩陣的逆或者偽逆矩陣求解榨馁,相對(duì)而言憨栽,牛頓法收斂快,但每次迭代比梯度下降長(zhǎng)

1辆影、最小二乘

待補(bǔ)充....

2徒像、梯度下降

在機(jī)器學(xué)習(xí)算法中,模型實(shí)例化后就可以給出明確的目標(biāo)函數(shù)蛙讥,我們的目標(biāo)是使得目標(biāo)函數(shù)的表達(dá)逼近真實(shí)值锯蛀,在優(yōu)化目標(biāo)函數(shù)時(shí),最開(kāi)始的就是梯度下降次慢。
[圖片上傳失敗...(image-1fa3d0-1569724487072)]

梯度下降的思想:

因?yàn)樽兞靠臻g中的某一點(diǎn)沿著梯度方向具有最大的變化率旁涤,因此每一步沿著梯度下降的方向去減小函數(shù)值,能更快達(dá)到優(yōu)化目標(biāo)(如極大/極小值)迫像。

梯度下降的步驟
  • 確認(rèn)優(yōu)化模型和損失函數(shù)
  • 相關(guān)參數(shù)初始化 (如起始位置(默認(rèn)0)劈愚、步長(zhǎng)(學(xué)習(xí)率)、終止距離)
  • 確定當(dāng)前位置的梯度
  • 確定當(dāng)前下降距離
  • 根據(jù)下降的梯度進(jìn)行更新
以線性回歸為例:
  • 對(duì)應(yīng)假設(shè)函數(shù)為:

h_\theta(x_0, x_1,...x_n)=\sum_{i=0}^n \theta_i x_i

損失函數(shù)為:

J(\theta)= \frac{1}{2}\sum_{j=0}^n(h_\theta(x^j)-y_j)^{2}

  • \theta初始都設(shè)置為0闻妓,步長(zhǎng)為0.1, 終止距離為1e-5或者1e-8
  • 當(dāng)前位置梯度:

\frac{\partial}{\partial\theta}J(\theta_0, \theta_1, ..., \theta_n)

  • 下降距離:

\alpha \frac{\partial}{\partial\theta}J(\theta_0, \theta_1, ..., \theta_n)

  • 參數(shù)更新:

\theta = \theta - \alpha\frac{\partial}{\partial \theta}J(\theta)

3菌羽、梯度下降家族

上文中的梯度下降(BGD)存在一個(gè)問(wèn)題,就是在使用梯度更新參數(shù)時(shí)由缆,全部樣本參與梯度運(yùn)算注祖,當(dāng)樣本量很大時(shí)更新參數(shù)變慢和困難

\theta_j:=\theta_j + \alpha \sum_{i=1}^n(y^{(i)}-h_\theta(x^{(i)}))x_j^{(i)}

因此就有了SGD和Mini-Batch GD
其中SGD是每次只選擇一個(gè)樣本進(jìn)行參數(shù)的更新

for i = 1 to m{
  \theta_j := \theta_j + \alpha(y^{i}-h_{\theta}(x^{(i)}))x_j^{(i)}
}

Mini-Batch是每次取其中小批量樣本進(jìn)行參數(shù)的更新,是BGD和SGD的折中方案均唉。

4是晨、從SGD到Adam

在深度學(xué)習(xí)領(lǐng)域,優(yōu)化算法得到了極大的發(fā)展舔箭,脈絡(luò)是SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam罩缴。
總體而言,優(yōu)化算法的步驟可分為幾個(gè)部分:
待優(yōu)化的參數(shù):\omega层扶,目標(biāo)函數(shù):J(\omega)箫章,初始學(xué)習(xí)率\alpha,對(duì)每個(gè)epoch t

  1. 計(jì)算目標(biāo)函數(shù)關(guān)于當(dāng)前參數(shù)的梯度:g_t=\nabla f(w_t)
  2. 根據(jù)歷史梯度計(jì)算一階動(dòng)量和二階動(dòng)量
    m_t=\phi(g_1, g_2,...g_t)  V_t=\psi(g_1, g_2,...g_t)
  3. 計(jì)算當(dāng)前時(shí)刻的下降梯度:\eta_t=\alpha \cdot m_t/\sqrt V_t
  4. 根據(jù)下降梯度進(jìn)行更新:\omega_{t+1}=\omega_t - \eta_t

而不同的優(yōu)化算法對(duì)于步驟3和4基本一致怒医,主要差別體現(xiàn)在1和2上

  • SGD 沒(méi)有動(dòng)量的概念炉抒,則m_t = g_tV_t = I^2 ,帶入3就是\eta_t = \alpha \cdot g_t稚叹,SGD的缺點(diǎn)是慢焰薄,可能會(huì)造成在溝壑兩邊震蕩拿诸,停留在局部最優(yōu)點(diǎn)。
  • SGD with Momentum
    改進(jìn)點(diǎn)在于2塞茅,在SGD基礎(chǔ)上引入了一階動(dòng)量亩码,m_t = \beta_1 \cdot m_{t-1} + (1-\beta_1)\cdot g_t,一階動(dòng)量是各個(gè)時(shí)刻梯度方向的指數(shù)移動(dòng)平均野瘦,約等于1/(1-\beta_1)個(gè)時(shí)刻的梯度向量和的平均值描沟。若\beta_1為0.9則t時(shí)刻的梯度由當(dāng)前時(shí)刻與前10個(gè)時(shí)刻的梯度共同決定,此時(shí)之前的時(shí)刻就占主導(dǎo)地位鞭光。
  • SGD with Nesterov Acceleration
    改進(jìn)點(diǎn)在1吏廉,因?yàn)樵赟GD with Momentum中當(dāng)前下降的方向由之前的累積動(dòng)量決定,因?yàn)橐粋€(gè)思路是直接改變梯度的方向惰许,不直接計(jì)算梯度而是計(jì)算按照積累動(dòng)量走一步后的下降方向:

g_t= \nabla f(\omega_t - \alpha \cdot m_{t-1}/\sqrt {V_{t-1}})

再用下一個(gè)點(diǎn)的梯度方向與歷史積累動(dòng)量相結(jié)合席覆,計(jì)算2中當(dāng)前時(shí)刻積累的動(dòng)量。

  • AdaGrad
    引入了二階動(dòng)量汹买,即自適應(yīng)學(xué)習(xí)率佩伤,我們希望經(jīng)常更新的參數(shù),學(xué)習(xí)率低一些晦毙,偶爾更新的參數(shù)生巡,學(xué)習(xí)率大些,度量更新頻率的就是二階動(dòng)量:

V_t=\sum_{i=1}^t g_{t}^2

此時(shí)的學(xué)習(xí)率有\alpha變成了\alpha /\sqrt{V_t}见妒,單調(diào)遞減孤荣,至0.

  • AdaDelta / RMSProp
    對(duì)于二階動(dòng)量,不累積全部梯度须揣,只關(guān)注一段時(shí)間窗口的下降梯度

V_t=\beta_2 * V_{t-1}+(1-\beta_2) g_t^2

  • Adam
    結(jié)合了一階動(dòng)量和二階動(dòng)量垃环,SGD的一階動(dòng)量

m_t=\beta_1 \cdot m_{t-1} + (1-\beta_1) \cdot g_t

加上AdaDelta的二階動(dòng)量:

V_t=\beta_2 * V_{t-1} + (1-\beta_2)g_t^2

  • Nadam
    在adam的基礎(chǔ)上又加上了Nesterov

g_t=\nabla f(\omega_t - \alpha \cdot m_{t-1}/{\sqrt{V_t}})

需要指出的是,常用的Adam和SGD返敬,但是Adam肯能存在不收斂和錯(cuò)過(guò)全局最優(yōu)解的問(wèn)題,所以?xún)?yōu)先使用SGD寥院,也可以先用Adam快速下降劲赠,再SGD調(diào)優(yōu),不過(guò)涉及什么時(shí)候切換算法秸谢,切換后用什么樣的學(xué)習(xí)率的問(wèn)題(Adam用自適應(yīng)的凛澎,SDG得人為給定)

5、牛頓/擬牛頓法

未完待續(xù)....

6估蹄、梯度爆炸塑煎、梯度消失問(wèn)題

在深度網(wǎng)絡(luò)中,使用梯度下降會(huì)引發(fā)梯度爆炸和梯度消失的問(wèn)題臭蚁,梯度消失是因?yàn)榉聪騻鞑ミ^(guò)程中對(duì)梯度的求解會(huì)產(chǎn)生sigmoid導(dǎo)數(shù)和參數(shù)的連乘最铁,sigmoid導(dǎo)數(shù)的最大值為0.25讯赏,權(quán)重一般初始都在0,1之間冷尉,乘積小于1漱挎,多層的話就會(huì)有多個(gè)小于1的值連乘,導(dǎo)致靠近輸入層的梯度幾乎為0雀哨,得不到更新磕谅。梯度爆炸是也是同樣的原因,只是如果初始權(quán)重大于1雾棺,或者更大一些膊夹,多個(gè)大于1的值連乘,將會(huì)很大或溢出捌浩,導(dǎo)致梯度更新過(guò)大放刨,模型無(wú)法收斂。
解決梯度爆炸和梯度消失的方法有:

  • 正則

Loss = (y-\omega^T x)^{2} + \alpha ||W||^{2}

正則的方法主要是針對(duì)梯度爆炸嘉栓,加入正則項(xiàng)使得權(quán)值\omega不至于太大宏榕,一定程度上避免梯度爆炸的發(fā)生。

  • 改變激活函數(shù)
    一般是Relu激活函數(shù)侵佃,因?yàn)樵谡龜?shù)部分其導(dǎo)數(shù)為1也就解決了累乘時(shí)梯度爆炸和梯度消失的問(wèn)題麻昼,同時(shí)因計(jì)算方便也加速了網(wǎng)絡(luò)的訓(xùn)練。因負(fù)數(shù)部分直接置為0會(huì)導(dǎo)致一些神經(jīng)元無(wú)法激活馋辈,因此可采用Leaky Relu
  • BN
    Batch Normalization即批規(guī)范化抚芦,
    BN加速網(wǎng)絡(luò)收斂速度,提升訓(xùn)練穩(wěn)定性的效果
    更加詳細(xì)的關(guān)于BN的解釋見(jiàn):
  • 殘差結(jié)構(gòu)
    殘差網(wǎng)絡(luò)的設(shè)計(jì)就是為了解決神經(jīng)網(wǎng)絡(luò)層數(shù)增加時(shí)造成的梯度消失問(wèn)題迈螟,
  • 類(lèi)似lstm由*變+

參考文章:
https://zhuanlan.zhihu.com/p/32230623
https://www.cnblogs.com/pinard/p/5970503.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末叉抡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子答毫,更是在濱河造成了極大的恐慌褥民,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洗搂,死亡現(xiàn)場(chǎng)離奇詭異消返,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)耘拇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)撵颊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人惫叛,你說(shuō)我怎么就攤上這事倡勇。” “怎么了嘉涌?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵妻熊,是天一觀的道長(zhǎng)夸浅。 經(jīng)常有香客問(wèn)我,道長(zhǎng)固耘,這世上最難降的妖魔是什么题篷? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮厅目,結(jié)果婚禮上番枚,老公的妹妹穿的比我還像新娘。我一直安慰自己损敷,他們只是感情好葫笼,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著拗馒,像睡著了一般路星。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诱桂,一...
    開(kāi)封第一講書(shū)人閱讀 49,816評(píng)論 1 290
  • 那天洋丐,我揣著相機(jī)與錄音,去河邊找鬼挥等。 笑死友绝,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的肝劲。 我是一名探鬼主播迁客,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼辞槐!你這毒婦竟也來(lái)了掷漱?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤榄檬,失蹤者是張志新(化名)和其女友劉穎卜范,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鹿榜,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡先朦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了犬缨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡棉浸,死狀恐怖怀薛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情迷郑,我是刑警寧澤枝恋,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布创倔,位于F島的核電站,受9級(jí)特大地震影響焚碌,放射性物質(zhì)發(fā)生泄漏畦攘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一十电、第九天 我趴在偏房一處隱蔽的房頂上張望知押。 院中可真熱鬧,春花似錦鹃骂、人聲如沸台盯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)静盅。三九已至,卻和暖如春寝殴,著一層夾襖步出監(jiān)牢的瞬間蒿叠,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工蚣常, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留市咽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓史隆,卻偏偏與公主長(zhǎng)得像魂务,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子泌射,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348