Re-parameterizing Your Optimizers rather than Architectures
Re-parameterizing Your Optimizers rather than Architectures
paper:https://arxiv.org/abs/2205.15242
摘要
神經網絡設計良好反應了納入模型的先驗知識,盡管不同的模型考慮了不同的先驗,但是仍舊習慣于使用模型無關優化器SGD對其訓練。在本文中提出了一種新的范式,將特定于模型的先驗知識合并到優化器中訓練模型。提出了一種新的方法,通過一組特定于模型的超參數修改梯度來添加先驗知識,稱為梯度重參數化,優化器稱為重優化器。
介紹
神經網絡的結構設計是將先驗知識整合到模型中,如ResNet的殘差加法。高質量的結構先驗對神經網絡至關重要。另一方面優化方法也發揮著重要作用,可分為三類:
我們注意到:
**一種新的范式。**我們提出了通用結構+特定優化器。通用模型意味著模型應該盡可能少地具有結構先驗知識,特定優化器指優化器通過以特定于模型的方式更改訓練動態來實現更好的性能。
**基于SGD的優化器方法。**本文主要研究深度神經網絡,因此我們只考慮基于SGD的優化器,但思想可推廣到高階或無導數方法,由于SGD核心使用梯度更新參數,建議在更新可訓練參數前通過根據一組特定于模型的超參數修改梯度,使優化器模型特定,為了獲得這些超參數,提出了一種超搜索方法。
我們希望通過與RepVGG及其關鍵方法結構重參數化的比較,突出本文工作的新穎性,因此采用RepVGG作為基線,但方法不同
差異總結如下
該范式可以推廣到其他模型和優化方法。
RepOptVGG也是一種良好的基礎模型,具有高效推理和訓練時間的特點
相關工作
RepVGG采用了一種名為結構重參數化的方法,將訓練時的卷積操作進行重新組合提高推理時的速度,顯著缺點是額外的訓練成本無法避免。
RepOptVGG梯度重參數化擴展和深化了結構重參數化,沒有改變可訓練參數的形式,也沒有引入額外的正向、反向計算。
RepOptimizers
重優化器通過改變原始的訓練動態來工作,采用了三個步驟:
重優化器的設計取決于給定的模型和先驗知識。
將知識融入結構
重優化的核心是我們希望使用優化器的先驗知識。一般使用多個分支的輸入和輸出相加,以不同尺度進行加權,從而提高模型的性能。我們希望改進VGG系列的模型,選擇RepVGG的結構設計。
將結構先驗轉化為等效的重優化
之前的先驗知識每個分支僅包含一個具有可選常數尺度的線性可訓練算子,只要適當設置尺度特征來進行融合,模型的性能仍會提高,我們將這種線性模塊稱為常數尺度線性假加法(CSLA)。
可以使用一個操作來替換CSLA模塊,并通過將梯度乘以常數尺度當初的掩碼來實現等效的訓練動量,意味著如果使用相同的訓練數據,在訓練迭代之后產生的輸出是相等的。我們將此類掩碼稱為梯度掩碼。
展示兩個卷積和兩個常數尺度作為尺度因子的結論:
設αA,αB為兩個常數標量,W(A),W(B)為兩個形狀相同的conv核,X和Y為輸入和輸出,? 表示卷積,CSLA塊的計算流程表示為YCSLA=αA(X? W(A))+αB(X? W(B))。
對于GR,我們直接訓練W0參數化的目標結構,以便YGR=X? W’,設i為訓練迭代次數,我們可以確保Y(i)CSLA=Y(i)GR,同時需要根據兩條規則:
當CSLA=GR時,我們可以通過首先設計CSLA結構來設計和描述再優化器的行為。在RepOptVGG的情況下,CSLA結構是通過簡單地將RepVGG塊中3×3和1×1層之后的BN層替換為恒定的按信道縮放,將標識分支中的BN替換為可訓練的按信道縮放(因為CSLA分支沒有超過一個線性可訓練運算符),如圖2所示。
在這種稍微復雜一些的情況下,卷積具有不同的核大小,然后是通道方向的常數尺度,梯度掩碼將是張量,條目應分別使用相應位置上的尺度進行計算。我們給出了與這種CSLA塊相對應的梯度掩模的公式,該公式將用于訓練單個3×3轉換。設C為通道數,s,t∈ RC是3×3和1×1層之后的恒定通道尺度,梯度掩模MC×C×3×3由:
直觀地說,p=2和q=2意味著3×3內核的中心點與1×1分支相關(就像RepVGG塊將1×1 conv合并到3×3內核的中心點一樣)。由于可訓練的通道方向縮放可以被視為“深度”1×1 conv,然后是一個恒定的縮放因子1,因此我們在“對角線”位置向漸變遮罩添加1(如果輸出形狀與輸入形狀不匹配,CSLA塊將沒有這樣的快捷方式,因此我們只需忽略此項)。
備注:與RepVGG結構重參數化形式相比,CSLA無需等待過長的訓練時間,也可以通過常見的結構重參數技術產生相同推理結果。
通過超搜索獲取重優化器的超參數
作為重優化器的超參數,梯度掩模會影響性能。所以提出了一種將優化器的超參數與輔助模型和搜索可訓練參數相關聯的新方法,即超搜索(HS)。
具體來說就是通過可訓練的尺度替換重優化器對應的CSLA模型的中的常數來構建輔助超搜索模型,并在一個小的搜索數據集上進行訓練。在搜索數據集上進行訓練后,可訓練尺度的最終值被當做CSLA模型中的預期常數,正是我們構建重優化器梯度掩碼所需的。
帶重優化器訓練
在超搜索之后,使用到的常量尺度存儲在每個操作符構建重優化器的梯度掩模。在訓練在每次訓練計算之后將梯度掩碼元素乘以相應操作符的梯度。
為了使用RepOptimizer開始訓練,我們根據搜索到的超參數重新初始化模型參數。
實驗
ImagenNet分類的RepOptimers
實驗各階段層數和通道數如表1所示
有如下觀察結果:
消融實驗
消融實驗比較重優化器不改變初始化或不改變梯度,都會使性能降低,因為訓練動量不再等同于訓練CSLA模型,同時我們將常量比例更改為1)所有為1;2)與HS模型中初始值相同;3)通過每個層所有通道的比例值獲取的值。表明重優化器每個通道的不同訓練動態不同尺度決定了重要的模型特定知識。
遷移實驗:重優化器是特定于模型的但是數據集是不可知的
1)在目標數據集上搜索的重優化器超參數不會比在不同數據集上獲得結果更好
2)對不同的超參數,重優化器在目標數據集上提供類似的結果,表明優化器是數據集不可知的
3)RepOptVGG表現優于VGG結束為數據集的挑戰性
搜索數據集上的性能不能反映目標數據集的性能,證明搜索的常數是特定于模型的,因此重優化是特定與模型的。
在COCO數據目標檢測任務和Cityscapes分割任務中RepOptVGG的性能仍與RepVGG相當。
易于量化的重優化器
結論和局限性
本文提出了一種將模型的先驗轉換為優化器的新范式,并提出了一種通過梯度重參數化實現的方法。雖然結構重參數化和重優化是數學等效的,但是更復雜和一般的情況,例如分支中存在BN層或多個順序線性可訓練算子,不能用梯度重參數化代替。
總結
以上是生活随笔為你收集整理的Re-parameterizing Your Optimizers rather than Architectures的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经典算法:计算两个日期之间的天数
- 下一篇: 计算机网络与Internet发展历史