日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

BN与神经网络调优

發(fā)布時(shí)間:2023/11/28 生活经验 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BN与神经网络调优 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

學(xué)習(xí)目標(biāo)

  • 目標(biāo)
    • 知道常用的一些神經(jīng)網(wǎng)絡(luò)超參數(shù)
    • 知道BN層的意義以及數(shù)學(xué)原理
  • 應(yīng)用
    • 無(wú)

2.4.1 神經(jīng)網(wǎng)絡(luò)調(diào)優(yōu)

我們經(jīng)常會(huì)涉及到參數(shù)的調(diào)優(yōu),也稱之為超參數(shù)調(diào)優(yōu)。目前我們從第二部分中講過(guò)的超參數(shù)有

  • 算法層面:

    • 學(xué)習(xí)率\alphaα

    • \beta1,\beta2, \epsilonβ1,β2,?: Adam 優(yōu)化算法的超參數(shù),常設(shè)為 0.9、0.999、10^{-8}10??8??

    • \lambdaλ:正則化網(wǎng)絡(luò)參數(shù),
  • 網(wǎng)絡(luò)層面:

    • hidden units:各隱藏層神經(jīng)元個(gè)數(shù)
    • layers:神經(jīng)網(wǎng)絡(luò)層數(shù)

2.4.1.1 調(diào)參技巧

對(duì)于調(diào)參,通常采用跟機(jī)器學(xué)習(xí)中介紹的網(wǎng)格搜索一致,讓所有參數(shù)的可能組合在一起,得到N組結(jié)果。然后去測(cè)試每一組的效果去選擇。

假設(shè)我們現(xiàn)在有兩個(gè)參數(shù)

\alphaα: 0.1,0.01,0.001,\betaβ:0.8,0.88,0.9

這樣會(huì)有9種組合,[0.1, 0.8], [0.1, 0.88], [0.1, 0.9]…….

  • 合理的參數(shù)設(shè)置
    • 學(xué)習(xí)率\alphaα:0.0001、0.001、0.01、0.1,跨度稍微大一些。
    • 算法參數(shù)\betaβ, 0.999、0.9995、0.998等,盡可能的選擇接近于1的值

注:而指數(shù)移動(dòng)平均值參數(shù):β 從 0.9 (相當(dāng)于近10天的影響)增加到 0.9005 對(duì)結(jié)果(1/(1-β))幾乎沒(méi)有影響,而 β 從 0.999 到 0.9995 對(duì)結(jié)果的影響會(huì)較大,因?yàn)槭侵笖?shù)級(jí)增加。通過(guò)介紹過(guò)的式子理解S_{100} = 0.1Y_{100} + 0.1 * 0.9Y_{99} + 0.1 * {(0.9)}^2Y_{98} + ...S?100??=0.1Y?100??+0.1?0.9Y?99??+0.1?(0.9)?2??Y?98??+...

2.4.1.2 運(yùn)行

通常我們有這么多參數(shù)組合,每一個(gè)組合運(yùn)行訓(xùn)練都需要很長(zhǎng)時(shí)間,但是如果資源允許的話,可以同時(shí)并行的訓(xùn)練多個(gè)參數(shù)模型,并觀察效果。如果資源不允許的話,還是得一個(gè)模型一個(gè)模型的運(yùn)行,并時(shí)刻觀察損失的變化

所以對(duì)于這么多的超參數(shù),調(diào)優(yōu)是一件復(fù)雜的事情,怎么讓這么多的超參數(shù)范圍,工作效果還能達(dá)到更好,訓(xùn)練變得更容易呢?

2.4.2 批標(biāo)準(zhǔn)化(Batch Normalization)

Batch Normalization論文地址:https://arxiv.org/abs/1502.03167

其中最開(kāi)頭介紹是這樣的:

?

訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)很復(fù)雜,因?yàn)樵谟?xùn)練期間每層輸入的分布發(fā)生變化,因?yàn)榍耙粚拥膮?shù)發(fā)生了變化。這通過(guò)要求較低的學(xué)習(xí)率和仔細(xì)的參數(shù)初始化來(lái)減慢訓(xùn)練速度,并且使得訓(xùn)練具有飽和非線性的模型變得非常困難。我們將這種現(xiàn)象稱為** 內(nèi)部協(xié)變量偏移** ,并通過(guò) **標(biāo)準(zhǔn)化層** 輸入來(lái)解決問(wèn)題。我們的方法的優(yōu)勢(shì)在于使標(biāo)準(zhǔn)化成為模型體系結(jié)構(gòu)的一部分,并為每個(gè)培訓(xùn)小批量執(zhí)行標(biāo)準(zhǔn)化。批量標(biāo)準(zhǔn)化允許我們使用更高的學(xué)習(xí)率并且不太關(guān)心初始化。它還可以充當(dāng)調(diào)節(jié)器,在某些情況下可以消除對(duì)Dropout的需求。應(yīng)用于最先進(jìn)的圖像分類模型,批量標(biāo)準(zhǔn)化實(shí)現(xiàn)了相同的精度,培訓(xùn)步驟減少了14倍,并且顯著地超過(guò)了原始模型。使用批量標(biāo)準(zhǔn)化網(wǎng)絡(luò)的集合,我們改進(jìn)了ImageNet分類的最佳發(fā)布結(jié)果:達(dá)到4.9%的前5個(gè)驗(yàn)證錯(cuò)誤(和4.8%的測(cè)試錯(cuò)誤),超出了人類評(píng)估者的準(zhǔn)確性。

首先我們還是回到之前,我們對(duì)輸入特征 X 使用了標(biāo)準(zhǔn)化處理。標(biāo)準(zhǔn)化化后的優(yōu)化得到了加速。

對(duì)于深層網(wǎng)絡(luò)呢?我們接下來(lái)看一下這個(gè)公式,這是向量的表示。表示每Mini-batch有m個(gè)樣本。

  • m個(gè)樣本的向量表示

Z^{[L]} = W^{[L]}A^{[L-1]}+b^{[L]}Z?[L]??=W?[L]??A?[L?1]??+b?[L]??

A^{[L]}=g^{[L]}(Z^{[L]})A?[L]??=g?[L]??(Z?[L]??)

輸入A^{[L-1]}A?[L?1]??, 輸出A^{[L]}A?[L]??

深層網(wǎng)絡(luò)當(dāng)中不止是初始的特征輸入,而到了隱藏層也有輸出結(jié)果,所以我們是否能夠?qū)﹄[層的輸入Z^{[L]}Z?[L]??進(jìn)行標(biāo)準(zhǔn)化,注意這里不是經(jīng)過(guò)激活函數(shù)之后的A^{[L]}A?[L]??

?

2.4.2.1 批標(biāo)準(zhǔn)化公式

所以假設(shè)對(duì)于上圖第二個(gè)四個(gè)神經(jīng)元隱層。記做Z^{[l]}Z?[l]??,那么這一層會(huì)涉及多個(gè)z,所以我們默認(rèn)用z^{[l]}_{[i]}z?[i]?[l]??,為了簡(jiǎn)單顯示去掉了ll層這個(gè)標(biāo)識(shí),所以對(duì)于標(biāo)準(zhǔn)化中的平均值,以及方差

\mu = \frac{1}{m} \sum_i z^{(i)}μ=?m??1??∑?i??z?(i)??

\sigma^2 = \frac{1}{m} \sum_i {(z_i - \mu)}^2σ?2??=?m??1??∑?i??(z?i???μ)?2??

z_{norm}^{(i)} = \frac{z^{(i)} - \mu}{\sqrt{\sigma^2 + \epsilon}}z?norm?(i)??=?√?σ?2??+??????z?(i)???μ??

其中\(zhòng)epsilon?是為了防止分母為0,取值10^{-8}10??8??。這樣使得所有的l層輸入z^{[l]}_{[i]}z?[i]?[l]??為 0,方差為 1。但是原文的作者不想讓隱藏層單元總是含有平均值 0 和方差 1,他認(rèn)為也許隱藏層單元有了不同的分布會(huì)更有意義。因此,我們會(huì)增加這樣的甲酸

\tilde z^{(i)} = \gamma z^{(i)}_{norm} + \beta?z?~???(i)??=γz?norm?(i)??+β

其中,\gammaγ和\betaβ都是模型的學(xué)習(xí)參數(shù)(如同W和b一樣),所以可以用各種梯度下降算法來(lái)更新 γ 和 β 的值,如同更新神經(jīng)網(wǎng)絡(luò)的權(quán)重一樣。

  • 為什么要使用這樣兩個(gè)參數(shù)

如果各隱藏層的輸入均值在靠近0的區(qū)域,即處于激活函數(shù)的線性區(qū)域,不利于訓(xùn)練非線性神經(jīng)網(wǎng)絡(luò),從而得到效果較差的模型。因此,需要用 γ 和 β 對(duì)標(biāo)準(zhǔn)化后的結(jié)果做進(jìn)一步處理。

2.4.2.2 過(guò)程圖

?

每一層中都會(huì)有兩個(gè)參數(shù)\beta, \gammaβ,γ。

注:原論文的公式圖

?

2.4.2.2 為什么批標(biāo)準(zhǔn)化能夠是優(yōu)化過(guò)程變得簡(jiǎn)單

我們之前在原文中標(biāo)記了一個(gè)問(wèn)題叫做叫做"internal covariate shift"。這個(gè)詞翻譯叫做協(xié)變量偏移,但是并不是很好理解。那么有一個(gè)解釋叫做?在網(wǎng)絡(luò)當(dāng)中數(shù)據(jù)的分布會(huì)隨著不同數(shù)據(jù)集改變?。這是網(wǎng)絡(luò)中存在的問(wèn)題。那我們一起來(lái)看一下數(shù)據(jù)本身分布是在這里會(huì)有什么問(wèn)題。

?

也就是說(shuō)如果我們?cè)谟?xùn)練集中的數(shù)據(jù)分布如左圖,那么網(wǎng)絡(luò)當(dāng)中學(xué)習(xí)到的分布狀況也就是左圖。那對(duì)于給定一個(gè)測(cè)試集中的數(shù)據(jù),分布不一樣。這個(gè)網(wǎng)絡(luò)可能就不能準(zhǔn)確去區(qū)分。這種情況下,一般要對(duì)模型進(jìn)行重新訓(xùn)練。

Batch Normalization的作用就是減小Internal Covariate Shift 所帶來(lái)的影響,讓模型變得更加健壯,魯棒性(Robustness)更強(qiáng)。即使輸入的值改變了,由于 Batch Normalization 的作用,使得均值和方差保持固定(由每一層\gammaγ和\betaβ決定),限制了在前層的參數(shù)更新對(duì)數(shù)值分布的影響程度,因此后層的學(xué)習(xí)變得更容易一些。Batch Normalization 減少了各層 W 和 b 之間的耦合性,讓各層更加獨(dú)立,實(shí)現(xiàn)自我訓(xùn)練學(xué)習(xí)的效果

2.4.2.3 BN總結(jié)

Batch Normalization 也起到微弱的正則化效果,但是不要將 Batch Normalization 作為正則化的手段,而是當(dāng)作加速學(xué)習(xí)的方式。Batch Normalization主要解決的還是反向傳播過(guò)程中的梯度問(wèn)題(梯度消失和爆炸)。

2.4.3 總結(jié)

  • 掌握基本的超參數(shù)以及調(diào)參技巧
  • 掌握BN的原理以及作用

總結(jié)

以上是生活随笔為你收集整理的BN与神经网络调优的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。