5.4 隨機(jī)和完全的比較
在之前的小節(jié)中(參見(jiàn)5.2節(jié)),我們已經(jīng)知道完全梯度下降法的算法邏輯是對(duì)所有數(shù)據(jù)條都計(jì)算其代價(jià)函數(shù)的梯度值枯跑,然后利用此梯度值的平均值來(lái)更新神經(jīng)網(wǎng)絡(luò)的權(quán)重黄虱。
我們?cè)谥罢勲S機(jī)梯度下降法的時(shí)候稚矿,并沒(méi)有說(shuō)對(duì)于這個(gè)算法的優(yōu)化問(wèn)題。實(shí)際的原因是:隨機(jī)梯度下降就如同隨意從一個(gè)地方向山谷滾石頭捻浦,每次選擇的地方不一樣晤揣,每次滾石頭也不會(huì)記得上一次滾的結(jié)果。這樣的算法是獨(dú)立性很強(qiáng)的朱灿,它意味著數(shù)據(jù)條之間必須有一個(gè)所謂的獨(dú)立同分布的約束條件昧识。也就是說(shuō),有主導(dǎo)這些石頭滾動(dòng)的外勢(shì)能存在盗扒,而且每條數(shù)據(jù)都和別的數(shù)據(jù)互相獨(dú)立跪楞,沒(méi)有關(guān)聯(lián)。概率論里的準(zhǔn)確表達(dá)是每條數(shù)據(jù)都必須滿(mǎn)足相同的分布并且彼此互相獨(dú)立侣灶〉榧溃互相獨(dú)立的字面意思是數(shù)據(jù)條之間本質(zhì)上是互相沒(méi)有關(guān)系的。
對(duì)于獨(dú)立同分布的數(shù)據(jù)集褥影,隨機(jī)梯度下降法無(wú)法有更好的算法效率上的優(yōu)化池户。但是可以對(duì)數(shù)據(jù)集進(jìn)行隨機(jī)抽樣,然后用抽樣的數(shù)據(jù)集進(jìn)行學(xué)習(xí)伪阶,可以得到與完全數(shù)據(jù)集的隨機(jī)抽樣一樣的權(quán)重結(jié)果煞檩。
隨機(jī)梯度下降法對(duì)于數(shù)據(jù)質(zhì)量的要求相當(dāng)高,所以雖然隨機(jī)梯度下降法可以抽樣降低計(jì)算復(fù)雜度栅贴,但實(shí)際上應(yīng)用的范圍不大斟湃。它是梯度下降法里的質(zhì)量檢測(cè)算法。對(duì)于已經(jīng)用別的算法學(xué)習(xí)過(guò)的數(shù)據(jù)檐薯,它有質(zhì)量檢測(cè)的意義凝赛。如果單獨(dú)用隨機(jī)梯度下降來(lái)學(xué)習(xí)注暗,會(huì)有陷入局部最優(yōu)解的風(fēng)險(xiǎn),這里的局部最優(yōu)解和一般的理解不同墓猎。實(shí)際上捆昏,更明確的表達(dá)是,隨機(jī)梯度下降法得到的權(quán)重毙沾,在很多情況下(研究系統(tǒng)中存在隱藏的對(duì)稱(chēng)性骗卜,而這往往是一般情況,否則特征就不能叫做特征了左胞。)寇仓,得到的最優(yōu)解在多個(gè)局域最優(yōu)解處振蕩,結(jié)果并不統(tǒng)一烤宙。如果最終對(duì)多個(gè)解進(jìn)行平均取值遍烦,得到的有很大可能并不是最優(yōu)解,甚至可能是比較差的解躺枕。服猪。所以一般也需要對(duì)這個(gè)算法進(jìn)行改進(jìn),加入退火算法以改善性能拐云。
另一種應(yīng)用場(chǎng)景是邊緣計(jì)算的人工智能罢猪。在這種情形下,計(jì)算機(jī)的內(nèi)存和運(yùn)算能力都十分有限慨丐。但對(duì)于處理單條數(shù)據(jù)量的隨機(jī)梯度下降來(lái)說(shuō)坡脐,恰好適合這樣的場(chǎng)景泄私。它只需要很小的內(nèi)存和極為有限的算力房揭。
完全梯度下降法恰恰是另一個(gè)極端,它大量運(yùn)用矩陣運(yùn)算晌端,而且基本不需要退火算法的輔助捅暴。本節(jié)我們要講的就是完全梯度下降法。
由于完全梯度下降法在權(quán)重更新時(shí)選用的是所有梯度的平均值咧纠,而非自身所在位置的梯度蓬痒。這其實(shí)是非常科學(xué)的一種方案漆羔。還是用山谷來(lái)對(duì)比梧奢,山谷上面各個(gè)點(diǎn)的梯度不一樣,在特征比較多的情形下演痒,甚至有些點(diǎn)的梯度方向上和別的也不一樣亲轨。在這種情形下,誤差函數(shù)對(duì)應(yīng)的谷底就很難用隨機(jī)梯度下降來(lái)找到鸟顺,除非數(shù)據(jù)滿(mǎn)足獨(dú)立同分布惦蚊。但是用完全梯度下降就可以很快找到器虾,因?yàn)殡m然我們不知道每一個(gè)點(diǎn)的下降方向是否嚴(yán)格指向谷底,但多點(diǎn)同時(shí)取均值蹦锋,就可以找到這個(gè)谷底所在的方位兆沙。這是一種定位機(jī)制。如同瀑布一樣莉掂,山上很多條流水可能向各個(gè)方向流動(dòng)葛圃,但匯集成瀑布之后,它們就一同向山谷進(jìn)發(fā)憎妙。所以完全梯度下降法蘊(yùn)含的思想就如同瀑布一樣装悲,以后我們就稱(chēng)之為瀑布下降法。遇到任何小阻礙也不會(huì)影響算法往極值點(diǎn)去尚氛。這是非常大的優(yōu)勢(shì)诀诊,這意味著完全梯度下降法會(huì)無(wú)視特例中的局部最優(yōu)解,而直接找到全局最優(yōu)解阅嘶。但是它的劣勢(shì)是當(dāng)數(shù)據(jù)量很大時(shí)属瓣,對(duì)于計(jì)算機(jī)的內(nèi)存大小以及運(yùn)算速度要求很高。
那么瀑布下降法有沒(méi)有劣勢(shì)呢讯柔?其實(shí)也是有的抡蛙!它把高處的(即誤差大的)數(shù)據(jù)的下降趨緩,把低處(誤差小的)的數(shù)據(jù)下降變快魂迄,甚至可能會(huì)造成低處在全局最優(yōu)點(diǎn)附近振蕩粗截,而且更不能讓人接受的是這種振蕩是無(wú)阻尼的,所以會(huì)讓算法相應(yīng)的誤差到一定程度就無(wú)法下降捣炬。對(duì)于這樣的情形熊昌,就會(huì)造成大量的算力浪費(fèi)。對(duì)此湿酸,比較合理的處理方法是做紫外和紅外截?cái)嘈鲆伲侄吻缶怠H缓笥孟鄳?yīng)的梯度更新相應(yīng)的數(shù)據(jù)推溃。但這樣需要對(duì)數(shù)據(jù)先排序再更新昂利。而排序算法本身是耗費(fèi)算力的,所以在數(shù)據(jù)量很大時(shí)铁坎,需要權(quán)衡引入排序是否能使得算法更有效率蜂奸。最合理的算法是使用篩選法來(lái)讓小誤差直接通過(guò)到下一輪,不更新其權(quán)重硬萍。這就避免了最讓人討厭的誤差振蕩行為扩所。我們將會(huì)在后面章節(jié)的算法優(yōu)化部分來(lái)討論這種處理方法。