Sigmoid (logistic)#
主要用於 Binary classification, 輸出範圍為 (0,1)
Sigmoid(x)=(1+e−x)1
tanh#
也是用於 binary classification, 輸出範圍為 (−1,1)
tanh(x)=(1+e−2x)2−1=2∗Sigmoid(2x)−1
ReLU (Rectified Linear Unit)#
前兩者的輸出使其侷限在二分類問題, 且計算成本太大, ReLU 可以加速收斂但是當 LR 過大時會導致很多死神經
ReLU(x)=max(0,x)
GELU (Gaussian Error Linear Unit)#
結合 ReLU 跟 Sigmoid, 在解決死神經的問題時加快收斂速度
GELU(x)=xΦ(x)其中 Φ 可以使用標準常態分佈的 CDF 來加速計算
Φ(x)=∫−∞x2πe−t2/2dt=21[1+erf(2x)]GELU(x)=xP(X≤x)=xΦ(x)=x⋅21[1+erf(x/2)]
Swish#
類似 GELU 但是計算成本更低一點 (用 Sigmoid 當門控)
Swish(x)=x⋅σ(βx)=1+e−βxx
β 是常數或可學習參數, β=1 時為 SiLU, β=1.702 時就是 GELU 的一種近似
GLU (Gated Linear Unit)#
在 FFN 的時候使用 ReLU 的話會導致每個神經元的激活狀態只取決於自己的值, GLU 讓門本身也是學出來的
GLU(x)=σ(xW)⊗(xV)
新的 FFN 大多使用 SwiGLU
FFNSwiGLU(x)=(Swish1(xW1)⊗xV)W2