駐點(diǎn)和鞍點(diǎn)梯度下降法是一種求解函數(shù)極值的方法,函數(shù)在某一點(diǎn)的梯度是一個(gè)向量,,梯度方向?yàn)楹瘮?shù)值變化最快的方向(也就是取得最大方向?qū)?shù)的方向),。 因此,當(dāng)機(jī)器學(xué)習(xí)模型的損失函數(shù)是凸函數(shù)時(shí),,采用梯度下降法,,只要步長(zhǎng)足夠小,那么一定可以收斂于最小值點(diǎn),。例如,,前面介紹的線性回歸和邏輯回歸,它們的損失函數(shù)就是凸函數(shù),。 但是多層損失函數(shù)的損失函數(shù)不再是凸函數(shù),,而是一個(gè)復(fù)雜的非凸函數(shù)。非凸函數(shù)可能有不止一個(gè)極值點(diǎn),,例如,,在下面函數(shù)中, 但是,,如果不幸陷入了這個(gè)極小值點(diǎn), 下圖為三維空間中的函數(shù)曲面,, 另外,,對(duì)于非凸函數(shù),,導(dǎo)數(shù)為0的點(diǎn)不一定都是極值點(diǎn),,例如,,在下圖曲線中, 在下圖所示的空間曲面上,, 對(duì)于非凸函數(shù),在局部極小值點(diǎn)或者鞍點(diǎn),,梯度接近與0,,無(wú)法提供向哪個(gè)方向更新的信息,迭代就會(huì)停止,,也可能并沒(méi)有到達(dá)梯度恰好為0的位置,,而是在這個(gè)點(diǎn)的旁邊很近的地方來(lái)回震蕩,陷入局部極小值區(qū)域,,很難從這里逃脫出去,,到達(dá)全局最小值的位置,,因此,對(duì)于多層神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō),,使用梯度下降法,,無(wú)法保證一定可以到達(dá)最小值點(diǎn),這也是神經(jīng)網(wǎng)絡(luò)被詬病的原因之一,。 我們只能夠盡量改進(jìn)訓(xùn)練方法,,調(diào)整參數(shù),優(yōu)化算法,,使其盡可能的收斂與全局最小值點(diǎn)。 通過(guò)上節(jié)課的學(xué)習(xí),,我們知道小批量梯度下降算法是訓(xùn)練大規(guī)模數(shù)據(jù)集的首選算法,。 影響小批量梯度下降法的主要因素這是,一元線性回歸采用小批量梯度下降算法時(shí)的損失函數(shù),, 下面就分別從上述幾點(diǎn)入手,來(lái)改進(jìn)和優(yōu)化訓(xùn)練算法,。 1,、每次抽取的小批量樣本的選擇在批量梯度下降法中,每次訓(xùn)練都使用整個(gè)樣本集中的所有數(shù)據(jù),,因此,,不存在樣本這個(gè)不確定因素,而在小批量梯度下降法中,,每次選擇不同的小批量樣本,,損失函數(shù)是這個(gè)小批量中所有樣本的殘差總和,這些樣本的屬性值 xi 和 標(biāo)簽值 yi 也成為了損失函數(shù)中的自變量,。也就是說(shuō),,每一次迭代的梯度會(huì)受到抽樣的影響,為了盡可能的減少樣本對(duì)訓(xùn)練的影響,,在每輪訓(xùn)練之前,,最好打亂樣本順序,使其盡可能的均勻分布,,然后再?gòu)闹幸来纬槿⌒∨繕颖炯?/p> 這就好像我們?cè)诖驌淇伺浦?,總是要先洗牌一樣,特別是有些數(shù)據(jù)集中的數(shù)據(jù)是自然排列的,,連續(xù)的樣本直接有著高度的相關(guān)性,。 2,、批量中的樣本數(shù)另外,小批量樣本的數(shù)量,,也就是批的數(shù)量,,也會(huì)影響訓(xùn)練的效果。在一定的范圍之內(nèi),,批量中的樣本數(shù)量越來(lái)越多,,梯度方向約越準(zhǔn)確,迭代次數(shù)越少,。但是每次迭代所需要的時(shí)間也就越長(zhǎng),。 因此,當(dāng)批量中的樣本增加到一定程度時(shí),,模型的性能會(huì)開(kāi)始下降,。如果小批量中,樣本的數(shù)量等于整個(gè)數(shù)據(jù)集,, 另一方面,批量中的樣本數(shù)量越少,,隨機(jī)性也就越大,,迭代次數(shù)越多。 在一些硬件系統(tǒng)中,使用特定大小的數(shù)組,,可以充分利用處理器資源,,進(jìn)行并行計(jì)算。例如,,在使用 GPU 時(shí),,通常使用 2 的冪數(shù), |
|