国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一種神經網絡結構改進方法「ReZero」

倩倩 ? 來源:機器之心Pro ? 2020-04-17 09:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

深度學習在眾多領域都取得了顯著進展,但與此同時也存在一個問題:深層網絡的訓練常常面臨梯度消失或梯度爆炸的阻礙,尤其是像 Transformer 這樣的大型網絡。現在,加州大學圣迭戈分校的研究者提出了一種名為 ReZero 的神經網絡結構改進方法,并使用 ReZero 訓練了具有一萬層的全連接網絡,以及首次訓練了超過 100 層的 Tansformer,效果都十分驚艷。

深度學習在計算機視覺、自然語言處理等領域取得了很多重大突破。神經網絡的表達能力通常隨著其網絡深度呈指數增長,這一特性賦予了它很強的泛化能力。然而深層的網絡也產生了梯度消失或梯度爆炸,以及模型中的信息傳遞變差等一系列問題。研究人員使用精心設計的權值初始化方法、BatchNorm 或 LayerNorm 這類標準化技術來緩解以上問題,然而這些技術往往會耗費更多計算資源,或者存在其自身的局限。

近日,來自加州大學圣迭戈分校(UCSD)的研究者提出一種神經網絡結構改進方法「ReZero」,它能夠動態地加快優質梯度和任意深層信號的傳播。

論文地址:https://arxiv.org/abs/2003.04887v1

代碼地址:https://github.com/majumderb/rezero

這個想法其實非常簡單:ReZero 將所有網絡層均初始化為恒等映射。在每一層中,研究者引入了一個關于輸入信號 x 的殘差連接和一個用于調節當前網絡層輸出 F(x) 的可訓練參數α,即:

在剛開始訓練的時候將α設置為零。這使得在神經網絡訓練初期,所有組成變換 F 的參數所對應的梯度均消失了,之后這些參數在訓練過程中動態地產生合適的值。改進的網絡結構如下圖所示:

圖 1:ReZero 結構示意圖

ReZero 主要帶來了以下兩個益處:

1. 能夠訓練更深層神經網絡

學習信號能夠有效地在深層神經網絡中傳遞,這使得我們能夠訓練一些之前所無法訓練的網絡。研究者使用 ReZero 成功訓練了具有一萬層的全連接網絡,首次訓練了超過 100 層的 Tansformer 并且沒有使用學習速率熱身和 LayerNorm 這些奇技淫巧。

2. 更快的收斂速度

與帶有標準化操作的常規殘差網絡相比,ReZero 的收斂速度明顯更快。當 ReZero 應用于 Transformer 時,在 enwiki8 語言建模基準上,其收斂速度比一般的 Transformer 快 56%,達到 1.2BPB。當 ReZero 應用于 ResNet,在 CIFAR 10 上可實現 32% 的加速和 85% 的精度。

ReZero (residual with zero initialization)

ReZero 對深度殘差網絡的結構進行了簡單的更改,可促進動態等距(dynamical isometry)并實現對極深網絡的有效訓練。研究者在初始階段沒有使用那些非平凡函數 F[W_i] 傳遞信號,而是添加了一個殘差連接并通過初始為零的 L 個可學習參數α_i(作者稱其為殘差權重)來重新縮放該函數。目前,信號根據以下方式進行傳遞:

在初始階段,該網絡表示為恒等函數并且普遍滿足動態等距關系。在該架構修改中,即使某一層的 Jacobian 值消失,也可以訓練深度網絡(正如 ReLU 激活函數或自注意力機制出現這樣的狀況)。這一技術還可以在現有的已訓練網絡上添加新層。

實驗結果

更快的深層全連接網絡訓練

圖 3 展示了訓練損失的演變過程。在一個簡單實驗中,一個使用了 ReZero 的 32 層網絡,擬合訓練數據的收斂速度相比其他技術快了 7 到 15 倍。值得注意的是,與常規的全連接網絡相比,殘差連接在沒有額外的標準化層時會降低收斂速度。這可能是因為初始化階段信號的方差并不獨立于網絡深度。

隨著深度的增加,ReZero 架構的優勢更加明顯。為了驗證該架構可用于深度網絡訓練,研究者在一臺配備 GPU 的筆記本電腦上成功訓練了多達 1 萬層的全連接 ReZero 網絡,使其在訓練數據集上過擬合。

圖 3:256 寬度和 ReLU 激活的 32 層全連接網絡四種變體,在訓練過程中的交叉熵損失。

更快的深層 Transformer 訓練

研究者提出,常規的 Transformer 會抑制深層信號傳遞,他們在輸入序列 x 的 n x d 個 entry 的無窮小變化下評估其變化,獲得注意力處理的輸入-輸出 Jacobian,從而驗證了之前的觀點。

圖 5a 展示了不同深度中使用 Xavier 統一初始化權重的 Transformer 編碼層的輸入-輸出 Jacobian 值。淺層的 Transformer 表現出峰值在零點附近的單峰分布,可以發現,深層結構中 Jacobian 出現了大量超出計算精度的峰值。雖然這些分布取決于不同初始化方法,但以上量化的結論在很大范圍內是成立的。這些結果與普遍認為的相一致,也就是深層 Transformer 很難訓練。

圖 5:多個輸入-輸出 Jacobian 矩陣中對數奇異值λ_io 的直方圖。(a)層數分別為 4、12、64 層的 Transformer 編碼器網絡;(b)是 64 層時訓練前和訓練中的 ReZero Transformer 編碼器網絡。深層 Transformer 距離動態等距很遠,即λ_io 1,而 ReZero Transformer 更接近動態等距,平均奇異值 λ_io ≈ 1。

能夠在多項 NLP 任務中實現 SOTA 的 Transformer 模型通常是小于 24 層的,這項研究中,最深層模型最多使用了 78 層,并且需要 256 個 GPU 來訓練。研究者又將這一模型擴展至數百個 Transformer 層,并且仍然可以在臺式機上訓練。為了檢查該方法是否可以擴展至更深層的 Transformer 模型之上,研究者將 ReZero Transformer 拓展到了 64 及 128 層,并與普通 Transformer 進行了對比。

結果顯示,收斂之后,12 層的 ReZero Transformer 與常規的 Transformer 取得了相同的 BPB。也就是說,用 ReZero 來替代 LayerNorm 不會失去任何模型表現。訓練普通的 Transformer 模型會導致收斂困難或訓練緩慢。當達到 64 層時,普通的 Transformer 模型即使用了 warm-up 也無法收斂。ReZero Transformer 在α初始化為 1 時發散,從而支持了α = 0 的初始化理論。深層的 ReZero Transformer 比淺層的 Transformer 表現出了更優越的性能。

表 3:在 enwiki8 測試集上的 Transformers (TX) 對比。

收斂速度比較

選擇 enwiki8 上的語言建模作為基準,因為較難的語言模型是 NLP 任務性能的良好指標。在實驗中,其目標是通過測量 12 層的 Transformer 在 enwiki8 上達到 1.2 位每字節(BPB)所需的迭代次數,由此來衡量所提出的每種方法的收斂速度。

表二:針對 ReZero 的 12 層 Transformers 歸一化后與 enwiki8 驗證集上達到 1.2 BPB 時所需的訓練迭代比較。

更快的殘差網絡訓練

通過前述部分,看到了 ReZero 的連接是如何使深層網絡的訓練成為可能的,并且這些深層網絡都包含會消失的 Jacobian 奇異值,例如 ReLU 激活或自我注意力。但是,如果沒有 ReZero 的連接或者是其他架構的更改,其中某些架構將無法執行訓練。在本節中,會將 ReZero 連接應用于深層殘差網絡從而進行圖像識別。

雖然這些網絡并不需要 ReZero 連接便可以進行訓練,但通過觀察發現,在 CIFAR-10 數據集上訓練的 ResNet56 model4(最多 200 個 epochs)的驗證誤差得到了非常明顯的提升:從(7.37±0.06)%到(6.46±0.05)%。這一效果是將模型中的所有殘差連接轉換為 ReZero 連接之后得到的。在實施 ReZero 之后,驗證誤差降低到 15%以下的次數也減少了(32±14)%。盡管目前這些結果只提供了有限的信息,但它們仍指出了 ReZero 連接擁有更廣泛的適用性,從而也推進了進一步的研究。

上手實操

項目地址:

https://github.com/majumderb/rezero

在此提供了自定義的 ReZero Transformer 層(RZTX),比如以下操作將會創建一個 Transformer 編碼器:

import torchimport torch.nn as nnfrom rezero.transformer import RZTXEncoderLayerencoder_layer = RZTXEncoderLayer(d_model=512, nhead=8)transformer_encoder = nn.TransformerEncoder(encoder_layer, num_layers=6)src = torch.rand(10, 32, 512)out = transformer_encoder(src)

創建一個 Transformer 解碼器:

import torchimport torch.nn as nnfrom rezero.transformer import RZTXDecoderLayerdecoder_layer = RZTXDecoderLayer(d_model=512, nhead=8)transformer_decoder = nn.TransformerDecoder(decoder_layer, num_layers=6)memory = torch.rand(10, 32, 512)tgt = torch.rand(20, 32, 512)out = transformer_decoder(tgt, memory)

注意確保 norm 參數保留為 None,以免在 Transformer 中用到 LayerNorm。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編碼器
    +關注

    關注

    45

    文章

    3953

    瀏覽量

    142617
  • 神經網絡
    +關注

    關注

    42

    文章

    4838

    瀏覽量

    107756
  • 自然語言處理

    關注

    1

    文章

    630

    瀏覽量

    14667
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    神經網絡的初步認識

    日常生活中的智能應用都離不開深度學習,而深度學習則依賴于神經網絡的實現。什么是神經網絡神經網絡的核心思想是模仿生物神經系統的結構,特別是大
    的頭像 發表于 12-17 15:05 ?323次閱讀
    <b class='flag-5'>神經網絡</b>的初步認識

    Transformer如何讓自動駕駛變得更聰明?

    ]自動駕駛中常提的Transformer本質上是一種神經網絡結構,最早在自然語言處理里火起來。與卷積神經網絡(CNN)或循環神經網絡(RNN)不同,Transformer能夠自動審視所
    的頭像 發表于 11-19 18:17 ?2270次閱讀

    自動駕駛中常提的卷積神經網絡是個啥?

    在自動駕駛領域,經常會聽到卷積神經網絡技術。卷積神經網絡,簡稱為CNN,是一種專門用來處理網格狀數據(比如圖像)的深度學習模型。CNN在圖像處理中尤其常見,因為圖像本身就可以看作是由像素排列成的二維網格。
    的頭像 發表于 11-19 18:15 ?2076次閱讀
    自動駕駛中常提的卷積<b class='flag-5'>神經網絡</b>是個啥?

    NMSIS神經網絡庫使用介紹

    NMSIS NN 軟件庫是組高效的神經網絡內核,旨在最大限度地提高 Nuclei N 處理器內核上的神經網絡的性能并最??大限度地減少其內存占用。 該庫分為多個功能,每個功能涵蓋特定類別
    發表于 10-29 06:08

    在Ubuntu20.04系統中訓練神經網絡模型的些經驗

    , batch_size=512, epochs=20)總結 這個核心算法中的卷積神經網絡結構和訓練過程,是用來對MNIST手寫數字圖像進行分類的。模型將圖像作為輸入,通過卷積和池化層提取圖像的特征,然后通過全連接層進行分類預測。訓練過程中,模型通過最小化損失函數來優化模型參數,從而提高分類準確性。
    發表于 10-22 07:03

    CICC2033神經網絡部署相關操作

    在完成神經網絡量化后,需要將神經網絡部署到硬件加速器上。首先需要將所有權重數據以及輸入數據導入到存儲器內。 在仿真環境下,可將其存于個文件,并在 Verilog 代碼中通過 readmemh 函數
    發表于 10-20 08:00

    液態神經網絡(LNN):時間連續性與動態適應性的神經網絡

    1.算法簡介液態神經網絡(LiquidNeuralNetworks,LNN)是一種新型的神經網絡架構,其設計理念借鑒自生物神經系統,特別是秀麗隱桿線蟲的
    的頭像 發表于 09-28 10:03 ?1204次閱讀
    液態<b class='flag-5'>神經網絡</b>(LNN):時間連續性與動態適應性的<b class='flag-5'>神經網絡</b>

    神經網絡的并行計算與加速技術

    隨著人工智能技術的飛速發展,神經網絡在眾多領域展現出了巨大的潛力和廣泛的應用前景。然而,神經網絡模型的復雜度和規模也在不斷增加,這使得傳統的串行計算方式面臨著巨大的挑戰,如計算速度慢、訓練時間長等
    的頭像 發表于 09-17 13:31 ?1124次閱讀
    <b class='flag-5'>神經網絡</b>的并行計算與加速技術

    MSCMG無刷直流電機改進的I_f無位置起動方法

    針對磁懸浮控制力矩陀螺無刷直流電機電阻、電感值極小的特點和已有的無位置傳感器 I/f 起動算法加速階段換相精度不高且算法復雜的問題,通過分析電磁轉矩和換相時刻的關系,提出了一種改進的 I/f起動方法
    發表于 08-06 14:27

    MSCMG無刷直流電機改進的I_f無位置起動方法

    方法。該方法在電磁轉矩恒定的情況下,結合電機模型,精確計算出電機換相的具體時刻。為保證電磁轉矩恒定確保換相時刻的準確性,采用神經網絡法估計反電勢系數,并設計了基于三相繞組不對稱補償的改進
    發表于 07-23 13:19

    無刷電機小波神經網絡轉子位置檢測方法的研究

    摘要:論文通過對無刷電機數學模型的推導,得出轉角:與三相相電壓之間存在映射關系,因此構建了個以三相相電壓為輸人,轉角為輸出的小波神經網絡來實現轉角預測,并采用改進遺傳算法來訓練網絡結構
    發表于 06-25 13:06

    神經網絡專家系統在電機故障診斷中的應用

    摘要:針對傳統專家系統不能進行自學習、自適應的問題,本文提出了基于網絡專家系統的并步電機故障診斷方法。本文將小波神經網絡和專家系統相結合,充分發揮了二者故障診斷的優點,很大程度上降
    發表于 06-16 22:09

    神經網絡RAS在異步電機轉速估計中的仿真研究

    眾多方法中,由于其結構簡單,穩定性好廣泛受到人們的重視,且已被用于產品開發。但是MRAS仍存在在低速區速度估計精度下降和對電動機參數變化非常敏感的問題。本文利用神經網絡的特點,使估計更為簡單、快速
    發表于 06-16 21:54

    基于FPGA搭建神經網絡的步驟解析

    本文的目的是在神經網絡已經通過python或者MATLAB訓練好的神經網絡模型,將訓練好的模型的權重和偏置文件以TXT文件格式導出,然后通過python程序將txt文件轉化為coe文件,(coe
    的頭像 發表于 06-03 15:51 ?1198次閱讀
    基于FPGA搭建<b class='flag-5'>神經網絡</b>的步驟解析

    神經網絡壓縮框架 (NNCF) 中的過濾器修剪統計數據怎么查看?

    無法觀察神經網絡壓縮框架 (NNCF) 中的過濾器修剪統計數據
    發表于 03-06 07:10