中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

百度優(yōu)化網(wǎng)站建設(shè)wordpress外貿(mào)獨(dú)立站

百度優(yōu)化網(wǎng)站建設(shè),wordpress外貿(mào)獨(dú)立站,北京網(wǎng)頁設(shè)計(jì)公司興田德潤在那里,淘寶聯(lián)盟建微網(wǎng)站大綱 驗(yàn)證集loss上升,準(zhǔn)確率也上升(即將overfitting?)訓(xùn)練集loss一定為要為0嗎 Q1. 驗(yàn)證集loss上升,準(zhǔn)確率也上升 隨著置信度的增加,一小部分點(diǎn)的預(yù)測(cè)結(jié)果是錯(cuò)誤的(log lik 給出了指數(shù)級(jí)的懲…

大綱

  • 驗(yàn)證集loss上升,準(zhǔn)確率也上升(即將overfitting?)
  • 訓(xùn)練集loss一定為要為0嗎

Q1. 驗(yàn)證集loss上升,準(zhǔn)確率也上升

隨著置信度的增加,一小部分點(diǎn)的預(yù)測(cè)結(jié)果是錯(cuò)誤的(log lik 給出了指數(shù)級(jí)的懲罰,在損失中占主導(dǎo)地位)。與此同時(shí),大量其他點(diǎn)開始預(yù)測(cè)良好(argmax p=label),主導(dǎo)了預(yù)測(cè)的準(zhǔn)確性。
在這里插入圖片描述


Q2. 訓(xùn)練集loss一定為要為0嗎

一般來說,我們是用訓(xùn)練集來訓(xùn)練模型,但希望的是驗(yàn)證機(jī)的損失越小越好,而正常來說訓(xùn)練集的損失降到一定值后,驗(yàn)證集的損失就會(huì)開始上升,因此沒必要把訓(xùn)練集的損失降低到 0

既然如此,在已經(jīng)達(dá)到了某個(gè)閾值之后,我們可不可以做點(diǎn)別的事情來提升模型性能呢?ICML2020 的論文《Do We Need Zero Training Loss After Achieving Zero Training Error?》回答了這個(gè)問題,不過實(shí)際上它并沒有很好的描述 “為什么”,而只是提出了 “怎么做”

假設(shè)原來的損失函數(shù)是 L ( θ ) \mathcal {L}(\theta) L(θ),現(xiàn)在改為 L ~ ( θ ) \tilde {\mathcal {L}}(\theta) L~(θ)
L ~ ( θ ) = ∣ L ( θ ) ? b ∣ + b (1) \tilde{\mathcal{L}}(\theta)=|\mathcal{L}(\theta)-b|+b\tag{1} L~(θ)=L(θ)?b+b(1)

其中 b b b 是預(yù)先設(shè)定的閾值。當(dāng) L ( θ ) > b \mathcal {L}(\theta)>b L(θ)>b 時(shí) L ~ ( θ ) = L ( θ ) \tilde {\mathcal {L}}(\theta)=\mathcal {L}(\theta) L~(θ)=L(θ),這時(shí)就是執(zhí)行普通的梯度下降;而 L ( θ ) < b \mathcal {L}(\theta)<b L(θ)<b 時(shí) L ~ ( θ ) = 2 b ? L ( θ ) \tilde {\mathcal {L}}(\theta)=2b-\mathcal {L}(\theta) L~(θ)=2b?L(θ),注意到損失函數(shù)變號(hào)了,所以這時(shí)候是梯度上升。因此,總的來說就是以 b b b 為閾值,低于閾值時(shí)反而希望損失函數(shù)變大。論文把這個(gè)改動(dòng)稱為 “Flooding”
這樣做有什么效果呢?論文顯示,在某些任務(wù)中,訓(xùn)練集的損失函數(shù)經(jīng)過這樣處理后,驗(yàn)證集的損失能出現(xiàn) “二次下降(Double Descent)”,如下圖
在這里插入圖片描述

在這里插入圖片描述

如何解釋這個(gè)方法呢?可以想像,當(dāng)損失函數(shù)達(dá)到 b b b 之后,訓(xùn)練流程大概就是在交替執(zhí)行梯度下降和梯度上升。直觀想的話,感覺一步上升一步下降,似乎剛好抵消了。事實(shí)真的如此嗎?我們來算一下看看。假設(shè)先下降一步后上升一步,學(xué)習(xí)率為 ε \varepsilon ε,那么:
θ n = θ n ? 1 ? ε g ( θ n ? 1 ) θ n + 1 = θ n + ε g ( θ n ) \begin{equation}\begin{aligned}&\theta_n = \theta_{n-1} - \varepsilon g(\theta_{n-1})\\ &\theta_{n+1} = \theta_n + \varepsilon g(\theta_n) \end{aligned}\tag{2}\end{equation} ?θn?=θn?1??εg(θn?1?)θn+1?=θn?+εg(θn?)??(2)?

其中 g ( θ ) = ? θ L ( θ ) g (\theta)=\nabla_{\theta}\mathcal {L}(\theta) g(θ)=?θ?L(θ),現(xiàn)在我們有
θ n + 1 = θ n ? 1 ? ε g ( θ n ? 1 ) + ε g ( θ n ? 1 ? ε g ( θ n ? 1 ) ) ≈ θ n ? 1 ? ε g ( θ n ? 1 ) + ε ( g ( θ n ? 1 ) ? ε ? θ g ( θ n ? 1 ) g ( θ n ? 1 ) ) = θ n ? 1 ? ε 2 2 ? θ ∥ g ( θ n ? 1 ) ∥ 2 \begin{equation}\begin{aligned}\theta_{n+1} =&\, \theta_{n-1} - \varepsilon g(\theta_{n-1}) + \varepsilon g\big(\theta_{n-1} - \varepsilon g(\theta_{n-1})\big)\\ \approx&\,\theta_{n-1} - \varepsilon g(\theta_{n-1}) + \varepsilon \big(g(\theta_{n-1}) - \varepsilon \nabla_{\theta} g(\theta_{n-1}) g(\theta_{n-1})\big)\\ =&\,\theta_{n-1} - \frac{\varepsilon^2}{2}\nabla_{\theta}\Vert g(\theta_{n-1})\Vert^2 \end{aligned}\tag{3}\end{equation} θn+1?==?θn?1??εg(θn?1?)+εg(θn?1??εg(θn?1?))θn?1??εg(θn?1?)+ε(g(θn?1?)?ε?θ?g(θn?1?)g(θn?1?))θn?1??2ε2??θ?g(θn?1?)2??(3)?

近似那一步實(shí)際上是使用了泰勒展開,我們將 θ n ? 1 \theta_{n-1} θn?1? 看作 x x x ε g ( θ n ? 1 ) \varepsilon g (\theta_{n-1}) εg(θn?1?) 看作 Δ x \Delta x Δx,由于
g ( x ? Δ x ) ? g ( x ) ? Δ x = ? x g ( x ) \frac{g(x - \Delta x) - g(x)}{-\Delta x} = \nabla_x g(x) ?Δxg(x?Δx)?g(x)?=?x?g(x) 所以
g ( x ? Δ x ) = g ( x ) ? Δ x ? x g ( x ) g(x - \Delta x) = g(x) - \Delta x \nabla_x g(x) g(x?Δx)=g(x)?Δx?x?g(x)

最終的結(jié)果就是相當(dāng)于學(xué)習(xí)率為 ε 2 2 \frac {\varepsilon^2}{2} 2ε2?、損失函數(shù)為梯度懲罰 ∥ g ( θ ) ∥ 2 = ∥ ? θ L ( θ ) ∥ 2 \Vert g (\theta)\Vert^2 = \Vert \nabla_{\theta} \mathcal {L}(\theta)\Vert^2 g(θ)2=?θ?L(θ)2 的梯度下降。更妙的是,改為 “先上升再下降”,其表達(dá)式依然是一樣的(這不禁讓我想起 “先漲價(jià) 10% 再降價(jià) 10%” 和 “先降價(jià) 10% 再漲價(jià) 10% 的故事”)。因此,平均而言,Flooding 對(duì)損失函數(shù)的改動(dòng),相當(dāng)于在保證了損失函數(shù)足夠小之后去最小化 ∥ ? x L ( θ ) ∥ 2 \Vert \nabla_x \mathcal {L}(\theta)\Vert^2 ?x?L(θ)2,也就是推動(dòng)參數(shù)往更平穩(wěn)的區(qū)域走,這通常能提高泛化性(更好地抵抗擾動(dòng)),因此一定程度上就能解釋 Flooding 有作用的原因了

本質(zhì)上來講,這跟往參數(shù)里邊加入隨機(jī)擾動(dòng)、對(duì)抗訓(xùn)練等也沒什么差別,只不過這里是保證了損失足夠小后再加擾動(dòng)

想要使用 Flooding 非常簡(jiǎn)單,只需要在原有代碼基礎(chǔ)上增加一行即可

logits = model(x)
loss = criterion(logits, y)
loss = (loss - b).abs() + b # This is it!
optimizer.zero_grad()
loss.backward()
optimizer.step()

有心是用這個(gè)方法的讀者可能會(huì)糾結(jié)于 b b b 的選擇,原論文說 b b b 的選擇是一個(gè)暴力迭代的過程,需要多次嘗試

The flood level is chosen from b ∈ { 0 , 0.01 , 0.02 , . . . , 0.50 } b\in \{0, 0.01,0.02,...,0.50\} b{0,0.01,0.02,...,0.50}

不過筆者倒是有另外一個(gè)腦洞: b b b 無非就是決定什么時(shí)候開始交替訓(xùn)練罷了,那如果我們從一開始就用不同的學(xué)習(xí)率進(jìn)行交替訓(xùn)練呢?也就是自始自終都執(zhí)行
θ n = θ n ? 1 ? ε 1 g ( θ n ? 1 ) θ n + 1 = θ n + ε 2 g ( θ n ) \begin{equation}\begin{aligned}&\theta_n = \theta_{n-1} - \varepsilon_1 g(\theta_{n-1})\\ &\theta_{n+1} = \theta_n + \varepsilon_2 g(\theta_n) \end{aligned}\tag{4}\end{equation} ?θn?=θn?1??ε1?g(θn?1?)θn+1?=θn?+ε2?g(θn?)??(4)?

其中 ε 1 > ε 2 \varepsilon_1 > \varepsilon_2 ε1?>ε2?,這樣我們就把 b b b 去掉了(引入了 ε 1 , ε 2 \varepsilon_1, \varepsilon_2 ε1?,ε2? 的選擇,天下沒有免費(fèi)的午餐)。重復(fù)上述近似展開,我們就得到
θ n + 1 = θ n ? 1 ? ε 1 g ( θ n ? 1 ) + ε 2 g ( θ n ? 1 ? ε 1 g ( θ n ? 1 ) ) ≈ θ n ? 1 ? ε 1 g ( θ n ? 1 ) + ε 2 ( g ( θ n ? 1 ) ? ε 1 ? θ g ( θ n ? 1 ) g ( θ n ? 1 ) ) = θ n ? 1 ? ( ε 1 ? ε 2 ) g ( θ n ? 1 ) ? ε 1 ε 2 2 ? θ ∥ g ( θ n ? 1 ) ∥ 2 = θ n ? 1 ? ( ε 1 ? ε 2 ) ? θ [ L ( θ n ? 1 ) + ε 1 ε 2 2 ( ε 1 ? ε 2 ) ∥ ? θ L ( θ n ? 1 ) ∥ 2 ] \begin{equation}\begin{aligned} \theta_{n+1} =& \, \theta_{n-1} - \varepsilon_1g(\theta_{n-1})+\varepsilon_2g(\theta_{n-1} - \varepsilon_1g(\theta_{n-1}))\\ \approx&\, \theta_{n-1} - \varepsilon_1g(\theta_{n-1}) + \varepsilon_2(g(\theta_{n-1}) - \varepsilon_1\nabla_\theta g(\theta_{n-1})g(\theta_{n-1}))\\ =&\, \theta_{n-1} - (\varepsilon_1 - \varepsilon_2) g(\theta_{n-1}) - \frac{\varepsilon_1\varepsilon_2}{2}\nabla_{\theta}\Vert g(\theta_{n-1})\Vert^2\\ =&\,\theta_{n-1} - (\varepsilon_1 - \varepsilon_2)\nabla_{\theta}\left[\mathcal{L}(\theta_{n-1}) + \frac{\varepsilon_1\varepsilon_2}{2(\varepsilon_1 - \varepsilon_2)}\Vert \nabla_{\theta}\mathcal{L}(\theta_{n-1})\Vert^2\right] \end{aligned}\tag{5}\end{equation} θn+1?===?θn?1??ε1?g(θn?1?)+ε2?g(θn?1??ε1?g(θn?1?))θn?1??ε1?g(θn?1?)+ε2?(g(θn?1?)?ε1??θ?g(θn?1?)g(θn?1?))θn?1??(ε1??ε2?)g(θn?1?)?2ε1?ε2???θ?g(θn?1?)2θn?1??(ε1??ε2?)?θ?[L(θn?1?)+2(ε1??ε2?)ε1?ε2???θ?L(θn?1?)2]??(5)?

這就相當(dāng)于自始自終都在用學(xué)習(xí)率 ε 1 ? ε 2 \varepsilon_1-\varepsilon_2 ε1??ε2? 來優(yōu)化損失函數(shù) L ( θ ) + ε 1 ε 2 2 ( ε 1 ? ε 2 ) ∥ ? θ L ( θ ) ∥ 2 \mathcal {L}(\theta) + \frac {\varepsilon_1\varepsilon_2}{2 (\varepsilon_1 - \varepsilon_2)}\Vert\nabla_{\theta}\mathcal {L}(\theta)\Vert^2 L(θ)+2(ε1??ε2?)ε1?ε2???θ?L(θ)2 了,也就是說一開始就把梯度懲罰給加了進(jìn)去,這樣能提升模型的泛化性能嗎?《Backstitch: Counteracting Finite-sample Bias via Negative Steps》里邊指出這種做法在語音識(shí)別上是有效的,請(qǐng)讀者自行測(cè)試甄別

效果檢驗(yàn)

我隨便在網(wǎng)上找了個(gè)競(jìng)賽,然后利用別人提供的以 BERT 為 baseline 的代碼,對(duì) Flooding 的效果進(jìn)行了測(cè)試,下圖分別是沒有做 Flooding 和參數(shù) b = 0.7 b=0.7 b=0.7 的 Flooding 損失值變化圖,值得一提的是,沒有做 Flooding 的驗(yàn)證集最低損失值為 0.814198,而做了 Flooding 的驗(yàn)證集最低損失值為 0.809810
在這里插入圖片描述

根據(jù)知乎文章一行代碼發(fā)一篇 ICML?底下用戶 Curry 評(píng)論所言:“通常來說 b b b 值需要設(shè)置成比 'Validation Error 開始上升 ’ 的值更小,1/2 處甚至更小,結(jié)果更優(yōu)”,所以我仔細(xì)觀察了下沒有加 Flooding 模型損失值變化圖,大概在 loss 為 0.75 到 1.0 左右的時(shí)候開始出現(xiàn)過擬合現(xiàn)象,因此我又分別設(shè)置了 b = 0.4 b=0.4 b=0.4 b = 0.5 b=0.5 b=0.5,做了兩次 Flooding 實(shí)驗(yàn),結(jié)果如下圖
在這里插入圖片描述

值得一提的是, b = 0.4 b=0.4 b=0.4 b = 0.5 b=0.5 b=0.5 時(shí),驗(yàn)證集上的損失值最低僅為 0.809958 和 0.796819,而且很明顯驗(yàn)證集損失的整體上升趨勢(shì)更加緩慢。接下來我做了一個(gè)實(shí)驗(yàn),主要是驗(yàn)證 “繼續(xù)腦洞” 部分以不同的學(xué)習(xí)率一開始就交替著做梯度下降和梯度上升的效果,其中,梯度下降的學(xué)習(xí)率我設(shè)為 1 e ? 5 1e-5 1e?5,梯度上升的學(xué)習(xí)率為 1 e ? 6 1e-6 1e?6,結(jié)果如下圖,驗(yàn)證集的損失最低僅有 0.783370在這里插入圖片描述

References

我們真的需要把訓(xùn)練集的損失降低到零嗎?
LossUpAccUp -Github
https://wmathor.com/index.php/archives/1551/

http://www.risenshineclean.com/news/30777.html

相關(guān)文章:

  • 網(wǎng)站維護(hù)需要會(huì)什么海外免費(fèi)網(wǎng)站推廣
  • 網(wǎng)站建設(shè)中代碼怎么自己做網(wǎng)頁
  • 網(wǎng)站設(shè)計(jì)與管理邯鄲百度推廣公司
  • 哪里有國內(nèi)網(wǎng)站建設(shè)公司淄博網(wǎng)站制作
  • 網(wǎng)站建站公司排名優(yōu)化網(wǎng)站的公司哪家好
  • 日照網(wǎng)站建設(shè)千萬別在百度上搜別人名字
  • 杭州灣新區(qū)建設(shè)局網(wǎng)站seo優(yōu)化便宜
  • 學(xué)校網(wǎng)站建設(shè)軟件推薦免費(fèi)的h5制作網(wǎng)站
  • 建設(shè)網(wǎng)站建設(shè)什么掙錢互聯(lián)網(wǎng)品牌營銷公司
  • 蘇州高端網(wǎng)站建設(shè)解釋seo網(wǎng)站推廣
  • 電腦做會(huì)計(jì)從業(yè)題目用什么網(wǎng)站最新新聞事件
  • 建設(shè)銀行網(wǎng)站個(gè)人中心大量微信群推廣代發(fā)廣告
  • axure怎么做網(wǎng)站引流推廣營銷
  • c 網(wǎng)站開發(fā)如何每天10點(diǎn)執(zhí)行任務(wù)東莞有哪些做推廣的網(wǎng)站
  • 浙江疫情最新消息2020seo超級(jí)外鏈工具免費(fèi)
  • 馬云早期在政府做網(wǎng)站學(xué)電商哪個(gè)培訓(xùn)學(xué)校好
  • 日本風(fēng)格網(wǎng)站seo快速優(yōu)化
  • 哪些企業(yè)網(wǎng)站做得好本地推薦本地推薦
  • 南京建設(shè)工程監(jiān)管網(wǎng)站營銷100個(gè)引流方案
  • 怎樣做網(wǎng)站服務(wù)器亞馬遜關(guān)鍵詞搜索工具
  • 做網(wǎng)站要多長時(shí)間重慶森林電影簡(jiǎn)介
  • 自動(dòng)寫作文網(wǎng)站建站模板免費(fèi)下載
  • 如何做招商性網(wǎng)站百度資源搜索平臺(tái)
  • 做代購直接網(wǎng)站下單成都關(guān)鍵詞優(yōu)化報(bào)價(jià)
  • c2c電子商務(wù)網(wǎng)站建設(shè)欄目結(jié)構(gòu)圖最近國際新聞
  • 有沒有好的網(wǎng)站是JSP做的高端網(wǎng)站建設(shè)哪個(gè)好
  • 江西省興贛建設(shè)監(jiān)理咨詢有限公司網(wǎng)站個(gè)人網(wǎng)站建設(shè)
  • 西寧 網(wǎng)站建設(shè)武漢最新疫情
  • dell網(wǎng)站的網(wǎng)站設(shè)計(jì)特色優(yōu)化營商環(huán)境 提升服務(wù)效能
  • 網(wǎng)站建設(shè)解決方中國疫情最新數(shù)據(jù)