Epoch不僅過(guò)時(shí),而且有害?Reddit機(jī)器學(xué)習(xí)板塊展開討論

來(lái)源:  量子位
作者:關(guān)注前沿科技
時(shí)間:2021-05-08
17491
有一天,一個(gè)調(diào)參俠在訓(xùn)練一個(gè)深度學(xué)習(xí)模型,要用到的兩個(gè)數(shù)據(jù)集損失函數(shù)不同,數(shù)據(jù)集的大小還不是固定的,每天都在增加。 他有點(diǎn)發(fā)愁,這該怎么設(shè)置Epoch數(shù)呢?于是他在Reddit發(fā)起了討論
有一天,一個(gè)調(diào)參俠在訓(xùn)練一個(gè)深度學(xué)習(xí)模型,要用到的兩個(gè)數(shù)據(jù)集損失函數(shù)不同,數(shù)據(jù)集的大小還不是固定的,每天都在增加。

他有點(diǎn)發(fā)愁,這該怎么設(shè)置Epoch數(shù)呢?

在糾結(jié)的過(guò)程中,他突然想到:干嘛非得定一個(gè)Epoch數(shù)?只要對(duì)每個(gè)Batch進(jìn)行獨(dú)立同分布抽樣 (IID Sampling)不就得了。

為了驗(yàn)證這個(gè)想法,調(diào)參俠去看了很多論文。發(fā)現(xiàn)越來(lái)越多的人介紹他們的訓(xùn)練方法時(shí),只說(shuō)進(jìn)行了多少個(gè)Iteration,而拋棄了Epoch。

他想到,Epoch暗示并強(qiáng)調(diào)了數(shù)據(jù)集是有限的,這不僅麻煩,還有潛在的“危害”。把Epoch去掉,讓循環(huán)嵌套的層數(shù)少一層總是好的。

于是他在Reddit發(fā)起了討論:Epoch是不是過(guò)時(shí)了,甚至還有危害?

Epoch多余嗎?

有人對(duì)這個(gè)觀點(diǎn)表示贊同:

挺有道理,當(dāng)數(shù)據(jù)集大小有很大差距,Batch大小相同時(shí),設(shè)置一樣的Epoch數(shù),豈不是大數(shù)據(jù)集參數(shù)更新的次數(shù)多,小數(shù)據(jù)集參數(shù)更新次數(shù)少了,這似乎不對(duì)勁。

Epoch最大的好處是確保每個(gè)樣本被定期使用。當(dāng)使用IID抽樣時(shí),你只要能想辦法確保所有樣本被同樣頻繁的使用就好了。

但調(diào)參俠覺得讓每個(gè)樣本被定期使用就是他懷疑的點(diǎn),IID抽樣已經(jīng)確保分布相同了,再讓他們同頻率被使用就是一種誤導(dǎo)。

反對(duì)者認(rèn)為:

不能因?yàn)槟阌X得車沒(méi)開在路的正中間就放開方向盤不管了,雖然大撒把不會(huì)改變你正好在路中間的概率,但它增加了方差。



調(diào)參俠最后總結(jié)道,這個(gè)爭(zhēng)議有點(diǎn)像統(tǒng)計(jì)學(xué)里的“頻率派 VS 貝葉斯派”,即認(rèn)為數(shù)據(jù)集到底應(yīng)該是確定的還是不確定的。

該怎么比較模型?

調(diào)參俠還注意到,有人用Batch Loss做損失曲線。他認(rèn)為這比Epoch Loss更有參考價(jià)值。



反對(duì)者覺得,你這個(gè)方式是挺好的,但Epoch依然有用。

因?yàn)榧词乖谙嗤挠布?,不同模型的算法效率不同也?huì)帶來(lái)巨大差異。


像各種Transformer和CNN這種底層代碼實(shí)現(xiàn)都差不多,但是別的模型就可能有很不一樣。比如我們自己的CUDA LSTM實(shí)現(xiàn),至少和CudnnLSTM一樣快,比原版TensorFlow實(shí)現(xiàn)快4倍左右。

最后,有個(gè)網(wǎng)友以CV模型為例對(duì)這個(gè)話題做出精彩總結(jié),列了4種損失可視化方式,并介紹了什么情況該用哪個(gè)。

Loss/Epoch告訴你一個(gè)模型要觀察同一個(gè)圖像多少次才能理解它。

Loss/Iteration告訴你需要多少次參數(shù)更新。當(dāng)比較優(yōu)化器時(shí)這很有用,可以幫助你加快訓(xùn)練速度或達(dá)到更高的精度。

Loss/Total Image Seen告訴你算法看到了多少圖像時(shí)的損失。適合比較兩種算法使用數(shù)據(jù)的效率。

如果你的算法在50萬(wàn)張時(shí)達(dá)到70%、100萬(wàn)張時(shí)達(dá)到75%,這可能比50萬(wàn)張時(shí)達(dá)到50%,100萬(wàn)張時(shí)達(dá)到80%的還要好。

另外,它還消除了Batch Size的影響。這允許在不同GPU上訓(xùn)練的具有不同Batch Size的模型之間進(jìn)行公平地比較。

Loss/Time也很重要,因?yàn)槿绻粋€(gè)新模型減少了100個(gè)Epoch,但每個(gè)Iteration都慢100倍,我就不會(huì)選擇這個(gè)模型。

雖然Loss/Time關(guān)系到硬件的具體表現(xiàn),不夠精準(zhǔn),我不會(huì)把這個(gè)寫到論文里。但在自己的機(jī)器上這是很好的評(píng)估模型的參數(shù)。

使用數(shù)據(jù)增強(qiáng)時(shí)呢?

有網(wǎng)友提出,數(shù)據(jù)增強(qiáng) (Data Augmentation)時(shí)Epoch也有點(diǎn)多余。因?yàn)閿?shù)據(jù)集太小,人為給每個(gè)樣本添加很多只有微小差距的版本,沒(méi)必要讓他們被同頻率使用。

反對(duì)者認(rèn)為,數(shù)據(jù)增強(qiáng)作為正則化的一種形式減少了過(guò)擬合,但你引入的實(shí)際信息在訓(xùn)練模型時(shí)仍然局限于原始數(shù)據(jù)集。如果你的原始數(shù)據(jù)集足夠小,Epoch表示你向模型展示了整個(gè)訓(xùn)練集,仍然是有意義的。

有人問(wèn)道:

你是想表達(dá)“紀(jì)元(Epoch)”的紀(jì)元結(jié)束了嗎?

調(diào)參俠:

對(duì),現(xiàn)在是“時(shí)代(Era)”的時(shí)代。


△無(wú)盡隨機(jī)增強(qiáng)的首字母縮寫ERA意為“時(shí)代”


立即登錄,閱讀全文
版權(quán)說(shuō)明:
本文內(nèi)容來(lái)自于 量子位,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家