理解激活函数在神经网络模型构建中的作用

什么是激活函数

在生物学家研究大脑神经元工作机理时,发现如果一个神经元开始工作时,该神经元是一种被激活的状态,我想着大概就是为什么神经网络模型中有一个单元叫做激活函数。

那么什么是激活函数呢,我们可以从逻辑回归模型开始理解它,下图是一个Logistic回归分类器:

在上图中我们发现,Logistic回归分类器在对所有的输入做了线性相加(Net ipt function)之后,其结果经过了一个激活函数(Activation function),此时的输出:

而在Logistic回归分类器中去除误差的回传(Error)和单位阶跃函数(Unit step function)之后,其实剩下的东西就是一个神经元。 神经网络是由多个神经元在宽度和深度上链接而成的,通俗点理解,激活函数就是神经网络中每个神经元的输出后乘起来的那个函数。比如在下图中:

所有的隐层的神经元(a)和输出层的神经元(Y)后面其实都会经过一个激活函数,那么为什么输入层(x)没有呢,因为虽然在神经网络中,输入层,隐含层和输出层都用上图所示的“圆圈”表示,但是输入层不是神经元!!! 那么在神经网络中,激活函数(Activation function)一般选择什么样的函数呢:

除此之外,在深层神经网络中,比较常用的是ReLu(Rectified Linear Units)函数,这个我们会在最后一部分介绍它。

激活函数的作用

将其带入后可以得到Y与x的关系:

最终的输出:

可以看到,如果没有激活函数的话,无论我们如何训练神经网络的参数,得到都将是一个线性的模型,在二维空间下是一条线,在三维空间下是一个平面。而线性模型是有非常大的局限性的,比如下面的问题:

我们永远不可能用一个线性的模型取区分橙色和蓝色的点,而当我们加入激活函数后,用上面的网络结构是可以解决线性不可分问题的。(注意下图中的网络与上图公式推导的网络只是输入不同而已)

所以,最后总结一下:激活函数在神经网络中的功能即通过对加权的输入进行非线性组合产生非线性决策边界(non-linear decision boundary)。

深层神经网络中的激活函数

最后一个部分,在说明一下深层神经网络中的激活函数,它的作用与浅层网络是相同的—增加非线性,但是使用的是ReLu(Rectified Linear Units)函数,主要是为了解决Sigmoid函数带来的梯度消失问题(这个不是本文的重点,我们不详细说明它)。下面这张图就是ReLu函数:

可以看到它是一个分段线性函数,对于所有小于等于0的数,f(x)=0;对于所有大于0的数,f(x)=x。这个函数可以作为神经网络的激活函数关在在于,在多维空间下任何一个曲面都可以分解为多段平面,这个曲面就是最后的决策面,而深层神经网络依靠复杂的网络结果和深度取用多个平面拟合决策面,最后达到满意的效果。

参考: 《Machine Learning》Tom M.Mitchell 《TensorFlow 实战Google深度学习框架》 《神经网络中激活函数的作用》 《 通俗理解神经网络之激励函数(Activation Function)》

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏desperate633

小白也能看懂的BP反向传播算法之Further into Backpropagation

在上一篇文章小白也能看懂的BP反向传播算法之Let's practice Backpropagation,我们计算了一个带sigmoid函数的嵌套网络的反向传播...

621
来自专栏新智元

【值得收藏的深度学习思维导图】全面梳理基本概念与11大模型关系

【新智元导读】 作者dformoso在Github上放出了自己绘制的深度学习思维导图,共有三张:基本概念、架构和TensorFlow。以图示的方法介绍深度学习必...

2693
来自专栏深度学习与计算机视觉

从AlexNet理解卷积神经网络的一般结构

2012年AlexNet在ImageNet大赛上一举夺魁,开启了深度学习的时代,虽然后来大量比AlexNet更快速更准确的卷积神经网络结构相继出现,但是Alex...

3506
来自专栏Python中文社区

机器学习算法实践:树回归

專 欄 ❈PytLab,Python 中文社区专栏作者。主要从事科学计算与高性能计算领域的应用,主要语言为Python,C,C++。熟悉数值算法(最优化方法,...

3549
来自专栏YG小书屋

深度学习之Logistic Regression

2186
来自专栏计算机视觉战队

卷积神经网络就是这么简单就能学会

卷积神经网络和前几次介绍的神经网络非常相似:它们都是由神经元组成,神经元中有具有学习能力的权重和偏差。每个神经元都得到一些输入数据,进行内积运算后再进行激活函数...

1062
来自专栏杨熹的专栏

详解循环神经网络(Recurrent Neural Network)

今天的学习资料是这篇文章,写的非常详细,有理论有代码,本文是补充一些小细节,可以二者结合看效果更好: https://zybuluo.com/hanbingt...

4406
来自专栏数据处理

BP神经网路

1873
来自专栏深度学习自然语言处理

详解循环神经网络RNN(实践篇)

我们对输入进行one-hot编码。这是因为我们的整个词汇表只有四个字母{h,e,l,o}。

964
来自专栏机器学习算法与Python学习

机器学习(6) -- SVM

本篇主要是对支持向量机(support vector machine , SVM) 总结性的文章,想详细的理解SVM的请看之前所发的支持向量机系列文章。 Co...

3535

扫码关注云+社区