关于人工智能:CV知识点扫盲激活函数篇

44次阅读

共计 8560 个字符,预计需要花费 22 分钟才能阅读完成。

最近正值秋招季,很多同学都在忙着温习深度学习相干的基础知识应答面试和口试。这段时间,正好发现自己基础知识也比拟单薄,想系统性的温习和整顿一下。基于这样一个出发点,最近筹备开始一个名为【CV 知识点扫盲】的专题文章,帮忙本人和更多人温习计算机视觉中的基础知识,也心愿可能对正在找工作的同学有帮忙。

1、什么是激活函数?

在神经网络中,一个节点的激活函数 (Activation Function) 定义了该节点在给定的输出变量或输出汇合下的输入。wiki 中以计算机芯片电路为例,规范的计算机芯片电路能够看作是依据输出失去开(1)或关(0)输入的数字电路激活函数。激活函数次要用于晋升神经网络解决非线性问题的能力。激活函数各式各样,各有优缺点,目前罕用的有 ReLU、sigmoid、tanh 等。

2、为什么须要激活函数?

当不必激活函数时,神经网络的权重和偏差只会进行线性变换。线性方程很简略,然而解决简单问题的能力无限。没有激活函数的神经网络本质上就是一个线性回归模型。为了不便了解,以一个简略的例子来阐明。思考如下网络

在不必激活函数的状况下,该图可用如下公式示意

$$
output =w 7(input 1 * w 1+i n p u t 2 * w 2)+w 8(i n p u t 1 * w 3+i n p u t 2 * w 4)+w 9(i n p u t 1 * w 5+i n p u t 2 * w 6)
$$

本质就是上面的线性方程:

$$
output =\left[\begin{array}{c}w 1 * w 7+w 3 * w 8+w 5 * w 9 \\ w 2 * w 7+w 4 * w 8+w 6 * w 9\end{array}\right] *\left[\begin{array}{c}\text {input} 1 \\ \text {input} 2\end{array}\right] \Longrightarrow Y=W X
$$

若在暗藏层引入激活函数 $h(y)=\max (y, 0)$,那么原始式子就无奈用简略线性方程示意了。

$$
output =w 7 * \max (input 1 * w 1+i n p u t 2 * w 2,0)+w B * \max (input 1 * w 3+i n p u t 2 * w 4,0)+w 9 * \max (input 1 * w 5+i n p u t 2 * w 6,0)
$$

3、激活函数的一些个性

非线性(Nonlinear) 当激活函数是非线性的,那么一个两层神经网络也证实是一个通用近似函数通用近似实践。而恒等激活函数则无奈满足这一个性,当多层网络的每一层都是恒等激活函数时,该网络本质等同于一个单层网络。

间断可微(Continuously differentiable) 通常状况下,当激活函数间断可微,则能够用基于梯度的优化办法。(也有例外,如 ReLU 函数虽不是间断可微,应用梯度优化也存在一些问题,如 ReLU 存在因为梯度过大或学习率过大而导致某个神经元输入小于 0,从而使得该神经元输入始终是 0,并且无奈对与其相连的神经元参数进行更新,相当于该神经元进入了“休眠”状态,但 ReLU 还是能够应用梯度优化的。)二值阶跃函数在 0 处不可微,并且在其余中央的导数是零,所以梯度优化办法不适用于该激活函数。

枯燥 (Monotonic) 当激活函数为枯燥函数时,单层模型的误差曲面肯定是凸面。即对应的误差函数是凸函数,求得的最小值肯定是全局最小值。

一阶导枯燥 (Smooth functions with a monotonic derivative) 通常状况下,这些函数体现更好。

原点近似恒等函数(Approximates identity near the origin) 若激活函数有这一个性,神经网络在随机初始化较小的权重时学习更高效。若激活函数不具备这一个性,初始化权重时必须特地小心。

4、机器学习畛域常见的激活函数?

Identity(恒等函数)

形容:一种输出和输入相等的激活函数,比拟适宜线性问题,如线性回归问题。但不适用于解决非线性问题。

方程式:$f(x)=x$

一阶导:$f^{\prime}(x)=1$

图形

Binary step(单位阶跃函数)

形容:step 与神经元激活的含意最贴近,指当刺激超过阈值时才会激发。然而因为该函数的梯度始终为 0,不能作为深度网络的激活函数

方程式:$f(x)=\left\{\begin{array}{ll}0 & \text {for} x<0 \\ 1 & \text {for} x \geq 0\end{array}\right.$

一阶导:$f^{\prime}(x)=\left\{\begin{array}{ll}0 & \text {for} x \neq 0 \\ ? & \text {for} x=0\end{array}\right.$

图形

Sigmoid(S 函数又称 Logistic 逻辑函数)

形容 :应用很广的一类激活函数,具备指数函数形态,在物理意义上最靠近生物神经元。并且值域在(0,1) 之间,能够作为概率示意。该函数也通常用于对输出的归一化,如 Sigmoid 穿插熵损失函数。Sigmoid 激活函数具备梯度隐没和饱和的问题,一般来说,sigmoid 网络在 5 层之内就会产生梯度隐没景象。

方程式:$f(x)=\sigma(x)=\frac{1}{1+e^{-x}}$

一阶导:$f^{\prime}(x)=f(x)(1-f(x))$

图形

TanH(双曲正切函数)

形容 :TanH 与 Sigmoid 函数相似,在输出很大或很小时,输入简直平滑,梯度很小,不利于权重更新,容易呈现梯度隐没和饱和的问题。不过 TanH 函数值域在(-1,1) 之间,以 0 为核心拥护称,且原点近似恒等,这些点是加分项。个别二分类问题中,暗藏层用 tanh 函数,输入层用 sigmod 函数。

方程式:$f(x)=\tanh (x)=\frac{\left(e^{x}-e^{-x}\right)}{\left(e^{x}+e^{-x}\right)}$

一阶导:$f^{\prime}(x)=1-f(x)^{2}$

图形

ArcTan(反正切函数)

形容:ArcTen 从图形上看相似 TanH 函数,只是比 TanH 平缓,值域更大。从一阶导看出导数趋于零的速度比较慢,因而训练比拟快。

方程式:$f(x)=\tan ^{-1}(x)$

一阶导:$f^{\prime}(x)=\frac{1}{x^{2}+1}$

图形

Softsign 函数

形容:Softsign 从图形上看也相似 TanH 函数,以 0 为核心拥护称,训练比拟快。

方程式:$f(x)=\frac{x}{1+\|x\|}$

一阶导:$f^{\prime}(x)=\frac{1}{(1+\|x\|)^{2}}$

图形

Rectified linear unit(线性整流函数,ReLU)

形容:比拟风行的激活函数,该函数保留了相似 step 那样的生物学神经元机制,即高于 0 才激活,不过因在 0 以下的导数都是 0,可能会引起学习迟缓甚至神经元死亡的状况。

方程式:$f(x)=\left\{\begin{array}{ll}0 & \text {for} x \leq 0 \\ x & \text {for} x>0\end{array}\right.$

一阶导:$f^{\prime}(x)=\left\{\begin{array}{ll}0 & \text {for} x \leq 0 \\ 1 & \text {for} x>0\end{array}\right.$

图形

Leaky rectified linear unit(带泄露随机线性整流函数,Leaky ReLU)

形容:relu 的一个变动,即在小于 0 局部不等于 0,而是加一个很小的不为零的斜率,缩小神经元死亡带来的影响。

方程式:$f(x)=\left\{\begin{array}{ll}0.01 x & \text {for} x<0 \\ x & \text {for} x \geq 0\end{array}\right.$

一阶导:$f^{\prime}(x)=\left\{\begin{array}{ll}0.01 & \text {for} x<0 \\ 1 & \text {for} x \geq 0\end{array}\right.$

图形

Parameteric rectified linear unit(参数化线性整流函数,PReLU)

形容:也是 ReLU 的一个变动,与 Leaky ReLU 相似,只不过 PReLU 将小于零局部的斜率换成了可变参数 α。这种变动使值域会根据 α 不同而不同。

方程式:$f(\alpha, x)=\left\{\begin{array}{ll}\alpha x & \text {for} x<0 \\ x & \text {for} x \geqslant 0\end{array}\right.$

一阶导:$f^{\prime}(\alpha, x)=\left\{\begin{array}{ll}\alpha & \text {for} x<0 \\ 1 & \text {for} x \geq 0\end{array}\right.$

图形

Randomized leaky rectified linear unit(带泄露随机线性整流函数,RReLU)

形容:在 PReLU 根底上将 α 变成了随机数。

方程式:$f(\alpha, x)=\left\{\begin{array}{ll}\alpha x & \text {for} x<0 \\ x & \text {for} x \geqslant 0\end{array}\right.$

一阶导:$f^{\prime}(\alpha, x)=\left\{\begin{array}{ll}\alpha & \text {for} x<0 \\ 1 & \text {for} x \geq 0\end{array}\right.$

图形

Exponential linear unit(指数线性函数,ELU)

形容:ELU 小于零的局部采纳了负指数模式,相较于 ReLU 权重能够有负值,并且在输出取较小值时具备软饱和的个性,晋升了对噪声的鲁棒性

方程式:$f(\alpha, x)=\left\{\begin{array}{ll}\alpha\left(e^{x}-1\right) & \text {for} x \leq 0 \\ x & \text {for} x>0\end{array}\right.$

一阶导:$f^{\prime}(\alpha, x)=\left\{\begin{array}{ll}f(\alpha, x)+\alpha & \text {for} x \leq 0 \\ 1 & \text {for} x>0\end{array}\right.$

图形

Scaled exponential linear unit(扩大指数线性函数,SELU)

形容:ELU 的一种变动,引入超参 λ 和 α,并给出了相应取值,这些取值在原论文中(Self-Normalizing Neural Networks)具体推导过程

方程式:$f(\alpha, x)=\lambda\left\{\begin{array}{ll}\alpha\left(e^{x}-1\right) & \text {for} x<0 \\ x & \text {for} x \geq 0\end{array}\right.$$with \quad \lambda=1.0507 \quad and \quad \alpha=1.67326$

一阶导:$f^{\prime}(\alpha, x)=\lambda\left\{\begin{array}{ll}\alpha\left(e^{x}\right) & \text {for} x<0 \\ 1 & \text {for} x \geq 0\end{array}\right.$

图形

S-shaped rectified linear activation unit(S 型线性整流激活函数,SReLU)

形容:也是 ReLU 的一种变动,不同的是该函数有三个分段,四个超参数,这种设置使函数图形看起来像 S 型。

方程式

$$
f_{t_{l}, a_{l}, t_{r}, a_{r}}(x)=\left\{\begin{array}{ll}t_{l}+a_{l}\left(x-t_{l}\right) & \text {for} x \leq t_{l} \\ x & \text {for} t_{l}<x<t_{r} \\ t_{r}+a_{r}\left(x-t_{r}\right) & \text {for} x \geq t_{r}\end{array}\right.
$$

一阶导

$$
f_{t_{l}, a_{l}, t_{r}, a_{r}}^{\prime}(x)=\left\{\begin{array}{ll}a_{l} & \text {for} x \leq t_{l} \\ 1 & \text {for} t_{l}<x<t_{r} \\ a_{r} & \text {for} x \geq t_{r}\end{array}\right.
$$

图形

SoftPlus 函数

形容:是 ReLU 的平滑代替,函数在任何中央间断且值域非零,防止了死神经元。不过因不对称且不以零为核心,能够影响网络学习。因为导数必然小于 1,所以也存在梯度隐没问题。

方程式

$$
f(x)=\ln \left(1+e^{x}\right)
$$

一阶导

$$
f^{\prime}(x)=\frac{1}{1+e^{-x}}
$$

图形

Bent identity(蜿蜒恒等函数)

形容:能够了解为 identity 和 ReLU 之间的一种折中,不会呈现死神经元的问题,不过存在梯度隐没和梯度爆炸危险。

方程式

$$
f(x)=\frac{\sqrt{x^{2}+1}-1}{2}+x
$$

一阶导

$$
f^{\prime}(x)=\frac{x}{2 \sqrt{x^{2}+1}}+1
$$

图形

Sinusoid(正弦函数)

形容:Sinusoid 作为激活函数,为神经网络引入了周期性,且该函数处处分割,以零点对称。

方程式

$$
f(x)=\sin (x)
$$

一阶导

$$
f^{\prime}(x)=\cos (x)
$$

图形

Sinc 函数

形容:Sinc 函数在信号处理中尤为重要,因为它表征了矩形函数的傅立叶变换。作为激活函数,它的劣势在于处处可微和对称的个性,不过容易产生梯度隐没的问题。

方程式

$$
f(x)=\left\{\begin{array}{ll}1 & \text {for} x=0 \\ \frac{\sin (x)}{x} & \text {for} x \neq 0\end{array}\right.
$$

一阶导

$$
f^{\prime}(x)=\left\{\begin{array}{ll}0 & \text {for} x=0 \\ \frac{\cos (x)}{x}-\frac{\sin (x)}{x^{2}} & \text {for} x \neq 0\end{array}\right.
$$

图形

Gaussian(高斯函数)

形容:高斯激活函数不罕用。

方程式

$$
f(x)=e^{-x^{2}}
$$

一阶导

$$
f^{\prime}(x)=-2 x e^{-x^{2}}
$$

图形

Hard Sigmoid(分段近似 Sigmoid 函数)

形容 :是 Sigmoid 函数的分段线性近似,更容易计算,不过存在梯度隐没和神经元死亡的问题
方程式

$$
f(x)=\left\{\begin{array}{ll}0 & \text {for} x<-2.5 \\ 0.2 x+0.5 & \text {for}-2.5 \geq x \leq 2.5 \\ 1 & \text {for} x>2.5\end{array}\right.
$$

一阶导

$$
f^{\prime}(x)=\left\{\begin{array}{ll}0 & \text {for} x<-2.5 \\ 0.2 & \text {for}-2.5 \geq x \leq 2.5 \\ 0 & \text {for} x>2.5\end{array}\right.
$$

图形

Hard Tanh(分段近似 Tanh 函数)

形容:Tanh 激活函数的分段线性近似。

方程式

$$
f(x)=\left\{\begin{array}{ll}-1 & \text {for} x<-1 \\ x & \text {for}-1 \geq x \leq 1 \\ 1 & \text {for} x>1\end{array}\right.
$$

一阶导

$$
f^{\prime}(x)=\left\{\begin{array}{ll}0 & \text {for} x<-1 \\ 1 & \text {for}-1 \geq x \leq 1 \\ 0 & \text {for} x>1\end{array}\right.
$$

图形

LeCun Tanh(也称 Scaled Tanh, 按比例缩放的 Tanh 函数)

形容:Tanh 的缩放版本

方程式

$$
f(x)=1.7519 \tanh \left(\frac{2}{3} x\right)
$$

一阶导

$$
\begin{aligned} f^{\prime}(x) &=1.7519 * \frac{2}{3}\left(1-\tanh ^{2}\left(\frac{2}{3} x\right)\right) \\ &=1.7519 * \frac{2}{3}-\frac{2}{3 * 1.7519} f(x)^{2} \end{aligned}
$$

图形

Symmetrical Sigmoid(对称 Sigmoid 函数)

形容:是 Tanh 的一种代替办法,比 Tanh 形态更扁平,导数更小,降落更迟缓。

方程式

$$
\begin{aligned} f(x) &=\tanh (x / 2) \\ &=\frac{1-e^{-x}}{1+e^{-x}} \end{aligned}
$$

一阶导

$$
\begin{aligned} f^{\prime}(x) &=0.5\left(1-\tanh ^{2}(x / 2)\right) \\ &=0.5\left(1-f(x)^{2}\right) \end{aligned}
$$

图形

Complementary Log Log 函数

形容:是 Sigmoid 的一种代替,相较于 Sigmoid 更饱和。

方程式

$$
f(x)=1-e^{-e^{x}}
$$

一阶导

$$
f^{\prime}(x)=e^{x}\left(e^{-e^{x}}\right)=e^{x-e^{x}}
$$

图形

Absolute(绝对值函数)

形容:导数只有两个值。

方程式

$$
f(x)=|x|
$$

一阶导

$$
f^{\prime}(x)=\left\{\begin{array}{ll}-1 & \text {for} x<0 \\ 1 & \text {for} x>0 \\ ? & \text {for} x=0\end{array}\right.
$$

图形

5、transformer FFN 层用的激活函数是什么?为什么?

ReLU。ReLU 的长处是收敛速度快、不会呈现梯度隐没 or 爆炸的问题、计算复杂度低。

6、Bert、GPT、GPT2 中用的激活函数是什么?为什么?

Bert、GPT、GPT2、RoBERTa、ALBERT 都是用的 Gelu。

$$
\operatorname{GELU}(x)=x P(X \leq x)=x \Phi(x)
$$

直观了解:x 做为神经元的输出,P(X<=x)越大,x 就越有可能被保留;否则越小,激活函数输入就趋近于 0.

7、如何抉择激活函数

  • 用于分类器时,二分类为 Sigmoid,多分类为 Softmax,这两类个别用于输入层;
  • 对于长序列的问题,暗藏层中尽量避免应用 Sigmoid 和 Tanh,会造成梯度隐没的问题;
  • Relu 在 Gelu 呈现之前在大多数状况下比拟通用,但也只能在隐层中应用;
  • 当初 2022 年了,暗藏层中次要的抉择必定优先是 Gelu、Swish 了。

8、ReLU 的优缺点?

长处

  • 从计算的角度上,Sigmoid 和 Tanh 激活函数均须要计算指数,复杂度高,而 ReLU 输出一个数值即可失去激活值;
  • ReLU 函数被认为有生物上的解释性,比方单侧克制、宽兴奋边界(即兴奋水平 也能够十分高)人脑中在同一时刻大略只有 1 ∼ 4% 的神经元处于沉闷状态,所以单侧克制提供了网络的稠密表达能力,宽激活边界则能无效解决梯度隐没等问题。

毛病

  • ReLU 和 Sigmoid 一样,每次输入都会给后一层的神经网络引入偏置偏移,会影响梯度降落的效率。
  • ReLU 神经元死亡的问题,不失常的一次参数更新,可能是使得激活项为 0,当前的梯度更新也为 0,神经元死亡。

【技术交换】

已建设深度学习公众号——FightingCV,关注于最新论文解读、基础知识坚固、学术科研交换,欢送大家关注!!!

举荐退出 FightingCV交换群 ,每日会发送论文解析、算法和代码的干货分享,进行学术交流,加群请增加小助手 wx:FightngCV666,备注: 地区 - 学校(公司)- 名称

面向小白的顶会论文外围代码库:https://github.com/xmu-xiaoma666/External-Attention-pytorch

面向科研小白的 YOLO 指标检测库:https://github.com/iscyy/yoloair

参考:

https://www.jianshu.com/p/466e54432bac

https://zhuanlan.zhihu.com/p/354013996

https://blog.csdn.net/qq\_22795223/article/details/106184310

本文由 mdnice 多平台公布

正文完
 0