图2:单层感知机分割平面
图2中,左图是没有激活函数的单层感知机结构,其中
是权重值,
是偏置值,它的工作原理是:输入一个样本(有两个特征
),如果
说明该样本是正类;如果
,说明该样本是负类。我们这里不讨论
的特殊情况。根据单层感知机的工作原理,我们画出右边的坐标图。
结论是:不带激活函数的单层感知机是一个线性分类器,不能解决线性不可分的问题。
不能解决图1中的二分类问题。
2)
用多个感知机(不带激活函数)
不带激活函数的单层感知机解决不了问题,那我们就会想到用多个感知机进行组合,获得更强的分类能力,看看能不能解决我们的线性不可分问题。如图3所示。
图9:可能学习到的分类曲线
总结:激活函数是用来加入非线性因素的,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题。要知道大部分问题是非线性问题,因此激活函数是必不可少的。
【待看】
Hyper-parameters in Action! Part I — Activation Functions
(可能需要翻墙)
3、常见的激活函数
26种神经网络激活函数可视化
Visualising Activation Functions in Neural Networks
(可能需要翻墙)
以三种常见的为例介绍,Sigmoid、tanh、Relu
3.1 Sigmoid
Sigmoid函数式:
Sigmoid函数图像:
函数在两端的饱和区梯度趋近于0,当反向传播时
容易出现梯度消失或梯度爆炸
(不清楚为什么会梯度爆炸?)
输出不是0均值(zero-centered)
,这样会导致,如果输入为正,那么导数总为正,反向传播总往正方向更新,如果输入为负,那么导数总为负,反向传播总往负方向更新,收敛速度缓慢
运算量较大
pytorch中Sigmoid函数的使用
def tanh():
x = np.arange(-10, 10, 0.1)
y = (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))
plt.plot(x, y)
plt.grid()
plt.show()
tanh 函数求导: