<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          綜述:神經(jīng)網(wǎng)絡中 Normalization 的發(fā)展歷程

          共 5157字,需瀏覽 11分鐘

           ·

          2020-12-17 18:11

          ↑ 點擊藍字?關(guān)注極市平臺

          作者丨沒頭腦@知乎
          來源丨h(huán)ttps://zhuanlan.zhihu.com/p/75539170
          編輯丨極市平臺

          極市導讀

          ?

          本篇文章用于總結(jié)近年來神經(jīng)網(wǎng)絡中 Normalization 操作的發(fā)展歷程。其中,包括:Local Response Normalization, Batch Normalization, Weight Normalization, Layer Normalization, Instance Normalization, Consine Normalization, Group Normalization。>>明日直播!田值:實例分割創(chuàng)新式突破BoxInst,僅用Box標注,實現(xiàn)COCO 33.2AP!

          目錄
          • Local Response Normalization

          • Batch Normalization

          • Weight Normalization

          • Layer Normalization

          • Instance Normalization

          • Consine Normalization

          • Group Normalization


          1. Local Response Normalization

          LRN 最早應該是出現(xiàn)在 2012 年的 AlexNet 中的,其主要思想是:借鑒“側(cè)抑制”(Lateral Inhibitio)的思想實現(xiàn)局部神經(jīng)元抑制,即使得局部的神經(jīng)元產(chǎn)生競爭機制,使其中相應值較大的將變得更大,響應值較小的將變得更小。此外,作者在論文中指出使用 LRN 能減少其 AlexNet 在 ILSVRC-2012 上的 top-1 錯誤率 1.4% 和 top-5 錯誤率 1.2%,效果較為顯著。


          其中,??表示輸入中第??個 FeatureMap 中位于??的響應值,??表示輸出中第??個 FeatureMap 中位于??的響應值,??都是由驗證集所決定的超參數(shù) (Hyper-Parameter)。論文中的設定為:??。

          在 2015 年的 VGG 中,該論文指出 LRN 在 VGG 并無任何用處:

          此后,隨著 Batch Normalization 等不同 Normalization 的出現(xiàn),LRN 也開始逐漸落寞。

          PyTorch 相關(guān)文檔:

          2. Batch Normalization

          BN 應該算是目前使用最多的 Normalization 操作了,現(xiàn)在甚至可以說是 CNN 網(wǎng)絡的標配。自 2015 年 2 月的 Inception V2(https://arxiv.org/pdf/1502.03167.pdf)?提出之后,也引出了后續(xù)許多不同的 Normalization 的提出。

          作者在論文中指出,提出 Batch Normalization 是目的為了解決 ‘internal covariate shift’ 現(xiàn)象(這個應該是屬于機器學習的問題,我無法進行詳細表達,建議查看其他文章),經(jīng)過測試后,發(fā)現(xiàn)使用 BN 能加速神經(jīng)網(wǎng)絡的收斂速度,并使得神經(jīng)網(wǎng)絡對于初始化的敏感度下降。

          在?深度學習中 Batch Normalization為什么效果好?(https://www.zhihu.com/question/38102762/answer/85238569)中,答者指出其實 BN 解決的是梯度消失問題(Gradient Vanishing Problem),我感覺其實有點道理的。)

          其中,??為輸入數(shù)據(jù),??為數(shù)據(jù)平均值,??為數(shù)據(jù)方差,??和??為學習參數(shù)。此外,??和??是統(tǒng)計量,隨著 Batch 的迭代不斷更新(一般實現(xiàn)都會對其做滑動平均,不然當 Batch Size 較小時,其統(tǒng)計值的波動會很大,導致網(wǎng)絡無法收斂的)。

          在 BN 中,作者之所以加上??和??這兩個仿射參數(shù)(Affine Parameter),是為了使得經(jīng)過 BN 處理后的數(shù)據(jù)仍可以恢復到之前的分布,從而提升了網(wǎng)絡結(jié)構(gòu)的 Capacity,即在做出一定的改變的同時,仍保留之前的能力。

          此外,除了 BN 背后的原理這一話題外,大家對 Batch-normalized 應該放在非線性激活層的前面還是后面?這一話題的討論也比較激烈,并沒有達成統(tǒng)一的觀點,只是大部分實驗表明BN 放在非線性激活層后比較好,不過仍需要具體任務具體分析。

          PyTorch 相關(guān)文檔:

          注意,在 PyTorch 中凍結(jié) BN Layer,不僅需要對將其參數(shù)的 requires_grad 設為 False,還需要將該層的 training 設為 False,即調(diào)用 eval 函數(shù);否則,將會導致統(tǒng)計量不斷更新,而仿射參數(shù)卻一直處于凍結(jié)狀態(tài)。此外,一般都會設置 track_running_state 為 True,以減小 Batch Size 所造成的統(tǒng)計量波動。

          3. Weight Normalization

          在 2016 年 2 月的?Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks?(https://arxiv.org/pdf/1602.07868.pdf)中,作者提出了與 BN 完全不同的 Normalization 操作:Weight Normalization,并指出:相較于 BN,WN 擺脫了對于 Batch 的依賴,這意味這 WN 完全可以用在 RNN 網(wǎng)絡中(如:LSTM )以及對于噪聲敏感的任務(如:強化學習、生成式模型)中;此外,WN 的計算成本低,可以減少模型的運行時間。

          與 BN 不同的是, WN 并不是對輸入的特征數(shù)據(jù)進行歸一化操作,而是對神經(jīng)網(wǎng)絡中指定的層的參數(shù)做歸一化操作。

          在論文中,作者將神經(jīng)網(wǎng)絡的層表示為??,其中,??為權(quán)重向量,??為偏置參數(shù),??為輸入向量,??為非線性激活函數(shù)。而 WN 就是對??做歸一化,將??分解為??。其中,??為單位向量,代表??的方向,??為標量,代表??的長度,??為??的歐式范數(shù)。

          在?詳解深度學習中的Normalization,BN/LN/WN?https://zhuanlan.zhihu.com/p/33173246中,作者指出:WN 與 BN 其實是相似的。

          論文作者同樣提到了這一點。
          PyTorch 相關(guān)文檔:

          4. Layer Normalization

          在 2016 年 7 月的?Layer Normalization?(https://arxiv.org/pdf/1607.06450.pdf)中,作者提出了一種類似與 BN 的操作:Layer Normalization,提出 LN 的主要目的是為了解決 BN 對 Batch Size 和內(nèi)存的依賴以及減少 Normalization 所需時間。

          LN 與 BN 的不同之處在于:BN 是對一個 Batch 中的所有樣本的不同維度做 Normalization,而 LN 是對單個樣本中的所有維度做 Normalization。當然,兩者的數(shù)學公式長得都一樣,都是求平均值、方差,做歸一化后在做仿射變換。

          Batch Normalization 與 Layer Normalization 的區(qū)別:

          舉例來說,對于??的數(shù)據(jù),BN 計算得到的統(tǒng)計量的??為??,而 LN 計算得到的統(tǒng)計量的??為??。

          (左側(cè):Batch Normalization,右側(cè):Layer Normalization)

          PyTorch 相關(guān)文檔:

          5. Instance Normalization

          在 2016 年 7 月的?Instance Normalization: The Missing Ingredient for Fast Stylization?(https://arxiv.org/pdf/1607.08022.pdf)中,作者提出與 LN 類似的操作:Instance Normalization。在論文中,作者指出在圖像風格遷移任務中,生成式模型計算得到的 Feature Map 的各個 Channel 的均值與方差將影響到所生成圖像的風格。故,作者提出了 IN,在 Channel 層面對輸入數(shù)據(jù)進行歸一化,再使用目標圖像的 Channel 的均值與方差對結(jié)果進行 '去歸一化'。

          值得一提的是,IN 與LN 類似,僅對單個樣本進行歸一化,但是 IN 并不進行仿射變換。

          舉例來說,對于??的數(shù)據(jù),IN 計算得到的統(tǒng)計量的??為??。

          PyTorch 相關(guān)文檔:

          6. Cosine Normalization

          在 2017 年 2 月的?

          Cosine Normalization: Using Cosine Similarity Instead of Dot Product in Neural Networks?(https://arxiv.org/pdf/1702.05870.pdf

          中,作者提出了 Cosine Normalization,不對輸入數(shù)據(jù)做歸一化,也不對參數(shù)做歸一化,而是對輸入數(shù)據(jù)與參數(shù)的點乘做出改動,改為計算兩者的余弦相似度??,即??變?yōu)??。

          CN 將模型的輸出進行了歸一化,使得輸出有界,但是也因此丟棄了原本輸出中所含的 Scale 信息,所以這個是否值得也有待進一步探討。

          PyTorch 相關(guān)文檔:

          7. Group Normalization

          在 2018 年 3 月的?Group Normalization(https://arxiv.org/pdf/1803.08494.pdf,作者提出了 Group Normalization,與 BN 相比,GN 的改進有兩點:不再依賴 Batch Size,計算成本可由超參數(shù)進行調(diào)節(jié)。

          作者在論文中指出,BN 對于 Batch Size 的依賴使得其無法較好的運用在因內(nèi)存限制而使用較小 Batch Size 的任務上(如:detection, segmentation, video),故作者令 GN 僅對單個樣本進行 Normalization 操作。此外,GN 更像是 LN 與 IN 的一般形式,當??時,GN 等價于 LN;當??時,GN 等價于 IN。

          在?如何區(qū)分并記住常見的幾種 Normalization 算法(https://zhuanlan.zhihu.com/p/69659844)?中,作者給出了一張圖像,直觀的給出了以上 Normalization 的不同之處:


          舉例來說,對于??的數(shù)據(jù),GN 計算得到的統(tǒng)計量的??為??。

          PyTorch 相關(guān)文檔:
          參考資料:
          如何區(qū)分并記住常見的幾種 Normalization 算(https://zhuanlan.zhihu.com/p/69659844)
          詳解深度學習中的Normalization,(BN/LN/WNhttps://zhuanlan.zhihu.com/p/33173246)
          神經(jīng)網(wǎng)絡之Normalization(https://zhuanlan.zhihu.com/p/29824075)
          深度學習中 Batch Normalization為什么效果好?- 魏秀參的回答 - 知乎(https://www.zhihu.com/question/38102762/answer/85238569)



          推薦閱讀




            添加極市小助手微信(ID : cvmart2),備注:姓名-學校/公司-研究方向-城市(如:小極-北大-目標檢測-深圳),即可申請加入極市目標檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計/ReID/GAN/圖像增強/OCR/視頻理解等技術(shù)交流群:每月大咖直播分享、真實項目需求對接、求職內(nèi)推、算法競賽、干貨資訊匯總、與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~

            △長按添加極市小助手

            △長按關(guān)注極市平臺,獲取最新CV干貨

            覺得有用麻煩給個在看啦~??
            瀏覽 37
            點贊
            評論
            收藏
            分享

            手機掃一掃分享

            分享
            舉報
            評論
            圖片
            表情
            推薦
            點贊
            評論
            收藏
            分享

            手機掃一掃分享

            分享
            舉報
            <kbd id="afajh"><form id="afajh"></form></kbd>
            <strong id="afajh"><dl id="afajh"></dl></strong>
              <del id="afajh"><form id="afajh"></form></del>
                  1. <th id="afajh"><progress id="afajh"></progress></th>
                    <b id="afajh"><abbr id="afajh"></abbr></b>
                    <th id="afajh"><progress id="afajh"></progress></th>
                    天堂一区二区三区18在线观看 | 国产草视频在线播放 | 久久久91人妻无码精品蜜桃ID | 青娱乐在线视频观看 | 操逼视频在线免费看 |