前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >原来这就是神经网络需要激活函数真正的原因

原来这就是神经网络需要激活函数真正的原因

作者头像
深度学习与Python
发布2019-07-10 14:15:16
2.6K0
发布2019-07-10 14:15:16
举报
文章被收录于专栏:深度学习与python

为什么神经网络需要激活功能?当第一次看到神经网络的架构时,您会注意到的是神经网络有很多互连的层,其中每一层都有激活功能,但是为什么这样一个结构会有如此神奇的作用呢?为什么加一个激活层就能让神经网络能够拟合任意的函数呢?希望我们简短的介绍清楚。

什么是神经网络?

神经网络是一种机器学习模型,在给定某些输入和输出向量的情况下,尝试拟合出输入和输出间的关系函数。给定一组具有我们希望预测的某些值的观察示例,以及每个示例上的一些数据,神经网络将尝试”拟合“这些数据,以便可以正确地得到新数据的预测值。

作为示例,我们可能正在设计图像分类器(通常使用卷积神经网络)。这里,输入是像素矢量。输出可以是数字类标签(例如,狗为1,猫为0)。

这将训练神经网络以预测图像是否包含猫或狗。训练完成后给定一组像素,如果它们对应于狗的图像,则返回1,对于猫的图像,返回0。下图是一个神经网络的基本形式:

虽然你可能已经多次看过这张照片,认识它是神经网络,但我仍然介绍一下每个圆圈代表神经网络中的神经元,垂直对齐的神经元代表每个层。

神经网络如何工作?

神经元只是一个数学函数,它接受输入(指向它的神经元的输出)并返回输出。这些输出用作下一层的输入,依此类推,直到我们到达最终的输出层,输出最后的预测值。对于每组输入,神经网络的目标是使其每个输出尽可能接近实际预期值。例如猫狗图像分类,如果我们将100x100的动物图片作为输入,那么我们的输入层将有30000个神经元。然后我们将通过每一层计算输入并作为一个新的向量为下一图层的输出,依此类推。

神经元做什么?

神经元主要有三个功能:乘以权重向量、添加偏差并将输出应用于激活函数。终于到了神经网络的的核心:激活功能的作用。我们通常使用非线性函数作为激活函数。这是因为线性部件已经由先前应用的神经元权重和偏差部分计算,而激活函数就是为整个神经网络加入非线性功能。

常用的激活功能

RELU:ReLU代表“整流线性单元”。在所有激活函数中,这是一个与线性函数最相似的函数:所有负值都将变为0,而其余值将保持不变。用数学公式表示为:

假设我们的偏差值为-b。添加偏差后,任何低于b的输入值都将变为负值。将ReLU应用于此后,它变为0。

Sigmoid:sigmoid函数将任意实数作为输入,并返回0到1之间的值。sigmoid函数的数学公式如下。

如图所示,当x接近无穷大时,它接近1,如果x接近无穷大,则接近0。它也是对称的,当输入为0时,其值为1/2。由于它取值介于0和1之间,因此如果要对概率建模,此函数作为输出非常有用。

为什么神经网络需要激活功能?

为什么我们的神经网络需要激活功能呢?如果我们不使用它们会发生什么?我在Yoshua Bengio的令人敬畏的深度学习书中找到了这个问题的解释。

我们可以不用使用非线性函数来构造线性变换,而是让每个神经元简单地返回它们的结果。但是这样的话,我们所有的层都会简单地将一组输入线性的进行矢量乘积和矢量加法。实际上,线性变换无法解决许多问题,所以激活函数是对矢量乘积和偏差的一个补充。激活函数将有效地缩小模型可以估计的函数数量。

下面举一个非常简单但很直观的例子,考虑XOR运算符。

下面你尝试找到一个双元素向量,加上偏差,并将它们转换为x1 XOR x2。没错,你做不到,没人能。但是,考虑一下

如果你使用数学运算,你会发现每个可能的1和0组合都有所需的输出。

恭喜!你刚刚训练了你的第一个神经网络!

它学到了线性模型永远无法学到的问题。

参考

https://towardsdatascience.com/why-do-neural-networks-need-an-activation-function-3a5f6a5f00a

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深度学习与python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是神经网络?
  • 神经网络如何工作?
  • 神经元做什么?
  • 常用的激活功能
  • RELU:ReLU代表“整流线性单元”。在所有激活函数中,这是一个与线性函数最相似的函数:所有负值都将变为0,而其余值将保持不变。用数学公式表示为:
  • Sigmoid:sigmoid函数将任意实数作为输入,并返回0到1之间的值。sigmoid函数的数学公式如下。
  • 如图所示,当x接近无穷大时,它接近1,如果x接近无穷大,则接近0。它也是对称的,当输入为0时,其值为1/2。由于它取值介于0和1之间,因此如果要对概率建模,此函数作为输出非常有用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档