21種NLP任務激活函數大比拼:你一定猜不到誰贏了

2020-12-13 騰訊網

選自arXiv

機器之心編譯

參與:panda

在用神經網絡學習自然語言處理任務時,選擇哪個激活函數更好?去年穀歌大腦提出的

swish 函數

又如何?不同的研究者和工程師可能會給出不同的答案。德國達姆施塔特工業大學的一篇 EMNLP 論文給出了 21 種激活函數在 NLP 任務上的實驗比較結果,發現比較冷門的 penalized tanh 函數表現優異。研究者也已在 GitHub 上發布了相關代碼和數據。

論文:https://arxiv.org/pdf/1901.02671.pdf

項目:https://github.com/UKPLab/emnlp2018-activation-functions

摘要:激活函數在神經網絡中發揮著重要的作用,它們的非線性為深度學習的成功做出了重要的貢獻。目前最流行的激活函數之一是ReLU,但研究者最近又提出或「發現」了幾種競爭者,其中包括 LReLU 函數和 swish。大多數研究都是在少數幾種任務上比較新提出的激活函數(通常是圖像分類方面的任務),且對比的競爭者也少(通常是 ReLU),而我們首次在 8 種不同的 NLP 任務上進行了 21 種激活函數的大規模比較。

我們發現一種很大程度上不為人知的激活函數在所有任務上都表現得最穩定,即所謂的 penalized tanh 函數。我們還表明它能在 LSTM 單元中成功替代 sigmoid 和 tanh 門,並能在一種高難度的 NLP 任務上取得優於標準選擇 2 個百分點的表現。

1 引言

激活函數是神經網絡的一大關鍵組件,因為它們可將原本線性的分類器轉換成非線性的。神經網絡近些年在眾多任務上表現優異這一事實已經證明這種轉換至關重要。儘管理論上而言,Sigmoid或 tanh 等不同的激活函數往往是等價的——它們都能近似任意的連續函數(Hornik, 1991),但不同的激活函數往往會在實踐中表現出非常多樣的行為。

舉個例子,sigmoid 是一種在神經網絡實踐中佔據了幾十年主導地位的激活函數,最終卻被證明不適用於學習,原因是(根據公認的看法)它的導數很小,這可能會導致梯度消失問題。在這方面,事實證明所謂的 ReLU 函數(Glorot et al., 2011)要更加適用得多。它在正的區域有一個恆等導數,因此宣稱更不易受梯度消失問題的影響。因此它也已經成為了目前最流行的激活函數(有爭議)。對 ReLU 的成功的認可讓人們提出了多種擴展(Maas et al., 2013; He et al., 2015; Klambauer et al., 2017),但沒有任何一種能一樣受歡迎,原因很可能是 ReLU 很簡潔,而不同擴展在不同數據集和模型上所報告的增益往往是不一致的或較低(Ramachandran et al., 2017)。

人們已經為激活函數認定了多種被認為對學習成功很重要的特徵屬性,比如與它們的導數相關的屬性、單調性以及它們的範圍是否有限。但是,Ramachandran et al. (2017) 在近期一項研究中使用了自動搜索來尋找表現優良的全新激活函數,他們的搜索空間包含了基本一元和二元函數的組合,比如 max、min、sin、tanh 或 exp。他們發現很多函數都不具備被認為有用的屬性,比如非單調激活函數或不滿足 ReLU 保留梯度的屬性的函數。

實際上,他們最成功的函數——他們稱之為 swish,並不滿足這兩個條件。但是,和之前的工作一樣,他們也只是在少數不同數據集和少數幾類不同網絡上對比評估了他們的新發現和(整流)基準激活函數——這些數據集通常取自 CIFAR(Krizhevsky, 2009)和 ImageNet(Russakovsky et al., 2015)等圖像分類社區,使用的網絡也通常是充斥著圖像分類社區的深度卷積網絡(Szegedy et al., 2016)。

就我們所知,人們還沒有大規模地通過實驗比較過不同激活函數在不同任務和網絡架構上的表現,更別說在自然語言處理(NLP)領域了。究竟哪個激活函數在不同的 NLP 任務和常用 NLP 模型上表現最好最穩定?在此之前,這個問題一直都未能得到解答。

我們用本研究填補了這一空白。(1)我們比較了 21 種不同的激活函數,包括 Ramachandran et al. (2017) 中通過自動搜索找到的 6 種表現最佳的激活函數;(2)我們採用了 3 種常見的 NLP 任務類型(句子分類、文檔分類、序列標註),包含 8 項單個任務;(3)我們使用了 3 種常用的 NLP 架構,即 MLP、CNN 和 RNN。(4)我們在兩個不同維度上比較了所有這些函數,即最佳表現和平均表現。

我們發現,在這些不同的任務上,一種很大程度上不為人知的激活函數「penalized tanh」(Xu et al., 2016)表現最穩定。我們還發現它能在 LSTM 單元中成功替代 tanh 和 sigmoid。我們進一步發現 Ramachandran et al. (2017) 中發現的大多數表現優異的函數在我們的任務上表現不佳。但 swish 是一個例外,它在多個任務上都表現不錯,但並沒有 penalized tanh 與其它函數穩定

2 理論

我們考慮了 21 種激活函數,其中 6 種是 Ramachandran et al. (2017) 中「全新」提出的。表 1 給出了這 6 種函數與 sigmoid 函數的形式。

表 1:上:sigmoid 函數與 Ramachandran et al. (2017) 中表現最好的 6 種激活函數。下:具有不同參數的 LReLU 函數以及 penalized tanh。

另外 14 種激活函數分別是:tanh、sin、relu、lrelu0.01、lrelu-0.30、maxout-2、maxout-3、maxout4、prelu、linear、elu、cube、penalized tanh、selu。我們簡單介紹一下:

lrelu-0.01 和 lrelu0.30 是所謂的 leaky relu(LReLU)函數(Maas et al., 2013),它們背後的思想是避免在 relu 的負區域出現零激活/導數。表 1 也給出了它們的函數形式。

prelu(He et al., 2015)是對 LReLU 函數的泛化,是將其負區域中的斜率設置為一個可學習的參數。

maxout 函數(Goodfellow et al., 2013)的不同在於其引入了額外的參數,而且並不在單個標量輸入上操作。比如 maxout-2 是取兩個輸入中的最大值的操作:max,因此可學習參數的數量多一倍。maxout-3 類似,是取三個輸入中的最大值。如 Goodfellow et al. (2013) 所示,maxout 可以近似任意凸函數。

sin 是標準的正弦函數,被提出用於神經網絡學習,比如 Parascandolo et al. (2016),其中表明 sin 在特定任務上的學習速度比更有地位的函數快。

penalized tanh(Xu et al., 2016)的定義與 LReLU 函數類似,可被看作是「懲罰」負區域中的恆等函數。penalized tanh 在 CIFAR-100 上報告的優良表現(Krizhevsky, 2009)讓作者推測:激活函數在原點附近的斜率可能對學習至關重要。

linear 是恆等函數 f(x) = x。

cube 是立方函數 f(x) = x?,由 Chen and Manning (2014) 為依賴關係分析所用的一個 MLP 提出。

elu(Clevert et al., 2015)是 relu 的又一種變體,其假設了負值,使平均激活更以零為中心。

selu 是 elu 的一種擴展版,Klambauer et al. (2017) 將其用在了所謂的自歸一化神經網絡背景中。

激活函數的屬性

人們推測激活函數的很多屬性都對學習成功至關重要。表 2 列出了其中一些,另外還給出了一些簡要的說明和解釋。

表 2:常被提及的激活函數屬性

3 實驗

我們使用三種神經網絡類型和三種 NLP 任務類型進行了實驗。

表 3:我們實驗中使用的評估任務,按任務類型(句子分類、文檔分類、序列標註)分組,並給出了統計數據和示例。C 是指所要預測的類別的數量。

表 4:每種網絡類型的超參數範圍。超參數取自指定範圍中的離散或連續均勻分布。重複的值表示多個集合。N (?, s) 是均值為 μ 且標準差為 s 的正態分布;? = m 是 Keras 的特定優化器的默認值(如果選取的學習率小於 0,則我們選擇它為 m)。

3.1 MLP & 句子分類

圖 1:句子分類。左側 Y 軸:最佳結果;右側 Y 軸:平均結果。在 Y 軸上的分數是在所有 mini 實驗上的平均。

3.2 CNN & 文檔分類

圖 2:文檔分類

3.3 RNN & 序列標註

圖 3:序列標註

4 分析與討論

獲勝者統計情況

在最佳表現上,句子分類、文檔分類和序列標註這三個元任務平均而言都是 rectifier(整流)家族的一個成員獲勝,即 relu(獲勝 2 次)和 elu。另外,在每種情況中,cube 和 cosid 都位列表現最差的激活函數。Ramachandran et al. (2017) 中新提出的函數大都位居中間位置,但 swish 和 minsin 在「表現最佳」類別中表現最佳。對於「表現平均」類別,maxout 函數尤其突出,另外 penalized tanh 和 sin 也常處於領先位置。

為了得到更深入的見解,我們計算了所有 17 個 mini 實驗上的獲勝統計情況,統計了每種激活函數位居前三的次數。結果見表 5,其中排除了 prelu 和 maxout 函數,因為它們沒有在所有 mini 實驗中測試。

表 5:獲得前三名的次數統計。括號中是進入前三的次數,僅給出了至少 4 次進入前三的激活函數。

可以看到,penalized tanh 和 swish 在「表現最佳」類別中勝出,之後是整流系函數。「表現平均」類別的獲勝者無疑是通過使用有限範圍來使激活函數飽和而獲勝的。如果將比較限制在句子和文檔分類(包含 maxout 函數),則 penalized tanh 在「表現平均」類別上優於 maxout。

似乎能夠得出結論了:在各種超參數設置上,範圍有限的函數表現更穩定,而非飽和函數往往能得到更好的最佳表現。penalized tanh 是值得一提的例外,它在這兩個類別上都有很好的表現(成本更高的 maxout 函數是另一個例外)。如果 penalized tanh 在原點附近的斜率是其表現良好的原因,那麼這也可以解釋 cube 為何表現如此之差,因為它在原點附近非常平坦。

超參數的影響

為了直觀地了解超參數影響我們的不同激活函數的方式,我們在測試集上在所有使用的超參數上對激活函數的分數進行了回歸操作。比如,我們估計了:

其中 y 是在測試集上的分數,n_l 是網絡中層的數量,d 是 dropout 值等等。每個回歸量 k 的係數 α_k 是我們想要估計的值(尤其是它們的大小和符號)。我們對規模(比如單元數、過濾器數)顯著大於其它變量的特定變量求取了對數。對於優化器等離散回歸量,我們使用了二元啞變量(binary dummy variables)。我們為每個激活函數和每個 mini 實驗獨立地估計了(1)式。

整體而言,結果呈現出非常多樣化的模式,這讓我們無法得出很確定的結果。儘管如此,我們還是觀察到儘管所有模型在隱藏層更少時的表現平均更好,尤其是 swish 能穩健地應對更多隱藏層(較小的負係數 α_l),但 penalized tanh 的程度更小。在句子分類任務中,sin 和 maxout 函數能尤其穩健地應對隱藏層增多的情況。因為 penalized tanh 是一個飽和函數,sin 甚至是一個振蕩函數,因此我們得出結論:保持梯度(導數接近 1)並非是成功學習更深度網絡的必要前提條件。

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

------------------------------------------------

相關焦點

  • 走進恐龍研究所,和恐龍來了一場大比拼,你猜誰會贏?
    深圳大夢探索樂園的恐龍研究所,這裡一定是小朋友最喜歡的地方,尤其是小暖男,父母一定要帶著孩子去這裡看看。走進恐龍研究所,只要你擁有強大的好奇心、勇敢、熱情,才能發現這個偉大的研究計劃,做好心理準備,進入與恐龍的共生時代,看看N多年前的恐龍是怎麼生存的。首先,我們搭乘恐龍穿梭軌道來到恐龍研究所。在此途中,你一定要保持專注和用心,因為我們要來到恐龍生活的地方。
  • 乾貨|通過函數圖像,理解26種神經網絡激活函數
    通過激活函數 Identity,節點的輸入等於輸出。它完美適合於潛在行為是線性(與線性回歸相似)的任務。當存在非線性,單獨使用該激活函數是不夠的,但它依然可以在最終輸出節點上作為激活函數用於回歸任務。Logistic Sigmoid(或者按通常的叫法,Sigmoid)激活函數給神經網絡引進了概率的概念。它的導數是非零的,並且很容易計算(是其初始輸出的函數)。然而,在分類任務中,sigmoid 正逐漸被 Tanh 函數取代作為標準的激活函數,因為後者為奇函數(關於原點對稱)。5. Tanh
  • AI瘋狂進階——激活函數篇
    神經網絡激活函數的作用是什麼? 2. 如何評價激活函數的好壞? 3. ReLU存在哪些問題? 4. 存在替換萬年ReLU的激活函數嗎? 1. 激活函數的作用是什麼?
  • 通過函數圖像,了解26種神經網絡激活函數都長啥樣.
    重磅乾貨,第一時間送達在本文中,作者對包括 Relu、Sigmoid 在內的 26 種激活函數做了可視化,並附上了神經網絡的相關屬性
  • 資源 | 從ReLU到Sinc,26種神經網絡激活函數可視化
    在本文中,作者對包括 Relu、Sigmoid 在內的 26 種激活函數做了可視化,並附上了神經網絡的相關屬性,為大家了解激活函數提供了很好的資源
  • 一文看盡26種神經網絡激活函數(從ReLU到Sinc)
    通過激活函數 Identity,節點的輸入等於輸出。它完美適合於潛在行為是線性(與線性回歸相似)的任務。當存在非線性,單獨使用該激活函數是不夠的,但它依然可以在最終輸出節點上作為激活函數用於回歸任務。Logistic Sigmoid(或者按通常的叫法,Sigmoid)激活函數給神經網絡引進了概率的概念。它的導數是非零的,並且很容易計算(是其初始輸出的函數)。然而,在分類任務中,sigmoid 正逐漸被 Tanh 函數取代作為標準的激活函數,因為後者為奇函數(關於原點對稱)。5. Tanh
  • ReLU到Sinc的26種神經網絡激活函數可視化大盤點
    通過激活函數 Identity,節點的輸入等於輸出。它完美適合於潛在行為是線性(與線性回歸相似)的任務。當存在非線性,單獨使用該激活函數是不夠的,但它依然可以在最終輸出節點上作為激活函數用於回歸任務。
  • 什麼樣的NLP庫,可以支持53種語言?
    · 在73個樹庫中支持53種(人類)語言的預訓練神經模型· 一個穩定的官方維護CoreNLPPython接口這些正是NLP愛好者所追求的。你可以這樣做:1.打開conda提示符並輸入以下內容:conda create-n stanfordnlp python=3.7.12.現在,激活軟體包:source activate stanfordnlp3.安裝StanfordNLP庫:4.我們需要下載一個語言的特定模型來使用它。
  • 大貝貝,激活函數 sigmoid、tanh、relu
    激活函數是連續的(continuous),且可導的(differential)。激活函數常見的激活函數:sigmoid,tanh,relu。sigmoidsigmoid是平滑(smoothened)的階梯函數(step function),可導(differentiable)。sigmoid可以將任何值轉換為0~1概率,用於二分類。
  • 2020ECCV|FReLU--曠視提出的超越ReLU的激活函數!
    開源地址:https://github.com/megvii-model/FunnelAct Funnel Activation本文提出的FReLU激活函數超越ReLU及其改進,在圖像分類任務上更加有效,並且遷移到目標檢測和圖像分割任務上泛化性更強,如圖1所示。
  • 如何開始學習NLP? 6種用來標識化的方法
    然後,我們將研究在Python中進行標識化的六種獨特方法。在NLP中,什麼是標識化?標識化是處理文本數據時最常見的任務之一。但是標識化(tokenization)具體是什麼意思呢?在Python中執行標識化的方法我們將介紹對英文文本數據進行標識化的六種獨特方法。我已經為每個方法提供了Python代碼,所以你可以在自己的機器上運行示例用來學習。
  • 一文總結深度學習中的激活函數
    最後,激活函數 f 應用於累加的總和。注意:權重(w_1, ..., w_n)和偏置項 b 對輸入信號進行線性變換。而激活函數對該信號進行非線性變換,這使得我們可以任意學習輸入和輸出之間的複雜變換。過去已經出現了很多種函數,但是尋找使神經網絡更好更快學習的激活函數仍然是活躍的研究方向。2. 神經網絡如何學習?
  • 人工神經網絡的驅動者:激活函數是什麼?
    從技術上來講,某個節點的激活函數將其在神經網絡中前一個節點的數據輸入,並輸出一個確定值,這個值繼而指導後續節點如何發動來響應特定輸入信號。本文剖析由激活函數組成的神經網絡,以及神經網絡的生物類似物,並簡要介紹幾種常用的激活函數。神經網絡的結構作為一名數據科學愛好者,你一定見過上面的這張圖片或者與之相似的圖片。這張圖片是對雙層神經網絡工作流程的經典描述。
  • 斯坦福發布重磅NLP工具包StanfordNLP,支持中文等53種語言
    編輯:肖琴【新智元導讀】斯坦福團隊最新發布一個NLP任務的軟體包StanfordNLP,通過Python接口為53種語言提供標記、依存句法分析等NLP任務的重要工具。StanfordNLP支持包括阿拉伯語、中文、英語等53種語言(全部語言列表見文末)。
  • TF2.0-五種優化器,激活函數(sigmoid,tanh,relu,leaky relu的優缺點),損失函數,正則化等
    【最常用】,SGDM,Adagrad,RMSProp,Adam   【文中圖因尺寸較大,放大可能不清晰,點擊原文連結獲取腦圖和代碼(含注釋),本文的代碼較多,文章內不附代碼,針對iris數據集,手動實現五種優化器,手動構建神經網絡加入激活函數】我們構建神經網絡模型的時候
  • 6 種激活函數核心知識點,請務必掌握!
    我們知道,神經網絡模型中,各隱藏層、包括輸出層都需要激活函數(Activation Function)。我們比較熟悉的、常用的激活函數也有 ReLU、Sigmoid 等等。但是,對於各個激活函數的選取方法、區別特點還有幾點需要特別注意的地方。今天紅色石頭就和大家一起來總結一下常用激活函數 Sigmoid、tanh、ReLU、Leaky ReLU、ELU、Maxout 的關鍵知識點。
  • 常用激活函數(激勵函數)理解與總結
    ,而且很多資料都會提到常用的激活函數,比如Sigmoid函數、tanh函數、Relu函數。那麼我們就來詳細了解下激活函數方方面面的知識。1. 什麼是激活函數?2. 激活函數的用途(為什麼需要激活函數)?3. 有哪些激活函數,都有什麼性質和特點?4. 應用中如何選擇合適的激活函數?如果你對以上幾個問題不是很清楚,下面的內容對你是有價值的。
  • 激活函數是個啥?
    通過對線性和非線性的解讀,其實可以有一個概括:神經網絡中通過引入各種非線性函數並進行網絡疊加,使得單層的線性模型拼接成可以執行非線性分類任務的非線性模型。2、激活函數及其意義        激活函數在神經元中起到了非常重要的作用,從最初的0/1階躍函數演化成為現在的非線性可導等具有良好數學性質的函數。最開始驅使激活函數向前發展的原因就是XOR的問題:針對數據可以線性可分的情況下,使用線性激活函數是OK的,但針對異或這種無法線性可分的情況時使用線性激活函數就是無法執行分類決策。
  • 支持53種語言預訓練模型,斯坦福發布全新NLP工具包StanfordNLP
    53 種語言預訓練模型的自然語言處理工具包 StanfordNLP,該工具包支持 Python 3.6 及之後版本,並基於 PyTorch,支持多種語言的完整文本分析管道,包括分詞、詞性標註、詞形歸併和依存關係解析,此外它還提供了與 CoreNLP 的 Python 接口。
  • 深度學習基礎篇:如何選擇正確的激活函數?
    激活函數可以幫助神經網絡做這種隔離。它激活有用的信息,並抑制無關的數據點。激活函數如此重要,那麼都有哪些比較熱門呢?它們是如何工作的?又適合解決什麼問題?本文將為你一一解答。以下是本文目錄。1.簡單介紹神經網絡2.什麼是激活函數?3.可以不用激活函數嗎?