Neural-Networks

整流線性單元 (ReLU) 激活函數如何產生其輸入的非線性交互?[複製]

  • August 26, 2017

當用作深度神經網絡中的激活函數時,ReLU 函數優於其他非線性函數,如 tanh 或 sigmoid。在我的理解中,激活函數的全部目的是讓神經元的加權輸入非線性交互。例如,當使用作為激活,兩個輸入神經元的輸出將是:

這將近似函數

並包含各種不同權力的特徵組合 和.

儘管 ReLU 在技術上也是一個非線性函數,但我看不出它如何產生像和其他激活一樣。

編輯:雖然我的問題與這個問題相似,但我想知道即使是級聯的 ReLU 也能夠逼近這種非線性項。

假設你想近似使用 ReLU. 一種近似值可能看起來像.

h1(x)

但這不是一個很好的近似值。但是您可以添加更多具有不同選擇的術語和來改進近似值。一種這樣的改進,在更大的區間內誤差“小”的意義上,是我們有,並且變得更好。

h2(x)

您可以繼續此過程,將術語添加到您喜歡的複雜程度。

請注意,在第一種情況下,近似值最適合,而在第二種情況下,近似值最適合.

在此處輸入圖像描述

x <- seq(-3,3,length.out=1000)
y_true <- x^2
relu <- function(x,a=1,b=0) sapply(x, function(t) max(a*t+b,0))

h1 <- function(x) relu(x)+relu(-x)
png("fig1.png")
   plot(x, h1(x), type="l")
   lines(x, y_true, col="red")
dev.off()

h2 <- function(x) h1(x) + relu(2*(x-1)) + relu(-2*(x+1))
png("fig2.png")
   plot(x, h2(x), type="l")
   lines(x, y_true, col="red")
dev.off()

l2 <- function(y_true,y_hat) 0.5 * (y_true - y_hat)^2

png("fig3.png")
   plot(x, l2(y_true,h1(x)), type="l")
   lines(x, l2(y_true,h2(x)), col="red")
dev.off()

引用自:https://stats.stackexchange.com/questions/299915

comments powered by Disqus

相關問答