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

來源:  量子位
作者:關(guān)注前沿科技
時(shí)間:2021-05-08
17500
有一天,一個(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é)的過程中,他突然想到:干嘛非得定一個(gè)Epoch數(shù)?只要對每個(gè)Batch進(jìn)行獨(dú)立同分布抽樣 (IID Sampling)不就得了。

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

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

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

Epoch多余嗎?

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

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

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

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

反對者認(rèn)為:

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



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

該怎么比較模型?

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



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

因?yàn)榧词乖谙嗤挠布?,不同模型的算法效率不同也會帶來巨大差異?/p>


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

最后,有個(gè)網(wǎng)友以CV模型為例對這個(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萬張時(shí)達(dá)到70%、100萬張時(shí)達(dá)到75%,這可能比50萬張時(shí)達(dá)到50%,100萬張時(shí)達(dá)到80%的還要好。

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

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

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

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

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

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

有人問道:

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

調(diào)參俠:

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


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


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