【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

深度学习的数学(三):神经元工作的数学表示

  • 2020-04-03
  • 本文字数:2643 字

    阅读完需:约 9 分钟

深度学习的数学(三):神经元工作的数学表示

编者按:本文节选自图灵程序设计丛书 《深度学习的数学》一书中的部分章节。


前文中用数学式表示了神经元的工作。本节我们试着将其在数学上一般化。

简化神经元的图形

为了更接近神经元的形象,1 - 2 节中将神经元表示为了下图的样子。



然而,为了画出网络,需要画很多的神经元,在这种情况下上面那样的图就不合适了。因此,我们使用如下所示的简化图,这样很容易就能画出大量的神经元。



为了与生物学的神经元区分开来,我们把经过这样简化、抽象化的神经元称为 神经单元(unit)。


注:很多文献直接称为“神经元”。本书为了与生物学术语“神经元”区分,使用“神经单元”这个称呼。另外,也有文献将“神经单元”称为“人工神经元”,但是由于现在也存在生物上的人工神经元,所以本书中也不使用“人工神经元”这个称呼。

激活函数

将神经元的示意图抽象化之后,对于输出信号,我们也对其生物上的限制进行一般化。


根据点火与否,生物学上的神经元的输出 分别取值 1 和 0(下图)。



然而,如果除去“生物”这个条件,这个“0 和 1 的限制”也应该是可以解除的。这时表示点火与否的下式(1 - 2 节式 (3))就需要修正。


点火的式子:


这里, 是单位阶跃函数。我们将该式一般化,如下所示。




这里的函数 是建模者定义的函数,称为 激活函数(activation function)。 是模型允许的任意数值, 是函数 能取到的任意数值。这个式 (2) 就是今后所讲的神经网络的出发点。


注:虽然式 (2) 只考虑了 3 个输入,但这是很容易推广的。另外,式 (1) 使用的单位阶跃函数 在数学上也是激活函数的一种。


请注意,式 (2) 的输出 的取值并不限于 0 和 1,对此并没有简单的解释。一定要用生物学来比喻的话,可以考虑神经单元的“兴奋度”“反应度”“活性度”。


我们来总结一下神经元和神经单元的不同点,如下表所示。


神经元神经单元
输出值 $y$0或1模型允许的任意数值
激活函数单位阶跃函数由分析者给出,其中著名的是 Sigmoid 函数(后述)
输出的解释点火与否神经单元的兴奋度、反应度、活性度



将神经元点火的式 (1) 一般化为神经单元的激活函数式 (2),要确认这样做是否有效,就要看实际做出的模型能否很好地解释现实的数据。实际上,式 (2) 表示的模型在很多模式识别问题中取得了很好的效果。

Sigmoid 函数

激活函数的代表性例子是 Sigmoid 函数 ,其定义如下所示。


关于这个函数,我们会在后面详细讨论(2-1 节)。这里先来看看它的图形,Sigmoid 函数 的输出值是大于 0 小于 1 的任意值。此外,该函数连续、光滑,也就是说可导。这两种性质使得 Sigmoid 函数很容易处理。



单位阶跃函数的输出值为 1 或 0,表示点火与否。然而,Sigmoid 函数的输出值大于 0 小于 1,这就有点难以解释了。如果用生物学术语来解释的话,如上文中的表格所示,可以认为输出值表示神经单元的兴奋度等。输出值接近 1 表示兴奋度高,接近 0 则表示兴奋度低。



本书中将 Sigmoid 函数作为标准激活函数使用,因为它具有容易计算的漂亮性质。如果用数学上单调递增的可导函数来代替,其原理也是一样的。

偏置

再来看一下激活函数的式 (2)。


这里的 称为阈值,在生物学上是表现神经元特性的值。从直观上讲, 表示神经元的感受能力,如果 值较大,则神经元不容易兴奋(感觉迟钝),而如果值较小,则神经元容易兴奋(敏感)。


然而,式 (2) 中只有 带有负号,这看起来不漂亮。数学不喜欢不漂亮的东西。另外,负号具有容易导致计算错误的缺点,因此,我们将 替换为


经过这样处理,式子变漂亮了,也不容易发生计算错误。这个 称为 偏置(bias)。



本书将式 (4) 作为标准使用。另外,此时的加权输入 (1-2 节)如下所示。


式 (4) 和式 (5) 是今后所讲的神经网络的出发点,非常重要。


另外,生物上的权重 和阈值 )都不是负数,因为负数在自然现象中实际上是不会出现的。然而,在将神经元一般化的神经单元中,是允许出现负数的。


问题 右图是一个神经单元。如图所示,输入 的对应权重是 2,输入 的对应权重是 3,偏置是 -1。根据下表给出的输入,求出加权输入 和输出 。注意这里的激活函数是 Sigmoid 函数。

输入 \boldsymbol{x_1}输入 \boldsymbol{x_2}加权输入 \boldsymbol{z}输出 \boldsymbol{y}
0.20.1
0.60.5

结果如下表所示(式 (3) 中的 e 取 e = 2.7 进行计算)

输入 \boldsymbol{x_1}输入 \boldsymbol{x_2}加权输入 \boldsymbol{z}输出 \boldsymbol{y}
0.20.12×0.2 + 3×0.1 - 1 = -0.30.43
0.60.52×0.6 + 3×0.5 - 1 = 1.70.84


备注 改写式 (5)

我们将式 (5) 像下面这样整理一下。


这里增加了一个虚拟的输入,可以理解为以常数 1 作为输入值(右图)。

于是,加权输入 可以看作下面两个向量的内积。


计算机擅长内积的计算,因此按照这种解释,计算就变容易了。


图书简介http://www.ituring.com.cn/book/2593



相关阅读


深度学习的数学(一):神经网络和深度学习


深度学习的数学(二):神经元工作的数学表示


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2020-04-03 10:001161

评论

发布
暂无评论
发现更多内容

2021年冲刺年薪40w

Java 程序员 后端

2020-2021阿里巴巴Java面试真题解析

Geek_f90455

Java 程序员 后端

停下来读读书

箭上有毒

生活随想 8月日更

2021大厂Java知识点总结

JVM调优资料

Java 程序员 后端

2021大厂Java面试最火问题

JVM调优资料

Java 程序员 后端

2021年字节跳动+京东+美团面试总结

Java 程序员 后端

12年高级工程师的“飞升之路”

Geek_f90455

Java 程序员 后端

2021Java不死我不倒

Geek_f90455

Java 程序员 后端

2021京东最新Java面试真题解析

JVM调优资料

Java 程序员 后端

Druid 通过 dsql 进行查询

HoneyMoose

2021Java者未来的出路在哪里

JVM调优资料

Java 程序员 后端

2021年最新大厂Java面试笔试题目

策划Java工程师

Java 程序员 后端

2020-2021京东Java面试真题解析

Geek_f90455

Java 程序员 后端

2020-2021华为Java面试真题

Geek_f90455

Java 程序员 后端

2021Java开发现状分析

Geek_f90455

Java 程序员 后端

学习的细碎之处

Nydia

2021年抓住金三银四涨薪好时机

Java 程序员 后端

2021大厂Java面试真题集锦

JVM调优资料

Java 程序员 后端

DDD 领域驱动设计·学习应用·二

小诚信驿站

领域驱动设计 领域 领域驱动模型DDD 中台架构 领域驱动

2021年春招Java面试题

Java 程序员 后端

03 设计模式之工厂模式

陈皮的JavaLib

Java 面试 设计模式 工厂模式 8月日更

Druid 通过 dsql 的服务器连接参数如何配置

HoneyMoose

2021大厂Java开发面试总结+解答

JVM调优资料

Java 程序员 后端

2021Java进阶者的新篇章

JVM调优资料

Java 程序员 后端

2021年上半年最接地气的Java面经

Java 程序员 后端

2021年大厂Java面经

Java 程序员 后端

2021年最新Java大厂面试题来袭

策划Java工程师

Java 程序员 后端

Vue组件通信之ref

Augus

8月日更

关于 go run 命令执行过程中的“坑坑点点”

liuzhen007

8月日更

2021Java岗面试题知识点小结

Geek_f90455

Java 程序员 后端

2021Java面试笔试总结

JVM调优资料

Java 程序员 后端

深度学习的数学(三):神经元工作的数学表示_AI&大模型_涌井良幸,涌井贞美_InfoQ精选文章