前言
我們?cè)谟?xùn)練網(wǎng)絡(luò)的時(shí)候經(jīng)常會(huì)設(shè)置 batch_size穆役,這個(gè) batch_size 究竟是做什么用的,一萬(wàn)張圖的數(shù)據(jù)集旁蔼,應(yīng)該設(shè)置為多大呢锨苏,設(shè)置為 1、10棺聊、100 或者是 10000 究竟有什么區(qū)別呢伞租?
# 手寫(xiě)數(shù)字識(shí)別網(wǎng)絡(luò)訓(xùn)練方法
network.fit(
train_images,
train_labels,
epochs=5,
batch_size=128)
批量梯度下降(Batch Gradient Descent,BGD)
梯度下降算法一般用來(lái)最小化損失函數(shù):把原始的數(shù)據(jù)網(wǎng)絡(luò)喂給網(wǎng)絡(luò)限佩,網(wǎng)絡(luò)會(huì)進(jìn)行一定的計(jì)算葵诈,會(huì)求得一個(gè)損失函數(shù),代表著網(wǎng)絡(luò)的計(jì)算結(jié)果與實(shí)際的差距祟同,梯度下降算法用來(lái)調(diào)整參數(shù)作喘,使得訓(xùn)練出的結(jié)果與實(shí)際更好的擬合,這是梯度下降的含義晕城。
批量梯度下降是梯度下降最原始的形式泞坦,它的思想是使用所有的訓(xùn)練數(shù)據(jù)一起進(jìn)行梯度的更新,梯度下降算法需要對(duì)損失函數(shù)求導(dǎo)數(shù)砖顷,可以想象贰锁,如果訓(xùn)練數(shù)據(jù)集比較大赃梧,所有的數(shù)據(jù)需要一起讀入進(jìn)來(lái),一起在網(wǎng)絡(luò)中去訓(xùn)練豌熄,一起求和授嘀,會(huì)是一個(gè)龐大的矩陣,這個(gè)計(jì)算量將非常巨大锣险。當(dāng)然蹄皱,這也是有優(yōu)點(diǎn)的,那就是因?yàn)榭紤]到所有訓(xùn)練集的情況芯肤,因此網(wǎng)絡(luò)一定在向最優(yōu)(極值)的方向在優(yōu)化夯接。
隨機(jī)梯度下降(Stochastic Gradient Descent,SGD)
與批量梯度下降不同纷妆,隨機(jī)梯度下降的思想是每次拿出訓(xùn)練集中的一個(gè),進(jìn)行擬合訓(xùn)練晴弃,進(jìn)行迭代去訓(xùn)練掩幢。訓(xùn)練的過(guò)程就是先拿出一個(gè)訓(xùn)練數(shù)據(jù),網(wǎng)絡(luò)修改參數(shù)去擬合它并修改參數(shù)上鞠,然后拿出下一個(gè)訓(xùn)練數(shù)據(jù)际邻,用剛剛修改好的網(wǎng)絡(luò)再去擬合和修改參數(shù),如此迭代芍阎,直到每個(gè)數(shù)據(jù)都輸入過(guò)網(wǎng)絡(luò)世曾,再?gòu)念^再來(lái)一遍,直到參數(shù)比較穩(wěn)定谴咸,優(yōu)點(diǎn)就是每次擬合都只用了一個(gè)訓(xùn)練數(shù)據(jù)轮听,每一輪更新迭代速度特別快,缺點(diǎn)是每次進(jìn)行擬合的時(shí)候岭佳,只考慮了一個(gè)訓(xùn)練數(shù)據(jù)血巍,優(yōu)化的方向不一定是網(wǎng)絡(luò)在訓(xùn)練集整體最優(yōu)的方向,經(jīng)常會(huì)抖動(dòng)或收斂到局部最優(yōu)珊随。
小批量梯度下降(Mini-Batch Gradient Descent述寡,MBGD)
小批量梯度下降采用的還是計(jì)算機(jī)中最常用的折中的解決辦法,每次輸入網(wǎng)絡(luò)進(jìn)行訓(xùn)練的既不是訓(xùn)練數(shù)據(jù)集全體叶洞,也不是訓(xùn)練數(shù)據(jù)集中的某一個(gè)鲫凶,而是其中的一部分,比如每次輸入 20 個(gè)衩辟∶牛可以想象,這既不會(huì)造成數(shù)據(jù)量過(guò)大計(jì)算緩慢艺晴,也不會(huì)因?yàn)槟骋粋€(gè)訓(xùn)練樣本的某些噪聲特點(diǎn)引起網(wǎng)絡(luò)的劇烈抖動(dòng)或向非最優(yōu)的方向優(yōu)化不恭。
對(duì)比一下這三種梯度下降算法的計(jì)算方式:批量梯度下降是大矩陣的運(yùn)算叶雹,可以考慮采用矩陣計(jì)算優(yōu)化的方式進(jìn)行并行計(jì)算,對(duì)內(nèi)存等硬件性能要求較高换吧;隨機(jī)梯度下降每次迭代都依賴于前一次的計(jì)算結(jié)果折晦,因此無(wú)法并行計(jì)算,對(duì)硬件要求較低沾瓦;而小批量梯度下降满着,每一個(gè)次迭代中,都是一個(gè)較小的矩陣贯莺,對(duì)硬件的要求也不高风喇,同時(shí)矩陣運(yùn)算可以采用并行計(jì)算,多次迭代之間采用串行計(jì)算缕探,整體來(lái)說(shuō)會(huì)節(jié)省時(shí)間魂莫。
看下面一張圖,可以較好的體現(xiàn)出三種剃度下降算法優(yōu)化網(wǎng)絡(luò)的迭代過(guò)程爹耗,會(huì)有一個(gè)更加直觀的印象耙考。
總結(jié)
梯度下降算法的調(diào)優(yōu),訓(xùn)練數(shù)據(jù)集很小潭兽,直接采用批量梯度下降倦始;每次只能拿到一個(gè)訓(xùn)練數(shù)據(jù),或者是在線實(shí)時(shí)傳輸過(guò)來(lái)的訓(xùn)練數(shù)據(jù)山卦,采用隨機(jī)梯度下降鞋邑;其他情況或一般情況采用批量梯度下降算法更好。
- 本文首發(fā)自: RAIS