張亞飛
(中國石油大學(華東) 計算機科學與技術學院,山東 青島 266580)
近年來,神經網絡在圖像分類和目標識別領域取得了巨大的成功[1-3]。然而,研究人員對于提升準確度的追求沒有改變。因此針對神經網絡的各種優化方法層出不窮,然而已有的算法大多針對具體的問題進行調參,對于通用框架的改進則相對較少。第一個原因是普適性的解決框架難以找到;第二個原因是在實際問題中往往面對的是具體問題,需要針對特定問題進行偏置歸納以便使網絡更符合真實數據集。
在深度學習框架設計中有一個基本原則是進行稀疏學習,使用較少的參數來表征數據特征,從而達到良好的抽象效果和泛化效果。例如針對權重的L1[4]和L2[5]正則化,L1正則化針對權重絕對值之和進行約束,使其盡可能小,L2正則化針對權重的平方之和的平方根進行約束,使其權重值更小,這也就限制了多項式中某些分量的影響,相當于減少參數個數。然而L1和L2正則化僅僅是針對其所約束的權重矩陣的,然而針對更高一層級的同層之間的神經元,以及更大范圍的神經層則沒有相應的稀疏約束來實現網絡結構的稀疏化。
因此,設計針對網絡的稀疏性約束對于提升網絡的泛化能力具有很大的作用,然而普通的數值型約束針對網絡結構并沒有很好的約束效果,而且如果基于人為設計進行權重分配,那么就會因為需要設計的超參數太多而導致學習效果不佳,因此更好的分配方式是采用自動化權重分配,即權重自學習的方式。目前最好的自學習方式是使用神經網絡。同樣,可以利用神經網絡的這個特點來學習權重分配函數。
因此,文中提出了一種可學習的權重分配機制,與注意力機制相似,該機制為神經元與神經元之間分配權重,為并行化的神經層與神經層之間分配權重。具體的做法是使用一個多層神經網絡對權重分配函數進行學習。而學習方式有別于普通的神經網絡訓練方式,首先只是單純訓練一個目標網絡,訓練完成后在網絡中添加權重分配網絡,進而固定目標網絡的參數,針對權重分配網絡進行訓練,迭代訓練目標網絡和權重分配網絡直至效果最優。
創新點:針對神經元在設計過程中采用未對同層神經元之間進行權重區分的問題,采用注意力機制對其進行同層權重分配,通過強調或者弱化神經元學習到的特征的方式來提高神經網絡的精度;提出一種新的針對于注意力機制的訓練方法,即循環迭代訓練,首先訓練常規神經網絡關系層,然后訓練注意力層,迭代循環,直至目標函數收斂。
文中的主要工作基于注意力機制和圖卷積神經網絡,因此接下來對這兩個領域的工作進行介紹。
注意力機制受人的視覺認知啟發,人的視覺在處理圖像信息的時候并不總是關注全局信息,而是根據任務目標來重點關注某個具體的區域獲取最有用的信息。基于圖像上不同區域的信息來建立內部聯系[6]指導注意力的轉移和決策。作為注意力機制的基礎,人眼的注意力已經從神經學和認知學上得到了充分的研究,圖像中最低層級的信息在視覺注意力中起著重要的作用[7],同時人眼關注的圖像的區域與具體的任務目標具有很強的相關性[8-9]。基于此,Volodymyr將注意力應用于視覺圖像處理來縮減網絡規模進而降低計算資源消耗,這項工作首次將注意力機制引入深度學習框架中[10]。在注意力機制展現其卓越的性能之后,越來越多的學者將注意力機制納入其研究領域進行創新和發展,作為注意力機制的一個方向,自注意力機制已經被成功應用于閱讀理解、文本摘要等任務中[11-12]。
在圖卷積神經網絡中,受限于圖上邊的存在依賴于具體問題的特性,因此一般情況下在進行圖卷積操作時會輸入一個全局的鄰接矩陣來表征圖上節點與節點的連接關系。在消息傳遞算法[13]中,每個節點狀態的更新是基于該節點的鄰居節點的狀態,然而如何知道其鄰居是誰,這種情況下就需要用到鄰接矩陣來獲取該節點的鄰居信息以及存在的邊信息。而鄰接矩陣通常是作為全局信息而存在的。那么受此啟發是否可以將這種針對數據之間的鄰接矩陣約束,或者也可以稱之為稀疏約束,因為其相對于全連接形式來說,在信息與信息的關聯性上具有很大的稀疏性,反映到神經網絡結構上就是,神經元與神經元之間的連接并不需要全連接的形式,更好的方法是只選取其中重要信息的方法,就可以達到一種優化的效果。類似于在權重矩陣中,有L1正則化和L2正則化對權重矩陣進行稀疏化約束。
然而針對更高層級,神經元與神經元的稀疏激活約束,神經層與神經層之間的稀疏約束還沒有方法涉及到相關方面。DropOut和DropConnect[14],可近似地看作神經元之間的稀疏約束,通過屏蔽部分神經元使其不工作來實現,但是其具有很大的隨機性,無法獲取到一個全局有效的信息對神經元的激活性或者稀疏性進行約束,而稀疏性約束對于神經網絡結構來說同樣是重要的[15]。
在常規網絡中并沒有針對神經網絡結構所做的稀疏性約束或者稱之為神經元權重分配機制,針對于特征選擇器所選擇出來的特征沒有施加權重系數,即其對于最終結果的貢獻度,因此,平等對待并不能達到最優的效果。為了解決這個問題,提出新的權重分配機制來獎勵重要的特征,減少低貢獻的特征權重。基于注意力機制,通過神經網絡來自動化擬合權重分配函數,分別對同層的神經元和不同的神經層之間進行權重分配。其最終目的是將具有并行關系的神經元或者神經層看作具有競爭注意力關系的目標,對其進行自適應權重分配。
針對注意力機制可以針對數據進行合理分配權重的特性,其核心原理是從大量信息中找到目標信息。按照已有的研究總結如下:加權可以作用在原圖上;加權可以作用在空間尺度上,給不同空間區域加權[16];加權可以作用在channel尺度上,給不同的通道特征加權[17];加權可以作用在不同時刻的歷史特征上,結合循環結構添加權重[18]。上述研究證明了注意力機制在神經網絡里邊的廣泛應用,然而,更本質上來說,它們針對的數據處理結構都有一個共同的特點,即上一步處理出來的數據對于下一步數據處理模塊的重要程度是不同的。即忽略了特征與特征之間的關系。因此文中提出的是一個通用的模型優化方法,即基于注意力機制對神經網絡結構的稀疏性進行約束。
在神經網絡結構設計上,權重分配主要體現在對下一步處理具有平行關系的輸入上,因此,在從整個神經網絡處理流程來看,其所包含的是一大的平行模塊里邊包含著一個一個小的并行模塊。因為最終是通過神經網絡計算出來一個損失值,優化目標也是一個。最終其中的各種大的小的并行模塊必然要匯聚在一起,然而傳統上,它們單純以一種簡單線性相加的方式來匯聚,可能在某些網絡設計的時候考慮多個優化目標是對其設置一個經驗參數用來平衡不同優化目標之間的比例關系,但更具體,更深入網絡結構內部的權重分配關系卻并沒有得到充分研究。在此將借助注意力機制來對此進行權重分配和研究。
要在實際計算中準確進行注意力分配,首先要了解神經網絡的具體設計流程,或者也可以稱之為數據處理流程,然后進行逐層解析,在神經網絡中最基本的處理元素是權重矩陣,而針對于權重矩陣的稀疏性約束已經有了L1和L2正則化項可以選擇,接下來要面對全連接模塊權重分配。
由于全連接[19]是關注信息過多,對于輸入數據的處理并不能有效地區分重要的和非重要的數據,因此在處理過程中針對非重要的數據和重要的數據以同等程度對待會引出一個問題,即非重要的數據會對重要數據造成干擾以致神經網絡無法進一步提高擬合精度。
而在針對性解決問題時,知道全連接層中前一層的每一個神經元對于下一層的每一個神經元所起的作用是不一樣的,而在當前的處理中,它們是以一種均等的方式輸入下一層,而在此要做的是基于注意力機制對其進行自學習形式的權重分配,通過外接神經網絡的形式來進行權重分配函數的學習。即實現函數:
W=f1(v1,v2,…,vn)
(1)
N1_input=V*W
(2)
其中,W表示全連接層中所有連接的權重向量,f表示輸入與權重之間的映射函數,即注意力分配函數,在這里,由于神經網絡對于函數的擬合性較好,在此采用外接神經網絡的形式來逼近該注意力分配函數。
圖1分別表示DropOut,DropConnect和文中方法針對網絡連接中的權重調整,DropOut和DropConnect僅僅是針對不同的連接隨機進行屏蔽,截斷相應的數據流。而文中的自適應權重分配方法則針對神經網絡的各個連接設置權重來強化或者抑制某些數據流信息的影響。這種動態的調整是根據數據流內容而不是隨機進行,更有助于提升網絡的泛化性能。
在訓練階段,由于文中的注意力處理模塊時外接神經網絡而存在,在訓練階段將采用迭代訓練的方式。首先將神經網絡結構中的注意力網絡全部屏蔽,單獨對于原始網絡進行充分訓練,并優化相應超參數以達到最優的目標效果。第二步將注意力網絡添加進入主網絡中,固定主網絡的所有參數,單獨針對于注意力網絡進行訓練直到效果最優,然后固定注意力網絡的參數優化主網絡的參數。然后迭代訓練直到結果的精度不變為止,最后將主網絡和注意力網絡參數同時設置為可學習狀態進而進行最后的微調。
在實驗中,使用TensorFlow來實現文中方法,使用開源代碼以及預訓練好的模型,在模型中相應的模塊上添加設計的模塊,進而進行迭代訓練。而在對比實驗中,以原有實驗精度為基礎,發現所提出的模型對原有模型的精度具有明顯的提升作用。
表1展示了針對各個不同數據集所設計的深度學習模型不同層的神經元數量以及施加在其上的注意力矩陣大小,其中結構上第一個數字表示輸入的數據特征數,中間的數字是隱層神經元數目,后邊的數字是輸出向量維數,用于和向量化的標簽進行比較。

表1 針對不同數據集的網絡參數配置
針對于這種單隱層神經網絡,采用全連接作為注意力分配層,使用sigmoid激活函數生成注意力分配矩陣,然后將注意力分配矩陣與隱層輸出做內積,在輸出層輸出結果。
對比了WDBP(weight decay back propagation)、WEBP(weight elimination back propagation)和SGLBP(smoothing group lasso BP)方法。它們作為對比算法將和文中算法一起進行對比實驗,同時采用相同的數據集和模型配置,不同的地方在于每種算法各自采用的稀疏化方法不一樣。從表2中可以看出,在大部分情況下,文中方法在該分類任務針對該數據集具有更好的分類效果,但是在耗時上卻比較多,原因在于網絡設計中添加了基于注意力的權重分配層,相比于原來的網絡多了一些需要進行訓練的參數,因此,計算量相比于其他網絡要大得多,最終導致比其他網絡耗時更長。
而且從表2中可以看出,在部分情況下該網絡的泛化能力更好,在訓練階段的準確率相比于測試階段并沒有高出特別多,同時測試階段的準確率達到了更好的效果,即訓練準確率和測試準確率相差較小,同時訓練準確率已經達到了一個比較高的水平,說明網絡并沒有欠擬合。
從表2中可以看出,WEBP、SGLBP和文中方法具有相似的訓練準確度,同時都比WDBP高。然而,文中方法具有最好的測試準確度,表明該方法具有更好的泛化能力。

表2 不同算法結果比較
實驗中僅僅是使用這些方法進行了對比,在實際應用中,完全可以將正則化方法中最好的SGLBP方法與文中方法進行結合從而更好地提高算法精度。因為相比于正則化方法,文中提出的方法針對的是神經元的權重分配問題,而正則化方法則是針對于稀疏化神經網絡,針對神經元進行動態衰減,在其權重低于閾值之后進行裁剪,避免了DropOut的隨機性。
上述實驗為針對簡單神經網絡并行神經元的權重分配,基于此,可以發現注意力機制是一個比較好的權重分配方法,而在具體實現上擁有諸多變體可供選擇,針對不同的任務可以選用不同的具體實現形式。而文中提出的權重分配方法正是基于此,由于注意力的集中性,可以針對每個神經元或者神經層的輸入特征進行權重調節,因此,提出的更為泛化的自適應權重調節機制能夠有效提升模型表現性能,將單純針對神經網絡輸入輸出的注意力分配拓展到了整個神經網絡內部結構空間,是對神經網絡正則化方法的有效補充。而且從實驗結果來看,對于提升神經網絡的泛化能力同樣具有很大的作用。同時,從實驗結果也可以看出,該方法是以增加計算資源的消耗,提升網絡模型的復雜性來提高神經網絡的表現的,因此需要進一步提升算法效率。
提出了一種自適應的權重分配方法,并針對神經網絡結構進行了詳細分析和對比實驗。實驗結果顯示,該方法對于不同任務均有相應的性能和準確度的提高。然而該方法還存在一些問題,在其計算權重分配時是通過神經網絡模塊來計算,增加了較多的計算開銷,需要進一步提出更為有效率的權重分配方法。同時可以參考人類的視覺規律,基于信息熵的角度來進行自適應權重分配策略的研究。對于未來的工作,可以將這種自適應的權重分配用于模型的自適應稀疏化,因為表達的稀疏化有助于提升網絡的泛化能力,同時,針對注意力機制進行進一步壓縮處理,對不同權重進行差距放大處理,通過訓練得出權重分布,然后基于一定閾值將網絡進行剪枝以實現自動化的模型壓縮,同時平衡模型大小與精確度之間的關系。同時,可以利用這種自適應權重分配對于未知的未知特征之間的關系進行挖掘,找出其潛在的函數映射關系。而且,由于整個訓練網絡可以表征為一個圖,訓練的神經網絡可以表征為一個一個模塊,網絡對于數據的處理過程可以表征為模塊與模塊之間的連接,這種連接使用鄰接矩陣來進行表征,進而可以使用該方法對于鄰接矩陣進行優化,從而優化整個網絡數據處理流程。