談談啟用函式以零為中心的問題

2021-10-20 06:36:26 字數 2393 閱讀 8361

今天在討論神經網路中的啟用函式時,陸同學提出 sigmoid 函式的輸出不是以零為中心的(non-zero-centered),這會導致神經網路收斂較慢。關於這一點,過去我只是將其記下,卻並未理解背後的原因。此篇談談背後的原因。

來自:

如圖是神經網路中乙個典型的神經元設計,它完全仿照人類大腦中神經元之間傳遞資料的模式設計。大腦中,神經元通過若干樹突(dendrite)的突觸(synapse),接受其他神經元的軸突(axon)或樹突傳遞來的訊息,而後經過處理再由軸突輸出。

在這裡,諸 xi 是其他神經元的軸突傳來的訊息,諸 wi 是突觸對訊息的影響,諸 wixi 則是神經元樹突上傳遞的訊息。這些訊息經由神經元整合後(z(x→;w→,b)=∑iwixi+b)再啟用輸出(f(z))。這裡,整合的過程是線性加權的過程,各輸入特徵 xi 之間沒有相互作用。啟用函式(active function)一般來說則是非線性的,各輸入特徵 xi 在此處相互作用。

此篇集中討論啟用函式輸出是否以零為中心的問題,因而不對啟用函式做過多的介紹,而只討論 sigmoid 與 tanh 兩個啟用函式。

sigmoid 函式的一般形式是

σ(x;a)=11+e−ax.

這裡,引數 a 控制 sigmoid 函式的形狀,對函式基本性質沒有太大的影響。在神經網路中,一般設定 a=1,直接省略。

sigmoid 函式的導數很好求

來自:

tanh 函式全稱 hyperbolic tangent,即雙曲正切函式。它的表示式是

tanh⁡(x)=2σ(2x)−1=ex−e−xex+e−x.

雙曲正切函式的導數也很好求

來自:

sigmoid 和 tanh 兩個函式非常相似,具有不少相同的性質。簡單羅列如下

對於 sigmoid 函式來說,它的值域是 (0,1),因此又有如下特點

此篇重點講 sigmoid 函式輸出值不以零為中心的這一缺點。

這裡首先需要給收斂速度做乙個詮釋。模型的最優解即是模型引數的最優解。通過逐輪迭代,模型引數會被更新到接近其最優解。這一過程中,迭代輪次多,則我們說模型收斂速度慢;反之,迭代輪次少,則我們說模型收斂速度快。

深度學習一般的學習方法是反向傳播。簡單來說,就是通過鏈式法則,求解全域性損失函式 l(x→) 對某一引數 w 的偏導數(梯度);而後輔以學習率 η,向梯度的反方向更新引數 w。

w←w−η⋅∂l∂w.

考慮學習率 η 是全域性設定的超引數,引數更新的核心步驟即是計算 ∂l∂w。再考慮到對於某個神經元來說,其輸入與輸出的關係是

f(x→;w→,b)=f(z)=f(∑iwixi+b).

因此,對於引數 wi 來說,

∂l∂wi=∂l∂f∂f∂z∂z∂wi=xi⋅∂l∂f∂f∂z.

因此,引數的更新步驟變為

wi←wi−ηxi⋅∂l∂f∂f∂z.

由於 wi 是上一輪迭代的結果,此處可視為常數,而 η 是模型超引數,引數 wi 的更新方向實際上由 xi⋅∂l∂f∂f∂z 決定。

又考慮到 ∂l∂f∂f∂z 對於所有的 wi 來說是常數,因此各個 wi 更新方向之間的差異,完全由對應的輸入值 xi 的符號決定。

至此,為了描述方便,我們以二維的情況為例。亦即,神經元描述為

f(x→;w→,b)=f(w0x0+w1x1+b).

現在假設,引數 w0, w1 的最優解 w0∗, w1∗ 滿足條件

{w0這也就是說,我們希望 w0 適當增大,但希望 w1 適當減小。考慮到上一小節提到的更新方向的問題,這就必然要求 x0 和 x1 符號相反。

但在 sigmoid 函式中,輸出值恒為正。這也就是說,如果上一級神經元採用 sigmoid 函式作為啟用函式,那麼我們無法做到 x0 和 x1 符號相反。此時,模型為了收斂,不得不向逆風前行的風助力帆船一樣,走 z 字形逼近最優解。

如圖,模型引數走綠色箭頭能夠最快收斂,但由於輸入值的符號總是為正,所以模型引數可能走類似紅色折線的箭頭。如此一來,使用 sigmoid 函式作為啟用函式的神經網路,收斂速度就會慢上不少了。

關於啟用函式的問題

1 sigmoid函式 優點 一是輸出在 0,1 之間,單調連續,輸出範圍有限。二是容易求導。缺點 一是容易產生梯度消失,導致訓練困難。二是其輸出不是以0為中心。三是要進行指數運算,速度相對較慢。建議 基於上面sigmoid的性質,所以不建議在中間層使用sigmoid啟用函式,因為它會讓梯度消失。2...

為神經網路選擇正確的啟用函式

知乎專欄為神經網路選擇正確的啟用函式 我們都知道神經網路模型中使用啟用函式的主要目的是將非線性特性引入到我們的網路中,強化網路的學習能力。啟用函式應用於隱藏層和輸出層中每個節點的稱為 z 的輸入加權和 此處輸入可以是原始資料或前一層的輸出 在本篇文章中我們將討論神經網路中常見的啟用函式,並使用視覺化...

關於分類問題中的啟用函式特性影響

哈哈,先原諒這乙個月在重圍中的藉口。有幾次想起還有blogs這件事,也是覺得可能這個月沒有publication留下。結果剛才debug發現了些有趣的事情,當然,現象是表面,insight是關鍵。由此的事情遠沒有完成,先在這裡記下,探索也是部分的需要計畫的 事情源於之前做的乙個分類問題,由於牽涉了新...