梯度下降法(gradient descent)是最小化目標(biāo)函數(shù)時(shí)最容易想到的方法馒吴,但是其缺點(diǎn)也很明顯:非常的慢扎运。原因在于,在運(yùn)行梯度下降時(shí)饮戳,需要遍歷整個(gè)訓(xùn)練集豪治,才能進(jìn)行一步梯度下降,為了避免目標(biāo)函數(shù)的振蕩扯罐,學(xué)習(xí)率被限制在一個(gè)很小的范圍內(nèi)负拟,所以每一步梯度下降參數(shù)的增量非常有限,最后的結(jié)果就是算法運(yùn)行起來(lái)很慢歹河。
隨機(jī)梯度下降
一種更快的梯度下降法被稱(chēng)作隨機(jī)梯度下降(stochastic gradient descent)掩浙,對(duì)原始梯度下降做了一些改進(jìn)使得算法運(yùn)行得更快。
設(shè)目標(biāo)函數(shù)(cost function)為
其中為權(quán)重張量秸歧,為某一個(gè)訓(xùn)練樣本點(diǎn)厨姚。原始梯度下降的權(quán)重更新公式為
隨機(jī)梯度下降的基本原理是用某個(gè)隨機(jī)的來(lái)替代整個(gè),設(shè)為那么原公式就變得簡(jiǎn)單起來(lái)
也就是說(shuō)只用計(jì)算一個(gè)訓(xùn)練樣本的梯度就能進(jìn)行一步梯度更新键菱,效率大大提高谬墙。下面一個(gè)很自然的問(wèn)題就是:該算法是否能收斂到最小值(附近)?答案是肯定的经备。由于
那么當(dāng)學(xué)習(xí)率取某些值的時(shí)候拭抬,在期望的意義下是收斂的,更加精細(xì)的證明可以看 這篇論文侵蒙。
即便隨機(jī)梯度下降在期望意義下收斂造虎,但在極小點(diǎn)附近
這降低了梯度下降的精度,所以后來(lái)衍生了SAG纷闺,SVRG算凿,SDCA算法(先在這里挖個(gè)坑),根本目的就在于降低訓(xùn)練集方差導(dǎo)致的梯度方差急但,從而提升精度澎媒。
Mini-Batch梯度下降
Mini-Batch梯度下降也叫小批量梯度下降,基本原理是結(jié)合了原始的梯度下降(批量梯度)和隨機(jī)梯度下降的一種折中方案波桩。
具體來(lái)說(shuō)戒努,該算法將訓(xùn)練集分成若干個(gè)Mini-Batch(設(shè)為n),每個(gè)Mini-Batch含有相同的樣本數(shù)量(設(shè)為k),計(jì)算過(guò)程變?yōu)椋好勘闅v一個(gè)Mini-Batch更新一次梯度储玫。
上述過(guò)程為遍歷一次訓(xùn)練集所進(jìn)行的梯度更新侍筛。顯然,當(dāng)Mini-Batch中batch size設(shè)置為1時(shí)撒穷,就是隨機(jī)梯度法匣椰,當(dāng)batch-size設(shè)置為m(訓(xùn)練集大小)時(shí)端礼,就是原始梯度(批量梯度)法禽笑。所以Mini-Batch是批量梯度和隨機(jī)梯度的一種折中方案。在精度和速度上都做了一些取舍蛤奥。
至此佳镜,我們已經(jīng)學(xué)習(xí)了隨機(jī)梯度和Mini-Batch梯度下降,實(shí)踐中凡桥,Mini-Batch梯度要用得更多一些蟀伸。