性能優於ReLU,斯坦福用周期激活函數構建隱式神經表示,Hinton點讚

2020-12-14 機器之心Pro

機器之心報導

參與:杜偉、小舟、魔王

使用非線性周期函數構建的神經架構效果優於 ReLU?斯坦福的一項研究做出了嘗試。

這個非線性激活函數效果比 ReLU 還好?近日,史丹福大學的一項研究《Implicit Neural Representations with Periodic Activation Functions》進入了我們的視野。這項研究提出利用周期性激活函數處理隱式神經表示,由此構建的正弦表示網絡(sinusoidal representation network,SIREN)非常適合表示複雜的自然信號及其導數。

Geoffrey Hinton 轉發了這項研究,並表示該項目的講解視頻或許有助於理解網格單元。

研究人員在項目主頁上展示了 SIREN 的效果,例如 SIREN 和 ReLU 在處理視頻時的不同表現:

具備像素坐標和時間坐標的 SIREN 可以用於參數化視頻。上圖展示了 SIREN 使用真值像素值進行直接監督,其參數化視頻的效果大大超過基於 ReLU 的多層感知機。

接下來,我們來看研究人員提出 SIREN 的動機和詳細細節。

由神經網絡參數化的隱式定義、連續可微的信號表示已經成為一種強大的範式。與常規表示相比,它具備很多優點。

但是,當前用於隱式神經表示的網絡架構無法對信號進行精細建模,也無法表示信號的時空導數。但實際上,對於許多被隱式定義為偏微分方程的解的物理信號而言,這是十分必要的。

近日,史丹福大學的一項研究提出利用周期性激活函數進行隱式神經表示,即正弦表示網絡(sinusoidal representation network,SIREN),並展示了它們非常適合表示複雜的自然信號及其導數。

論文地址:https://arxiv.org/pdf/2006.09661.pdf項目主頁:https://vsitzmann.github.io/siren/研究者分析了 SIREN 激活統計數據,提出了一種有原則的初始化方案,並展示了圖像、波場、視頻、聲音及其導數的表示。

此外,研究者還展示了如何利用 SIREN 來解決具有挑戰性的邊值問題,比如特定的程函方程(Eikonal equation)、泊松方程(Poisson equation)、亥姆霍茲方程(Helmholtz equation)以及波動方程。

最後,研究者將 SIREN 與超網絡相結合,來學習 SIREN 函數空間的先驗知識。

SIREN 概述

研究者將研究重點放在了能夠滿足以下方程式的函數 Φ:

該研究旨在解決公式 (1) 中的問題。研究者將該問題看作一個可行性問題,即找出函數 Φ 滿足 M 約束集合

,其中每一個 M 將函數 Φ 及其導數與量 a(x) 關聯起來:

於是,該問題可以寫成損失函數的形式,即懲罰域 _m 上每個約束的偏差:

研究者將函數 Φ_θ 參數化為全連接神經網絡,並使用梯度下降解決優化問題。

用於隱式神經表示的周期激活函數

該研究提出了一種簡單的神經網絡架構 SIREN 來處理隱式神經表示。SIREN 使用正弦作為周期激活函數:

有趣的是,SIREN 的任意導數都是 SIREN,就像正弦的導數是餘弦,即相移正弦。因此,SIREN 的導數繼承了 SIREN 的特性,使得研究者使用「複雜」信號監督 SIREN 的任意導數。

該研究將展示,SIREN 可以通過對激活分布的控制進行初始化,這可以使研究者創建深層架構。

此外,SIREN 的收斂速度遠遠超過基線架構,例如它在一塊現代 GPU 上擬合單張圖像數百次僅需數秒,同時圖像保真度還更高,如下圖 1 所示:

激活分布、頻率,以及合理的初始化機制

該研究展示了一種有助於高效訓練 SIREN 的合理初始化機制。其核心思想是:保存網絡中的激活分布,使得初始化的最終輸出不依賴於層數。注意:構建 SIREN 需要精心挑選均勻分布權重,否則準確率和收斂速度都會很糟糕。

我們先來看使用均勻分布輸入 x U(1, 1) 的單個正弦神經元的輸出分布。該研究提出的初始化機制使用 ADAM 優化器在所有實驗中均實現了快速、穩健的收斂。

SIREN 效果如何

在實驗部分,研究者將 SIREN 與 ReLU、TanH、Softplus、ReLU P.E 等網絡架構的效果進行了比較。結果顯示,SIREN 的性能顯著優於所有這些基準方法,收斂速度明顯加快,並且成為唯一一個準確表示信號梯度的架構,從而使其可用於解決邊值問題。

下面我們來看 SIREN 在處理泊松方程、亥姆霍茲方程、波動方程,以及利用符號距離函數表示形狀和學習隱函數空間等五個方面的具體表現。

解決泊松方程問題

研究者表示,通過監督 SIREN 的導數,他們可以解決基於泊松方程的圖像問題。實驗結果顯示,SIREN 同樣是唯一一個能夠準確快速擬合圖像、梯度和拉普拉斯域的架構。

SIREN 與其他幾種基準方法的展示效果圖如下所示:

就具體細節來說,下圖 3 展示了使用 SIREN 方法的擬合效果以及圖像無縫融合到梯度域(gradient domain)的效果。

圖 3:泊松圖像重建和泊松圖像編輯。

利用符號距離函數表示形狀

如下圖 4 所示,該研究提出的周期性激活函數顯著增加了物體的細節以及可用神經 SDF 表示的場景複雜度,並且僅使用單個五層全連接神經網絡即實現了整個房間的參數化表示。

圖 4:SIREN 與 ReLu 基準方法的形狀表示細節展示。

解決亥姆霍茲方程問題

以下動圖為利用 SIREN、ReLU 和 TanH 基準架構解決不均勻 Helmholtz 問題的效果展示:

研究者利用 SIREN 解決不均勻亥姆霍茲方程問題,並與基於 ReLU 和 Tanh 等的網絡架構進行了比較,具體細節如下圖 5 所示:

學習隱函數空間

下圖 6 展示了基於不同數量的像素觀察結果進行的測試時重建。以下所有修復結果均使用相同的模型和相同的參數值生成。

下表 1 給出了與 [50] 的定量比較,表明對 SIREN 表示的泛化至少與對圖像的泛化同樣有效。

解決波動方程問題

在時間域中,SIREN 成功地解決了波動方程問題,而基於 Tanh 的網絡架構卻未能找出正確的解。兩者的實現動圖展示如下:

利用 SIREN 與基於 Tanh 網絡架構解決波動方程初始值問題的細節如下:

相關焦點

  • 完勝ReLU!斯坦福的神經網絡用這種激活函數,高保真還原圖像視頻
    相比於ReLU、TanH等非周期性的激活函數來說,SIREN將正弦周期函數用作激活函數,相當於為神經網絡引入了周期性。由於周期性的正弦激活函數處處可微,使得其能夠快速適應複雜信號,很好地對自然圖像空間進行參數化,建模更為精細。
  • TF2.0-五種優化器,激活函數(sigmoid,tanh,relu,leaky relu的優缺點),損失函數,正則化等
    【最常用】,SGDM,Adagrad,RMSProp,Adam   【文中圖因尺寸較大,放大可能不清晰,點擊原文連結獲取腦圖和代碼(含注釋),本文的代碼較多,文章內不附代碼,針對iris數據集,手動實現五種優化器,手動構建神經網絡加入激活函數】我們構建神經網絡模型的時候
  • 大貝貝,激活函數 sigmoid、tanh、relu
    激活函數是連續的(continuous),且可導的(differential)。激活函數常見的激活函數:sigmoid,tanh,relu。sigmoidsigmoid是平滑(smoothened)的階梯函數(step function),可導(differentiable)。sigmoid可以將任何值轉換為0~1概率,用於二分類。
  • 從ReLU到GELU,一文概覽神經網絡的激活函數
    在這篇長文中,我將全面介紹六種不同的激活函數,並闡述它們各自的優缺點。我會給出激活函數的方程和微分方程,還會給出它們的圖示。本文的目標是以簡單的術語解釋這些方程以及圖。我會介紹梯度消失和爆炸問題;對於後者,我將按照 Nielsen 提出的那個很贊的示例來解釋梯度爆炸的原因。
  • 如何選擇神經網絡激活函數:有效的改善模型學習模式的能力
    激活函數是神經網絡中用於計算輸入和偏差的加權和的函數,用於確定神經元是否可以釋放。 它通常通過梯度下降法的某種梯度處理來操縱數據,然後產生神經網絡的輸出,該輸出包含數據中的參數。 有時這些激活函數通常稱為傳遞函數。激活函數具有改善數據學習模式的能力,從而實現了特徵檢測過程的自動化,並證明它們在神經網絡的隱藏層中的使用合理性,並且對於跨領域進行分類很有用。
  • 總結|激活函數之sigmoid、ReLU、ELU 以及更新的 Leaky ReLU、SELU、GELU
    :書籍與論文激活函數是神經網絡中一個至關重要的部分。在這篇長文中,我將全面介紹六種不同的激活函數,並闡述它們各自的優缺點。我會給出激活函數的方程和微分方程,還會給出它們的圖示。本文的目標是以簡單的術語解釋這些方程以及圖。我會介紹梯度消失和爆炸問題;對於後者,我將按照 Nielsen 提出的那個很贊的示例來解釋梯度爆炸的原因。最後,我還會提供一些代碼讓你可以自己在 Jupyter Notebook 中運行。
  • 從Sigmoid到GELU,一文概覽神經網絡激活函數
    3.Relu 整流線性單元Relu也是深度學習中非常流行的激活函數,近兩年大火的Transformer模塊由Attention和前饋神經網絡FFN組成,其中FFN(即全連接)又有兩層,第一層的激活函數就是ReLU,第二層是一個線性激活函數。
  • 【ML系列】手把手教你用Numpy構建神經網絡!(附代碼)
    在我們開始編程之前,先準備一個基本的路線圖。我們的目標是創建一個程序,該程序能夠創建具有指定體系結構(層的數量和大小以及適當的激活函數)的密集連接的神經網絡。 下圖給出了這種網絡的例子。最重要的是,我們必須能夠訓練該網絡並使用它進行預測。
  • 神經網絡中的激活函數解析:Sigmoid, tanh, Softmax, ReLU, Leaky ReLU
    就是在神經網絡的輸出後面加的一個東西(節點)。也就是轉換函數,也可以加在兩層神經網絡之間。我們為什麼要在神經網絡中使用激活函數?用來決定神經網絡的輸出,就像是和否一樣,將結果映射到0到1或者-1到1之間(根據不同的函數)。
  • Mish:一個新的SOTA激活函數,ReLU的繼任者
    >對激活函數的研究一直沒有停止過,ReLU還是統治著深度學習的激活函數,不過,這種情況有可能會被Mish改變。每條記錄都是用Mish而不是ReLU。最後,可能也是最重要的,目前的想法是,平滑的激活函數允許更好的信息深入神經網絡,從而得到更好的準確性和泛化。儘管如此,我測試了許多激活函數,它們也滿足了其中的許多想法,但大多數都無法執行。這裡的主要區別可能是Mish函數在曲線上幾乎所有點上的平滑度。
  • Pytorch_第九篇_神經網絡中常用的激活函數
    神經網絡中常用的激活函數Introduce理論上神經網絡能夠擬合任意線性函數,其中主要的一個因素是使用了非線性激活函數(因為如果每一層都是線性變換,那有啥用啊,始終能夠擬合的都是線性函數啊)。本文主要介紹神經網絡中各種常用的激活函數。以下均為個人學習筆記,若有錯誤望指出。
  • Relu函數的優點是啥
    問題引入常見的激活函數有sigmoid, relu,Leaky ReLU等,上次我們介紹了sigmoid
  • 一文深度了解 ReLU 激活函數!
    此外,函數隻對其輸入中間點周圍的變化非常敏感。無論作為輸入的節點所提供的求和激活是否包含有用信息,函數的靈敏度和飽和度都是有限的。一旦達到飽和狀態,學習算法就需要不斷調整權值以提高模型的性能。最後,隨著硬體能力的提高,通過 gpu 的非常深的神經網絡使用Sigmoid 和 tanh 激活函數不容易訓練。在大型網絡深層使用這些非線性激活函數不能接收有用的梯度信息。錯誤通過網絡傳播回來,並用於更新權重。每增加一層,錯誤數量就會大大減少。
  • 神經網絡為何非激活函數不可?
    激活函數是神經網絡中一個至關重要的概念,決定了某個神經元是否被激活,判斷該神經元獲得的信息是否有用,並決定該保留還是該去掉此神經元。資料來源:史丹福大學的cs231n 課程二、為什麼需要激活函數?那在人工神經網絡中,如果我們使用只有一個單元而沒有激活函數的神經網絡會怎樣?這種情況下我們所得到的輸出基本上還是 W*x+b,這並不好,因為 W*x 也是 x 的一次方,因此函數仍然是線性的,基本等同於線性函數。如果我們疊加多層呢?假如我們用一個函數 f(x)來表示 nᵗʰ層,那麼可以得出:
  • 神經網絡中的常用激活函數總結
    這也是激活函數的意義所在。 2. 可微性:保證了在優化中梯度的可計算性。雖然 ReLU 存在有限個點處不可微,但處處 subgradient,可以替代梯度。3. 計算簡單:激活函數複雜就會降低計算速度,因此 RELU 要比 Exp 等操作的激活函數更受歡迎。 4.
  • TF2.0初體驗-使用TF2.0 + Keras構建簡單的神經網絡
    今天體驗了一把,確實挺不錯的,那麼今天就手把手來教學如何通過TF2.0 + Keras構建一個簡單神經網絡。1、安裝TF2.0虛擬環境首先,我們要在電腦裡裝一個tf2.0的虛擬環境(我的電腦是mac,windows和linux類似)。這裡使用anaconda的命令:注意,後面的python版本最好帶上,否則什麼庫都不給你裝。
  • 神經網絡中激活函數的真正意義?一個激活函數需要具有哪些必要的屬性?還有哪些屬性是好的屬性但不必要的?
    早上10點上班,你8點到也好,9點到也好都一樣,但是10點零1分到不行,性質就變了,考勤系統留下遲到的記錄,全勤獎再無希望。它的激活函數應該是這樣的,x是打卡時間。作為模擬人腦的人工神經網絡,自然是需要某種機制來模擬這一種活動,這便是激活函數根本性的由來。02 激活函數到底有什麼用一個複雜的神經網絡,是有許多層的,其中最基本的單位便是神經元。一個線性神經元,輸入x輸出y的變換關係如下。
  • 這個激活函數超越ReLU卻鮮為人知,BERT、GPT-2等都在用!
    作為決定神經網絡是否傳遞信息的「開關」,激活函數對於神經網絡而言至關重要。不過今天被人們普遍採用的 ReLU 真的是最高效的方法嗎?最近在社交網絡上,人們找到了一個看來更強大的激活函數:GELU,這種方法早在 2016 年即被人提出,然而其論文迄今為止在 Google Scholar 上的被引用次數卻只有 34 次。其實,GELU 已經被很多目前最為領先的模型所採用。
  • 【DL知識拾貝】Pytorch版本第一篇:激活函數大匯總
    前言我們知道,神經網絡實際上就是用於實現複雜的函數,而非線性激活函數能夠使神經網絡逼近任意複雜的函數。如果沒有激活函數引入的非線性,無論神經網絡有多少層,輸出都是輸入的線性組合,與沒有隱藏層效果相當,多層神經網絡就相當於單層的神經網絡,從而對數據只是做仿射變換,⽽多個仿射變換的疊加仍然是⼀個仿射變換,網絡的逼近能力就相當有限,這樣是不能學習到複雜關係的。
  • 超越ReLU卻鮮為人知後被挖掘:BERT、GPT-2等都在用的激活函數
    作為決定神經網絡是否傳遞信息的「開關」,激活函數對於神經網絡而言至關重要。不過今天被人們普遍採用的 ReLU 真的是最高效的方法嗎?最近在社交網絡上,人們找到了一個看來更強大的激活函數:GELU,這種方法早在 2016 年即被人提出,然而其論文迄今為止在 Google Scholar 上的被引用次數卻只有 34 次。其實,GELU 已經被很多目前最為領先的模型所採用。