?

基于自適應學習率優化的AdaNet改進

2020-10-18 12:56顧進廣
計算機應用 2020年10期
關鍵詞:子網梯度權重

劉 然,劉 宇*,顧進廣

(1.武漢科技大學計算機科學與技術學院,武漢 430065;2.智能信息處理與實時工業系統湖北省重點實驗室(武漢科技大學),武漢 430065;3.武漢科技大學大數據科學與工程研究院,武漢 430065;4.國家新聞出版署富媒體數字出版內容組織與知識服務重點實驗室(武漢科技大學),北京 100038)

(*通信作者電子郵箱liuyu@wust.edu.cn)

0 引言

人工神經網絡的自適應結構學習(Adaptive structural learning of artificial neural Networks,AdaNet)是一種基于集成學習的神經結構搜索(Neural Architecture Search,NAS)框架,它不僅可以學習神經網絡架構,還可以將最優的架構組合成一個高質量的集成模型。AdaNet 借鑒了Boosting 集成學習中提出的估計泛化誤差上界的公式“泛化誤差項<經驗誤差項+學習算法容量相關項”,并且在NAS 領域對“學習算法容量相關項”給出了具體的定義[1],這樣AdaNet在訓練的過程中就能夠評估所得模型的泛化誤差。

AdaNet是以神經網絡作為個體學習器,也就是AdaNet子網,多個子網通過混合權重進行集成,最后得到AdaNet 都會評估AdaNet 集成體泛化誤差上界,找到使得泛化誤差最大限度減小的子網,并將其添加到AdaNet 集成體中,再根據所添加的這個子網來調整搜索空間。

圖1 AdaNet子網搜索過程Fig.1 AdaNet subnet search process

AdaNet 為了找到每輪迭代性能最好的子網,會使用Momentum 優化算法來得到子網的網絡權重和子網集成時的混合權重。Momentum 優化算法是在隨機梯度下降(Stochastic Gradient Descent,SGD)優化算法中引入了動量相關概念,并且在整個尋優過程中學習率是固定的。這類優化算法在損失函數為凸函數時,能夠保證收斂到全局最優值,缺點是收斂的時間較長。同時,受初始學習率的影響很大,每個維度的學習率一樣。因此,AdaNet 通過Momentum 優化算法得到的子網,雖然能夠保證具有較好的性能,但是子網之間差異性并不大。

由于AdaNet 是基于集成學習的,而集成學習的關鍵是產生“好而不同”的子網,即子網之間需存在差異性,并在一定誤差率限定下對子網進行集成。AdaNet 集成體的泛化誤差,可通過的誤差分歧分解式子[2]來進行表示:

其中:E表示AdaNet 集成體的泛化誤差;表示所有子網泛化誤差的均值;表示子網的加分分歧項,即所有子網的差異性度量最后取平均。該式子表明越小,并且越大,集成的效果越好。但是僅僅在集成體構造好后才能進行估計,所以不能夠直接最小化。

現有的AdaNet 處理過程中,每次均從候選子網中選擇了最好的子網,其實在訓練的過程中已經對進行了限制,因此為了進一步提高AdaNet 集成體的效果,應從提升子網的差異性入手,也就是從增大入手。而AdaNet 使用Momentum 優化算法得到的集成模型,往往為了追求較小的,而導致較小,難以減小AdaNet集成體的泛化誤差。

在另一方面,神經網絡中存在著大量非線性變換,它的損失函數幾乎都是非凸和高維度的,不可避免存在大量的局部最小值。在實際情況中,往往存在大量梯度為0 的點,導致無論用什么優化算法都很難找到唯一全局最小值。Li等[3]通過實驗說明了神經網絡的訓練依賴于尋找高維度非凸損失函數的“較好”極小值能力,這些“較好的”局部極小值表現可能和全局最小值相差無幾。同時,根據Kearns 等[4]提出的集成學習中“弱學習器等價于強學習器”理論,以及Schapire[5]對這一理論給出的構造性證明,Boosting類算法的個體學習器并不要求強學習器。

本文在多組實驗中比較了不同的優化算法,實驗結果表明,在AdaNet 中使用RMSProp、Adam、RAdam 這類自適應學習率算法來訓練子網以及優化混合權重時,不僅因為自適應學習率,不容易跳出極值點,使得收斂變快,同時由于增大了子網差異性,最后得到AdaNet集成體的性能更佳。

1 相關工作

NAS 是自動機器學習(Automated Machine Learning,AutoML)領域熱點之一,它可以針對特定的數據集從頭開始設計性能良好的模型,在某些任務上甚至可以達到人類專家的設計水準,甚至有可能發現某些人類之前未曾提出的網絡結構,所以國內外都對NAS進行了深入研究。

Zoph 等[7]將NAS 問題轉化成了序列生成問題,并且將循環神經網絡(Recurrent Neural Network,RNN)作為控制器來對序列進行求解,之后使用強化學習算法近端策略優化(Proximal Policy Optimization,PPO)學習控制器的參數。這種方法每一層的參數都是獨立的,需要學習整個網絡,參數搜索空間非常大,最終論文的實驗動用了800 個GPU。之后,Zoph等[8]又根據經典卷積神經網絡(Convolutional Neural Network,CNN)每層的網絡結構都具有一定相似性,提出自動搜索的網絡結構也可以是基于層的,可以針對某一層來設計一種特定的結構,然后將這種結構重復多次,來得到一個完整的網絡結構,實驗使用了500 個GPU 并行處理。后續研究中,Liu 等[9]根據啟發式搜索,只訓練有可能得到最優結果的網絡結構,這樣降低了需要完整訓練的網絡結構數量,但是搜索空間還是很大。

但是上述幾種方法都有著巨大的搜索空間,導致整個搜索過程計算量非常大,必須要有大量的GPU 支撐。AdaNet 是一種基于強化學習和集成學習的方法,優勢在于子網基本架構是可以自定義的,后面產生的子網都是在這個基本架構上演化來的,因此需要完整訓練的子網個數并不多。AdaNet 通過簡單的人工干預,就大幅度減小了NAS 搜索空間。同時AdaNet 在搜索過程中估計泛化誤差上界的機制,也導致了AdaNet中驗證子網泛化誤差的環節并不復雜。

優化算法在深度學習領域的應用很廣泛,最早出現的優化算法是隨機梯度下降(Stochastic Gradient Descent,SGD)。也就是隨機抽取一批樣本,并且以此為根據來更新參數。SGD 優化算法的優點是容易得到全局最優解,但是缺點也很明顯:一是受初始學習率的影響很大,存在不收斂的可能;二是每個維度的學習率一樣,很難學習到稀疏數據上的有用信息;三是學習曲線有時會產生劇烈震蕩。

對于SGD 優化算法中的學習曲線震蕩和鞍點停滯問題,Momentum 優化算法[10]可以比較好地緩解這個問題。與SGD優化算法相比,Momentum 優化算法收斂更快,收斂曲線也更加穩定,但是Momentum 優化算法還是存在每個維度學習率一樣的問題。

在實際應用中,更新頻率低的參數應該擁有較大的學習率,而更新頻率高的參數應該擁有較小的學習率。Adagrad優化算法[11]采用“歷史梯度累計平方和的平方根”(常用r表示)來衡量不同參數梯度的稀疏性,并且將r作為學習率的分母,某參數的r越小,則表明該參數越稀疏,該參數的學習率也就越大。

RMSProp優化算法[12]將Adagrad優化算法中的“歷史梯度累計平方和的平方根”改為了“歷史梯度平均平方和的平方根”,避免了分母隨著時間單調遞增,解決了訓練提前結束的問題。RMSProp 優化算法雖然解決了訓練過早結束的問題,但是同樣容易陷入到局部最優解。

Adam 優化算法[13]集成了Momentum 優化算法訓練比較穩定的優點,以及RMSProp 優化算法學習率隨著迭代次數發生變化的優點,可以認為是帶有動量項的RMSProp。Adam 算法通過記錄梯度一階矩,保證了梯度之間不會相差太大,即梯度平滑、穩定地過渡,這樣可以適應不穩定的目標函數。同時通過記錄梯度二階矩,保證了環境感知能力,為不同參數產生自適應的學習率。Adam 優化算法可以實現快速收斂,但是它對初始學習率不夠魯棒,也會存在收斂到局部最優解的問題。并且Adam 優化算法在最初幾次迭代,常常需要用很小的學習率,也就是“預熱”,否則可能會陷入糟糕的開始,使得訓練曲線出現過度跳躍,變得更長、更困難。

近期,最優化算法領域也有許多新的研究成果,來自UIUC(University of Illinois at Urbana-Champaign)的Liu 等[14]提出了一個新的優化算法RAdam,它在保證收斂較快的前提下,建立了一個“整流器(rectifier)項”來進行自動預熱,在大部分預熱長度和學習率的情況下都優于手動預熱。RAdam提供了更好的訓練穩定性,省去了手動預熱的過程,在大部分人工智能(Artificial Intelligence,AI)領域都有較好的通用性。

2 AdaNet算法

2.1 AdaNet集成體

AdaNet 的首要對象是集成體,每次搜索得到的子網,都會作為集成體的一部分。集成體由一個或多個子網組成,這些子網的輸出通過集成器進行組合。

AdaNet中的集成模型e可以表示為:

其中:集成模型e是所有子模型的加權和;l是集成體中的子網個數;wk代表第k個子網的混合權重;hk代表第k個子網。

2.2 AdaNet目標函數和子網搜索過程

AdaNet 在搜索與訓練的過程中,需要有一個指標來評價整個集成模型的好壞,通過最小化這個指標,來尋找子網進行集成時的最優混合權重。AdaNet 使用如下目標函數作為指標:

其中:λ≥0,β≥0,均為常數;m是訓練集的樣本個數;N是集成體中子網的個數;hj是序號為j的子網;wj是序號為j的子網的混合權重;φ是子網訓練時所用的損失函數(在AdaNet中常常使用指數損失函數,即φ(x)=ex);r(hj)是序號為j的子網的Rademacher復雜度。

F(w)借鑒了Boosting 算法中估計泛化誤差的方式,它是E(w)和R(w)兩者的和,E(w)為AdaNet 集成體的訓練誤差項,R(w)為AdaNet集成體的復雜度懲罰項,F(w)則是AdaNet集成體泛化誤差上界的估計。上述標準可用于判定候選子網能否添加至AdaNet 集成體中:當嘗試添加某個候選子網后,訓練誤差項的減小幅度大于復雜度懲罰項的增大幅度,即F(w)減小時,該候選子網會被正式添加到AdaNet集成體。

假設在t-1 輪迭代之后得到的AdaNet 模型為et-1,當前混合權重向量為wt-1,集成模型的深度為lt-1。對于第t輪迭代,子網生成器會得到兩個子網h、h′,其中h是深度為lt-1的子網,h′是深度為lt-1+1 的子網,子網的具體形式由自定義的子網搜索空間指定。

此時,將第t輪迭代的子網添加到集成體的問題,可以轉化為在候選子網u∈{h,h′},并且候選子網u的混合權重w∈R 的條件下,最小化第t-1 輪迭代的目標函數Ft(w,u)的問題,Ft(w,u)的具體公式如下:

而在使用Ft(w,u)之前,需要先對子網進行局部的訓練,即得到子網u內部的網絡權重wu,這樣的子網u才可以添加到集成體中,此時需要最小化子網u的目標函數Ft(w,u),具體公式如下:

F(w)用來比較前后兩次迭代的集成體性能,判斷集成體是否需要添加當前子網。Ft(w,u)用來代入優化算法中,最小化Ft(w,u)的過程就是確定當前子網混合權重w的過程。Fu(wu,u)用來對子網進行局部的訓練,最小化Fu(wu,u)的過程就是確定當前子網內部網絡權重wu的過程(最小化Ft(w,u)和Fu(wu,u)之前需要先確定u為某個固定的候選子網h或h′)。根據式(5)、(6)、(9),AdaNet 子網搜索流程可以具體表述為:

第1)行:初始化AdaNet 集成體子網搜索空間、子網生成器,子網搜索空間定義了生成子網的基本類型,子網生成器用來生成具體的子網,并且對子網進行訓練(本文主要討論子網為基本CNN架構的情況)。

第3)行:子網生成器生成兩個候選子網h、h′的網絡架構,將u=h、u=h′分別代入到Fu(wu,u)中,之后用優化算法來得到h、h′內部的網絡權重,用MINIMIZE()來指代某種優化算法,每種優化算法的具體步驟將在后文介紹。

第4)~5)行:將u=h、u=h′分別代入到Ft(w,u)中,并且用優化算法MINIMIZE()得到h、h′的最佳混合權重w1、w2。

第6)~9)行:比較Ft(w1,h)、Ft(w2,h′),h、h′中使得Ft(w,u)更小的子網表示為ht,對應的混合權重稱為w*。

第10)~14)行:比較F(wt-1+w*)、F(wt-1),如果F(wt-1+w*)<F(wt-1),則認為引入子網ht后集成模型訓練誤差的減小程度要優于復雜度的增大程度,也就是說引入子網ht能夠減小集成體的泛化誤差上界。此時上一次迭代的集成體et-1應該包含這個子網ht,剝離子網ht的softmax 層以暴露最后一個隱藏層,然后通過混合權重w*將ht最后一個隱藏層連接到集成體的輸出,得到新的集成體et,并且根據當前迭代獲得的反饋信息調整子網搜索空間。如果F(wt-1+w*)≥F(wt-1),則認為繼續引入子網對于減小集成體的泛化誤差上界沒有幫助,此時直接返回上一次迭代的集成體et-1。

第15)行:完整進行T輪迭代后得到集成體eT,最后返回它。

2.3 AdaNet的權重優化算法

AdaNet 子網搜索流程中第3)行的使用優化算法最小化Fu(wu,u)得到子網內部的網絡權重wu,以及第4)~5)行的使用優化算法最小化Ft(w,u)得到子網集成時的混合權重w,在AdaNet 中都是使用同一種優化算法來求解的。在AdaNet 中為了得到全局最優的子網,常常都會使用Momentum 優化算法來對上述兩步進行求解,也就是在u設置為定值的情況下,分別將Fu(wu,u)、Ft(w,u)作為Momentum 優化算法目標函數ft(w),分別對wu、w進行尋優,Momentum 優化算法的具體流程如下。

但是Momentum 優化算法收斂較慢,導致AdaNet 的整個子網搜索過程較慢;同時使用Momentum 優化算法時,由于在整個訓練過程中學習率都是固定的,所以每個維度的學習率都是一樣的,難以學習到稀疏數據上的有用信息;并且Momentum 優化算法得到的AdaNet 集成體中子網的差異性較小,這樣不利于AdaNet集成體泛化誤差的減小。

3 自適應學習率的優化算法

本文為了增大不同子網內部的網絡權重之間的差異性,改用自適應學習率的優化算法來對上述兩步進行求解,具體使用了Adagrad、RMSProp、Adam、RAdam 這4 種優化算法,下面給出了它們的完整流程。

3.1 Adagrad優化算法

3.2 RMSProp優化算法

3.3 Adam優化算法

3.4 RAdam優化算法

4 實驗與評估

本文使用了上述幾種方法,在AdaNet 的子網搜索空間設置為基本CNN 的前提下,優化子網內部的網絡權重和子網集成時的混合權重,并且在標準測評數據集上測試了上述方法建立AdaNet 集成模型的性能,以說明使用RMSProp、Adam、RAdam 這類優化算法時,相較于AdaNet 常用的Momentum 優化算法,AdaNet 的整個訓練過程不僅能夠快速收斂,并且得到的AdaNet集成模型效果也更好。

4.1 數據集

MNIST是美國國家標準與技術研究院收集整理的大型手寫數字數據庫,包含60 000 個訓練集樣本以及10 000 個測試集樣本,樣本是28×28的圖片,共有10個類別。這個數據集較為簡單,AdaNet 原始CNN 模型就能獲得較好效果,對于這個數據集的分類,目的是為了檢驗本文觀點,即能否讓AdaNet集成體學習到一些比較難學到的內容。

Fashion-MNIST 是一個替代MNIST 手寫數字集的圖像數據集。Fashion-MNIST 的格式、大小和訓練集/測試集劃分與MNIST 完全一致,主要是增加了分類的難度。對這個數據集的分類更加具有挑戰,目的是為了檢驗本文觀點在更復雜的分類問題上是否同樣有效。

為了檢驗通過本文方法所得到的AdaNet 集成體,能否保持集成學習類算法能避免噪聲的特性。本文又在添加了高斯噪聲后的Fashion-MNIST 上進行了對比實驗,具體添加方法為:源數據在分批訓練時,隨機選取20 批次的數據,為這些數據中的所有圖像都引入高斯噪聲。

4.2 輸入參數設置

對于不同的優化算法,需要給定對應的輸入參數。首先是全部優化算法共有的兩個輸入參數,即初始參數w0和學習率α。初始參數w0決定了在梯度下降過程中出現梯度消失或者梯度爆炸的可能性大小,本文使用He initialization[15]這種初始化方法來給定,這種方法不僅盡可能保持輸入和輸出服從相同分布,避免出現激活函數輸出值趨向于0 的情況,而且它還能很好適應ReLU(Rectified Linear Unit)這種非線性激活函數。學習率α決定了權重更新比率,它需要根據訓練集的大小來選擇,一般訓練集數據量越大,α就應該設在更小的值上[16]。如果α設得太小,訓練速度會很慢,但可能將目標函數值降到最低,如果α設得太大,訓練速度會很快,但可能會導致學習震蕩,甚至可能無法收斂[17]。本文嘗試了α為1、0.5、0.1、0.05、0.01、0.005、0.001、0.000 5 這些情況,經過前期測試,當α為0.005時,既能夠保證訓練速度,又能夠得到一個很低的目標函數值。同時,由于Momentum 優化算法在整個尋優過程中都使用唯一的α,如果α選擇不當可能出現非常差的情況。而Adagrad 等自適應學習率優化算法每次迭代都對α進行不同程度的縮放,前期距離尋優目標遠,對α進行放大,能夠更有效率地進行探索,后期距離尋優目標近,對α進行縮小,保證能夠收斂到一個較好的結果,所以Adagrad 等自適應學習率優化算法對α的要求比Momentum 優化算法更低。由于本文3 組對比實驗的訓練集數據量大致相同,所以本文所有實驗都基于相同的w0和α來進行。

然后是每個優化算法特有的輸入參數,本文根據Ruder[18]以及仝衛國等[19]的研究進行相關設置。對于Momentum 優化算法,動量衰減參數γ取0.9,它類似物理中的摩擦系數,用來抑制動量,在接近尋優目標后能快速收斂。對于Adagrad優化算法,數值穩定量ε取10-8,ε用一個極小的正數,防止計算過程出現除以0,其他3 種自適應學習率優化算法RMSProp、Adam、RAdam中的ε也取相同值。對于RMSProp優化算法,衰減速率ρ取0.9,它用來實現只累積近期梯度信息,用平均平方梯度替換累計平方梯度,避免梯度累計量過大。對于Adam 優化算法和RAdam 優化算法,梯度一階矩衰減系數β1取0.9,梯度二階矩衰減系數β2取0.999,梯度一階矩是歷史梯度與當前梯度的平均,它借鑒于Momentum 用來保持慣性,實現梯度平滑、穩定的過渡,梯度二階矩是歷史梯度平方與當前梯度平方的平均,它借鑒于RMSProp 用來環境感知,保留能為不同維度參數自適應地縮放學習率的優點。

4.3 評價標準

在對比實驗中,本文采用在測試集上的正確率(precision)、召回率(recall)、F1 值(F1_score)作為集成模型性能的評價指標,定義如下:

而對于子網之間的差異性,由于AdaNet 中各個子網架構都是相同的,主要差別在于子網內部的網絡權重。本文先計算了每個子網網絡權重均值,并將兩子網網絡權重均值之差取平方作為它們之間的“差異性距離”,之后讓AdaNet 集成體中所有子網兩兩組合,對所有組合結果的“差異性距離”求和,最后對這個和取均值作為子網分歧項。具體定義如下:

同時為了比較AdaNet 在使用不同優化算法時的網絡架構搜索速度,本文對所有實驗的訓練過程所用時間進行了統計(本文在8 塊NVIDIA Tesla V100-SXM2-16GB 的GPU 分布式計算環境中進行實驗,并且用TensorBoard 對整個訓練過程進行了監控)。

4.4 實驗分析

表1 展示了5 種優化算法在MNIST 數據集上的結果,可以看到F1 值最高的是RAdam,同時它有著最大的子網分歧項。在這個較簡單數據集上RMSProp、Adam、RAdam 這3 種優化算法效果普遍更好,即它們能讓AdaNet 集成體學習到一部分難以學到的內容。

表1 在MNIST數據集上不同優化算法的結果Tab.1 Results of different optimization algorithms on MNIST dataset

表2 則展示了在Fashion-MNIST 數據集上的結果,可以看到F1值最高的是RAdam,它同樣有著最大的子網分歧項。在Fashion-MNIST 數據集上RMSProp、Adam、RAdam 這3 種優化算法也得到了更好的效果,即它們在使用AdaNet 處理更復雜的分類任務時也是有幫助的。

表3 則展示了在添加高斯噪聲的Fashion-MNIST 數據集上的結果,F1值最高的都是Adam,它同樣有著最大的子網分歧項??梢钥吹絉MSProp、Adam、RAdam 在數據集中添加了噪聲后,損失函數均值和F1 值的影響比較小,即它們能夠幫助AdaNet集成體在一定程度上避免噪聲。

3 組對比實驗所用數據集的復雜程度是依次遞增的,它們對應的損失函數曲面復雜程度也是依次遞增的??梢钥吹綋p失函數曲面越復雜,“較好的”局部極小值點越多,不同優化算法得到的子網分歧項差別越大,即對于復雜問題,本文的改進方法可以獲得更好的效果。

在收斂方面,本文的3 組實驗都是Adagrad 優化算法收斂最快,但是Adagrad優化算法所得到結果的F1值普遍不高,這是因為Adagrad 流程中式子的分母隨著時間單調遞增。當分母積累值過大后,收斂變得很小,導致訓練后期變化幅度很小。對于SGD 和Momentum,隨機的特性導致了其收斂本身就不快,它們所得F1 值也不高。對于RMSProp、Adam、RAdam 則可以在保證較快收斂的前提下,同時得到較高的F1值。

表3 在添加了高斯噪聲的Fashion-MNIST數據集上不同優化算法的結果Tab.3 Results of different optimization algorithms on Fashion-MNIST dataset with Gaussian noise

5 結語

本文基于AdaNet 這種NAS 方法,引入RMSProp、Adam、RAdam 等自適應學習率優化算法來得到子網內部的網絡權重和子網集成時的混合權重。實驗結果表明,相對于現有的Momentum 優化算法,本文方法在保證收斂較快,也就是網絡搜索效率較高的前提下,還能夠通過提高子網之間的差異性,使得AdaNet 集成模型擁有更高的準確率,在越復雜的分類任務中優化效果越明顯。

本文的方法在AdaNet子網為簡單CNN 架構時效果較好,在未來的工作中,將探討AdaNet子網為各種復雜CNN 架構以及RNN架構時,如何將它們組合為更好的AdaNet集成模型。

猜你喜歡
子網梯度權重
磁共振梯度偽影及常見故障排除探討
基于應變梯度的微尺度金屬塑性行為研究
權重望寡:如何化解低地位領導的補償性辱虐管理行為?*
權重常思“浮名輕”
一個具梯度項的p-Laplace 方程弱解的存在性
計算機網絡課程中網絡測試命令的應用
子網劃分問題研究及應用
為黨督政勤履職 代民行權重擔當
權重漲個股跌 持有白馬藍籌
航天器多子網時間同步系統設計與驗證
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合