注意力機制下的啟用函式:自適應引數化ReLU
本文在綜述傳統啟用函式和注意力機制的基礎上,解讀了一種注意力機制下的啟用函式,即自適應引數化修正線性單元(Adaptively Parametric Rectifier Linear Unit,APReLU),希望對大家有所幫助。
1. 啟用函式
啟用函式是現代人工神經網路的重要組成部分,其作用是實現人工神經網路的非線性化。我們首先來介紹幾種最常見的啟用函式,即Sigmoid啟用函式、Tanh啟用函式和ReLU啟用函式,分別如下圖所示。
Sigmoid啟用函式和Tanh啟用函式的梯度取值範圍分別是(0,1)和(-1,1)。當層數較多時,人工神經網路可能會遭遇梯度消失的問題。ReLU啟用函式的梯度要麼是零,要麼是一,能夠很好地避免梯度消失和梯度爆炸的問題,因此在近年來得到了廣泛的應用。
然而,ReLU啟用函式依然存在一點瑕疵。如果在人工神經網路的訓練過程中,遇到了特徵全部小於零的情況,那麼ReLU啟用函式的輸出就全部為零。這個時候就訓練失敗了。為了避免這種情況,有些學者就提出了leaky ReLU啟用函式,不將小於零的特徵置為零,而是將小於零的特徵乘以一個很小的係數,例如0.1和0.01。
在leaky ReLU中,這個係數的取值是人工設定的。但是人工設定的係數未必是最佳的,因此何愷明等人提出了Parametric ReLU啟用函式(引數化ReLU啟用函式,PReLU啟用函式),將這個係數設定為一個可以訓練得到的引數,在人工神經網路的訓練過程中和其他引數一起採用梯度下降法進行訓練。然而,PReLU啟用函式有一個特點:一旦訓練過程完成,則PReLU啟用函式中的這個係數就變成了固定的值。換言之,對於所有的測試樣本,PReLU啟用函式中這個係數的取值是相同的。
到這裡我們就大概介紹了幾種常用的啟用函式。這些啟用函式有什麼問題呢?我們可以思考一下,如果一個人工神經網路採用上述的某種啟用函式,抑或是上述多種啟用函式的組合,那麼這個人工神經網路在訓練完成之後,在被應用於測試樣本時,對全部測試樣本所採用的非線性變換是相同的。也就是說,所有的測試樣本,都會經歷相同的非線性變換。這其實是一種比較呆板的方式。
如下圖所示,我們如果以左邊的散點圖表示原始特徵空間,以右邊的散點圖表示人工神經網路所學習得到的高層特徵空間,以散點圖中的小圓點和小方塊代表兩種不同類別的樣本,以F、G和H表示非線性函式。那麼這些樣本是透過相同的非線性函式實現原始特徵空間到高層特徵空間的變換的。也就是說,圖片中的“=”意味著,對於這些樣本,它們所經歷的非線性變換是完全相同的。
那麼,我們能不能根據每個樣本的特點,單獨為每個樣本設定啟用函式的引數、使每個樣本經歷不同的非線性變換呢?本文後續所要介紹的APReLU啟用函式,就做到了這一點。
2. 注意力機制
本文所要介紹的APReLU啟用函式借鑑了經典的Squeeze-and-Excitation Network(SENet),而SENet是一種非常經典的、注意力機制下的深度學習方法。SENet的基本原理如下圖所示:
這裡介紹一下SENet所蘊含的思想。對於許多樣本而言,其特徵圖中的各個特徵通道的重要程度很可能是不同的。例如,樣本A的特徵通道1非常重要,特徵通道2不重要;樣本B的特徵通道1不重要,特徵通道2很重要;那麼在這個時候,對於樣本A,我們就應該把注意力集中在特徵通道1(即賦予特徵通道1更高的權重);反過來,對於樣本B,我們應該把注意力集中在特徵通道2(即賦予特徵通道2更高的權重)。
為了實現這個目的,SENet透過一個小型的全連線網路,學習得到了一組權重係數,對原先特徵圖的各個通道進行加權。透過這種方式,每個樣本(包括訓練樣本和測試樣本)都有著自己獨特的一組權重,用於自身各個特徵通道的加權。這其實是一種注意力機制,即注意到重要的特徵通道,進而賦予其較高的權重。
3. 自適應引數化修正線性單元(APReLU)啟用函式
APReLU啟用函式,在本質上,就是SENet和PReLU啟用函式的整合。在SENet中,小型全連線網路所學習得到的權重,是用於各個特徵通道的加權。APReLU啟用函式也透過一個小型的全連線網路獲得了權重,進而將這組權重作為PReLU啟用函式里的係數,即負數部分的權重。APReLU啟用函式的基本原理如下圖所示。
我們可以看到,在APReLU啟用函式中,其非線性變換的函式形式是和PReLU啟用函式一模一樣的。唯一的差別在於,APReLU啟用函式里對負數特徵的權重係數,是透過一個小型全連線網路學習得到的。當人工神經網路採用APReLU啟用函式時,每個樣本都可以有自己獨特的權重係數,即獨特的非線性變換(如下圖所示)。同時,APReLU啟用函式的輸入特徵圖和輸出特徵圖有著相同的尺寸,這意味著APReLU可以被輕易地嵌入到現有的深度學習演算法之中。
綜上所述,APReLU啟用函式使每個樣本都可以有自己獨特的一組非線性變換,提供了一種更靈活的非線性變換方式,具有提高模式識別準確率的潛力。
參考文獻:
[1] He K, Zhang X, Ren S, et al. Delving deep into rectifiers: Surpassing human-level performance on imagenet classification[C]//Proceedings of the IEEE international conference on computer vision. 2015: 1026-1034.
[2] Hu J, Shen L, Sun G. Squeeze-and-excitation networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 7132-7141.
[3] Zhao M, Zhong S, Fu X, et al. Deep residual networks with adaptively parametric rectifier linear units for fault diagnosis[J]. IEEE Transactions on Industrial Electronics, 2020, DOI: 10.1109/TIE.2020.2972458.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69960177/viewspace-2677817/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄10)函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄11)函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄12)函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄13)函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄14)函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄15)函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄16)函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄17)函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄1)函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄2)函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄3)函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄4)函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄5)函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄6)函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄7)函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄8)函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄9)函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄18)Cifar10~94.28%函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄19)Cifar10~93.96%函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄26)Cifar10~95.92%函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄20)Cifar10~94.17%函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄21)Cifar10~95.12%函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄22)Cifar10~95.25%函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄23)Cifar10~95.47%函式
- 深度殘差網路+自適應引數化ReLU啟用函式(調參記錄24)Cifar10~95.80%函式
- 自適應注意力機制在Image Caption中的應用APT
- 通俗理解自注意力機制和多頭注意力機制
- 注意力機制在圖卷積中的應用卷積
- Mish:一個新的state of the art的啟用函式,ReLU的繼任者函式
- 函式引數 引數定義函式型別函式型別
- 從ReLU到GELU,一文概覽神經網路的啟用函式神經網路函式
- 自注意力機制(2)-多頭自注意層
- 為什麼使用自注意力機制?
- SOLIDWORK自動化引數在傳送帶上的應用Solid
- 函式柯里化和偏函式應用函式
- 從閉包函式的變數自增的角度 – 解析js垃圾回收機制函式變數JS
- 從閉包函式的變數自增的角度-解析js垃圾回收機制函式變數JS
- 從閉包函式的變數自增的角度 - 解析js垃圾回收機制函式變數JS