[徵文] Self-Normalizing Neural Networks
既然都報名了,所以就讀了。
以下會用我自己的理解、用比較口頭的敘述,若用字不精確、還請見諒。
----
arXiv: https://arxiv.org/abs/1706.02515
I. Abstract
Deep Learning 中有兩個很成功的 model,CNNs 在 vision 上、RNNs 在 NLP tasks 上。
那麼傳統的 Feed-forward NN (以下稱 FNNs) 的 Deep Learning 成功故事卻極少。
FNN 表現好的狀況都是 shallow (對比於其他兩個 deep model) 的,
裡面的 abstract representation 沒辦法做得 high-level,因爲 shallow。
本篇提出 self-normalizing neural networks (SNNs) 的方法,
讓 FNNs 有能力做出 high-level abstract representation 的能力。
這個 SNNs 你只要躺著用,每一層 layer 的 output 都會自動收斂到
mean = 0, variance = 1 ,對比其他 normalization 方法是需要主動去
做 normalization 操作的(筆者註:像是 batch norm 你要導入額外的參數
γ 跟 β,而且是需要學習的參數,所以 SNNs 也太爽了吧,躺著用)
本篇 proposed 這個 SNNs 使用的 activation function 是
"scaled exponential linear units" (SELUs),這個 activation function 有
self-normalizing 的特性。這篇用 Banach fixed-point theorem (筆者註:?)
證明,SNNs 把 layer output 收斂到 mean = 0, var = 1 的能力,而且是能夠
抵抗 noise 跟有的沒的 perturbations。
SNNs 的收斂性帶來以下好處:
1) 網路能夠變 deep
2) 能夠導入 strong regularization scheme (筆者註:e.g. dropout 像是 noise term)
3) learning 的穩定性高
即使在尚未把網路收斂到 var = 1 的狀況,本篇證明這個 var 是有上下界的,因此
不會出現 gradient exploding 或 vanishing 的狀況。
本篇火力展示:
1) 121 tasks from the UCI machine learning repository
2) drug discovery benchmarks
3) astronomy tasks with standard FNNs
本篇有 code: https://github.com/bioinf-jku/SNNs
II. Introduction
這裡前兩段在講 CNN、RNN 成功的故事,麻煩各位有興趣自行閱讀,裡面就是大量的 citation。
在 training deep 的 CNN 方面,有 batch normalization、layer normalization、
weight normlization。但是這些 normlization 的技術會受到來自 SGD、
stochastic regularization (e.g. dropout) 等的干擾。
CNN 與 RNN 的 model 因為有 weight sharing 的關係,training 過程中受到的干擾
比較少,而且整個 model 比較穩定。而這些干擾對 FNNs 就影響很大,
如 figure 1 所示。本篇認為 FNNs 因為對干擾很敏感,而比 CNN、RNN 不好訓練。
SNNs 則夠 robust 去抵抗這些干擾,如 Figure 1 所示。
III. Self-normalizing Neural Networks (SNNs)
先定義一堆符號:
1) actvation function f
2) weight matrix W
兩個 layer 中間的 weight matrix
3) activations in lower layer x
就是兩個 layer 之間,前面的 layer 的 output
4) input z = Wx
後面 layer 的會拿到 乘完 weight matrix 的東西
5) activation in higher layer y = f(z)
後面 layer 的 output
6) activations 的 mean
μ = E(x_i)
~
μ = E(y_i)
7) activation 的 variance (註:這裡的 notation 是 $nu$)
ν = Var(x_i)
~
ν = Var(y_i)
8) weight vector 的 mean 為 ω
9) weight vector 的 var 為 τ
10) g 是個 function,代表兩個 layer 之間 mean 跟 variance
的關係。
~ ~
g(μ, ν) = (μ, ν)
batch normalization、layer normalization 或 weight normalization
則是去確保這個 g function 會把東西 mapping 到 predefined values,
通常是 (0, 1)。
Definition 1:
我們稱一個網路是 self-normalizing 需滿足以下條件。
它的每一個 activations y 必須有一個 mapping g: Ω→Ω,
而且這個 g 擁有一個好的 fixed point (ω, τ)。
Ω定義成 Ω = { (μ, ν) | μ ∈ [μ_min, μ_max],
ν ∈ [ν_min, ν_max]}
而 g(Ω) ⊆ᆪ[。
當 g 被多次重複的 apply 到 Ω,Ω裡面的每個點,會收斂到
fixed point (ω, τ)。
Definition 1 筆者註
這裡我們的 g function 就是 normalization 的手段。
數學上的 fixed point 定義成 g(ω, τ) = (ω, τ),
即不管怎麼 apply mapping,其結果不動的點。
這個 fixed point 是由 layer 中間 weight vector 的 mean 跟 var 組成。
如果整個 networks 的 activations (就是每個 layer 的 y)的 mean and var 都在
predefined intervals 裡面,那麼我們會說整個網路被 normalized 了。
現在我們單看兩個 layer 之間的 activations x and y,
如果 x 的 mean 跟 var 值域已經在 predefined intervals
那麼 y 的 mean 跟 var 也會在 predefined intervals。
因此我們的 normalization 有 transitive 的特性,橫跨整個網路。
最後,如果 g 被 iteratively apply,這些 mean 跟 var
會收斂到 fixed point。
SSNs 能夠使 activations x 的 nomalization propagating 到整個網路。
每個 layer 的 fixed point (ω, τ) 可以一樣,也可以不同,沒限制。
建構一個 SNNs 的網路:
其實就是針對 g function 做設計,那麼要從兩個地方下手,互相搭配
1) 精心設計的 activation function
2) weight matrix 的 initialization function
先來講第一種 approach,本篇提出了 "scaled exponential linear units" (SELU)
來達成 FNNs 的 self-normalizing。見本文 equation 2
selu(x) = λ( x > 0 ? x : (αe^x - α) )
我們研究過其他 activation function,以下皆不能作出 SNNs:
ReLUs, sigmoid, tanh, leaky ReLUs 都不適用。
在設計這個 activation function 有以下幾個要點:
1) function 的值域要包含正負,好讓我們控制 mean
2) 要有 saturation regions,即微分接近 0 的區域 (筆者註:
像是 sigmoid 的兩邊,對於 大 跟 很大 的 x 的 output 都是趨近 1),
這樣才能吸收 variance 過大的狀況
3) 要有斜率大於 1 的 regions,來處理 vaiarnce 過小的狀況
4) 是個 continuous curve
根據這些要點,我們 proposed 的 SELU 的 λ 的選擇上要大於 1 。
g function 的推導:
前面我們已經選出了我們的 activation function f(x) = selu(x)
那麼 g 與 f 之間的關係就很明確了。透過 z
把整件事情連起來。推導在 paper 的 equation 3 ~ 5。
詳細的推導這裡不敘述了。
這裡做了些假設在 z 上面,只要整個隱藏層的 node 數量夠多,
Deep Learning 中上百個 node 很常見,那麼 z 的 distribution,
根據中央極限定理,會形成一個 normal distribution,文中是用 normal dist.
下去推導的。
對 fixed point (0, 1) 的討論:
假設我們的 weight matrix 已經 normalized 出 ω = 0, τ = 1。
也就是 fixed point (μ ,ν) = (0, 1)。
現在我們把這個 μ 跟 ν 帶入上一段寫出來的
equation 4 跟 5,可以解出我們 selu(x) 裡面的參數
α 約為 1.6733 與 λ 約為 1.0507
筆者註:底下還有些對於這個 fixed point 選擇的證明,使 g 是個
contraction mapping,即這個 mapping stable 會收斂。
fixed point 對 unnormalized weights 的討論:
在網路 training 的過程中,weight vector 可能被更新了,然後就不 normalized 了。
而在我們採用上一段得出的兩個參數 α, λ 的狀況下,
如果 weight vector 的 mean 跟 var (ω, τ) 夠接近 (0, 1),
這個 g function 的 fixed point 儘管不是 (0, 1),
但也會很接近 (0, 1)。
而且這段接下來講述各種不同的 variance ν的狀況,全部的證明都附在 appendix。
簡單來說,這裡證明了 SNNs 的 g 的 fixed point 在
unnormalized weights 的狀況下是存在的。
而且對於各種 ν 過大或過小的狀況都能夠處理,而能防止網路的更新上的
gradient exploding 或是 vanishing。證明就麻煩各位有興趣自行研讀了。
筆者註:所以大家在 init 完 weights 後,即使 training 過程中的 weights
不 normalized 也沒關係。我們的 g 夠厲害。
weight initialization:
基本上就是你能夠作出 ω = 0, τ = 1 的方法都可以,本篇提了幾個:
uniform distribution、truncated Gaussian distribution,還有一篇
前人的 MSRA initialization 都有相似的效果。
"Alpha-dropout"
本篇提出一個新的 dropout 技術,來用在 SNNs 中。
這個 Alpha-drouput 會隨機把 output 改成 -λα(在使用 SELU 的狀況下),
而能夠維持 activations 的 mean 跟 variance 不變。
在我們的經驗中 dropout rate 設定成 0.05 或 0.1 有不錯的效果。
III. 實驗
在這個 section 中,跑了些不同的 normalization 技術的比較,
這個部分就麻煩各位有興趣再來讀這裡的表格了。
IV. 結論
我們的 SNNs 讓 FNNs 能夠在 training 上大躍進。而且在越 deep 效果越好。
解決了 gradient exploding 跟 vanishing 的問題。
----
個人心得:
大概花了兩天來寫這個 post,就不管有沒有符合徵文標準的字數了。
大家覺得有學到點啥比較重要。
而有些個人的理解與見解已經混在文中了。
要不我們也來提出個啥 SNNs 的 activation function 就叫 PTT 好了?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.73.135
※ 文章網址: https://www.ptt.cc/bbs/DataScience/M.1531069344.A.95A.html
推
07/09 02:44,
6年前
, 1F
07/09 02:44, 1F
推
07/09 06:16,
6年前
, 2F
07/09 06:16, 2F
推
07/09 07:26,
6年前
, 3F
07/09 07:26, 3F
推
07/09 09:59,
6年前
, 4F
07/09 09:59, 4F
推
07/09 11:20,
6年前
, 5F
07/09 11:20, 5F
→
07/09 11:27,
6年前
, 6F
07/09 11:27, 6F
推
07/09 12:00,
6年前
, 7F
07/09 12:00, 7F
推
07/09 12:08,
6年前
, 8F
07/09 12:08, 8F
推
07/09 12:14,
6年前
, 9F
07/09 12:14, 9F
推
07/09 13:03,
6年前
, 10F
07/09 13:03, 10F
推
07/09 13:24,
6年前
, 11F
07/09 13:24, 11F
推
07/09 13:34,
6年前
, 12F
07/09 13:34, 12F
→
07/09 13:35,
6年前
, 13F
07/09 13:35, 13F
推
07/09 18:56,
6年前
, 14F
07/09 18:56, 14F
推
07/10 01:52,
6年前
, 15F
07/10 01:52, 15F
→
07/10 01:52,
6年前
, 16F
07/10 01:52, 16F
推
07/23 14:31,
6年前
, 17F
07/23 14:31, 17F
→
07/23 14:31,
6年前
, 18F
07/23 14:31, 18F
討論串 (同標題文章)
DataScience 近期熱門文章
PTT數位生活區 即時熱門文章