豆瓣8.5,终于有人把深度学习的数学知识讲透了!被五万人奉为入门神作!

bab00c840a8cbbd92b51d7ee928ddbff.png

对于小白来说,想快速入门的话,《深度学习的数学》深度学习入门最好的书籍,没有之一。浅显易懂,书中有大量插图。

1.图文直观

穿插235幅插图和大量具体示例讲解,对易错点、重点反复说明,通俗易懂。 

2.结合Excel实践

书中使用Excel进行理论验证,读者可下载随书附带的Excel示例文件,亲自动手操作,直观地体验深度学习。 

3.只需基础的数学知识

适合数学基础薄弱的深度学习初学者阅读,有一定基础的读者也可以通过本书加深理解。 

1

什么是神经网络

神经单元,是神经元的模型化。那么,既然大脑是由神经元构成的网络,如果我们模仿着创建神经单元的网络,是不是也能产生某种“智能”呢?这自然是让人期待的。众所周知,人们的期待没有被辜负,由神经单元组成的网络在人工智能领域硕果累累。

在进入神经网络的话题之前,我们先来回顾一下上一节考察过的神经单元的功能。

  • 将神经单元的多个输入 89aa5aaa798fa1475b0d1c3e31b8ecd7.png 整理为加权输入 adfff76842e661fabc5fc115dc348530.png

    9200cad402774d9e96920eb5de2864e2.png

    其中 f5fa1fc38b48a784aa9b06eeedc4a423.png 为权重,98d6282c8d847cbeabacbceaa542b921.png 为偏置,fd64c8d53d0a47a5cadc09250d28baad.png 为输入的个数。

  • 神经单元通过激活函数 02d370719e42af5194e85e78527c86c7.png,根据加权输入 546922a1c4be2352bd893b8d43aa7ac7.png 输出 e161662e8fd26788c475eb3b184ac39d.png

    fa3c8d85826412734e074dcb69612eb5.png

3511029e04c7867c07e04a0ce197d6a7.png

将这样的神经单元连接为网络状,就形成了神经网络。

网络的连接方法多种多样,本书将主要考察作为基础的阶层型神经网络以及由其发展而来的卷积神经网络。

注:为了与生物学上表示神经系统的神经网络区分开来,有的文献使用“人工神经网络”这个称呼。本书中为了简便,省略了“人工”二字。

神经网络各层的职责

阶层型神经网络如下图所示,按照层(layer)划分神经单元,通过这些神经单元处理信号,并从输出层得到结果,如下图所示。

615decf42c486f8a9e4e6efefba276c0.png

构成这个网络的各层称为输入层、隐藏层、输出层,其中隐藏层也被称为中间层。

各层分别执行特定的信号处理操作。

输入层负责读取给予神经网络的信息。属于这个层的神经单元没有输入箭头,它们是简单的神经单元,只是将从数据得到的值原样输出。

隐藏层的神经单元执行前面所复习过的处理操作 (1) 和 (2)。在神经网络中,这是实际处理信息的部分。

输出层与隐藏层一样执行信息处理操作 (1) 和 (2),并显示神经网络计算出的结果,也就是整个神经网络的输出。

深度学习

深度学习,顾名思义,是叠加了很多层的神经网络。叠加层有各种各样的方法,其中著名的是卷积神经网络(第 5 章)。

考察具体的例子

例题 建立一个神经网络,用来识别通过 4×3 像素的图像读取的手写数字 0 和 1。学习数据是 64 张图像,其中像素是单色二值。

 我们来示范一下这个例题如何解答。

336b00ba45c34e5b52e4d34cd0985498.png

这个解答是演示实际的神经网络如何发挥功能的最简单的神经网络示例,但对于理解本质已经足够了。该思路也同样适用于复杂的情况。

这个简单的神经网络的特征是,前一层的神经单元与下一层的所有神经单元都有箭头连接,这样的层构造称为全连接层(fully connected layer)。这种形状对于计算机的计算而言是十分容易的。

下面让我们来简单地看一下各层的含义。

解答示例中输入层的含义

输入层由 12 个神经单元构成,对此我们立刻就能够理解,因为神经网络一共需要读取 4×3 = 12 个像素信息。

88a0b2c0de13ee471bb0a755c017e85b.png

输入层的神经单元的输入与输出是相同的。一定要引入激活函数 3102c64b252b21de75182c95b24d1374.png 的话,可以用恒等函数(0f97bb16670229c79bbe9eeff2ae73d8.png)来充当。

解答示例中输出层的含义

输出层由两个神经单元构成,这是因为我们的题目是识别两种手写数字 0 和 1,需要一个在读取手写数字 0 时输出较大值(即反应较大)的神经单元,以及一个在读取手写数字 1 时输出较大值的神经单元。

例如,将 Sigmoid 函数作为激活函数使用。在这种情况下,读取数字 0 的图像时,输出层上方的神经单元的输出值比下方的神经单元的输出值大;而读取数字 1 的图像时,输出层下方的神经单元的输出值比上方的神经单元的输出值大,如下图所示。像这样,根据输出层的神经单元的输出的大小,对整个神经网络进行判断。

25f1f827ad6c13f48b29f83536f65f4a.png

解答示例中隐藏层的含义

隐藏层具有提取输入图像的特征的作用。然而,隐藏层为何能够提取输入图像的特征呢?这不是一个简单的话题。另外,在这个解答示例中,隐藏层为何是 1 层而不是 2 层?为何是由 3 个神经单元构成而不是 5 个?想必读者会涌现出诸多疑问。为了解决这些疑问,就需要理解下一节所讲的神经网络的结构。

2 

用恶魔来讲解神经网络的结构

上一节我们概述了神经网络,但没有具体介绍其中最难的隐藏层。这是因为隐藏层肩负着特征提取(feature extraction)的重要职责,需要很长的篇幅来介绍。本节我们就来好好看一下隐藏层。

重要的隐藏层

如上一节考察过的那样,神经网络是将神经单元部署成网络状而形成的。然而,将神经单元胡乱地连接起来并不能得到有用的神经网络,因此需要设计者的预估,这种预估对于隐藏层是特别重要的。因为支撑整个神经网络工作的就是这个隐藏层。下面让我们利用上一节考察过的例题,来逐渐展开有关隐藏层的具体话题。

例题 建立一个神经网络,用来识别通过 4×3 像素的图像读取的手写数字 0 和 1。学习数据是 64 张图像,其中像素是单色二值。

前面已经提到过,模式识别的难点在于答案不标准,这个例题也体现了这样的特性。即使是区区一个 4×3 像素的二值图像,所读入的手写数字 0 和 1 的像素模式也是多种多样的。例如,下列图像可以认为是读入了手写数字 0。

1707535df6f653db3d0044bd789f3b92.png

对于这样的数字 0,即使人能设法识别出来,让计算机来判断也十分困难。

思路:由神经单元之间的关系强度给出答案

对于这种没有标准答案、识别困难的问题,怎么解决才好呢?思路就是“由网络进行判断”。乍一听会觉得这个方法不可思议,不过其中的逻辑却一点都不难,我们可以用恶魔组织的信息网络来做比喻。虽然这个比喻并不算准确,但是可以突出其本质。

假设有一个如下图所示的恶魔组织,隐藏层住着 3 个隐藏恶魔 A、B、C,输出层住着 2 个输出恶魔 0 和 1。输入层有 12 个手下①~⑫为隐藏恶魔 A、B、C 服务。

注:这里将生物学中的特征提取细胞的工作抽象化为 3 个恶魔 A、B、C。

8f087132ff73d3655f73bcfc207f9e6c.png

最下层(输入层)的 12 个手下分别住在 4×3 像素图像的各个像素上,其工作是如果像素信号为 OFF(值为 0)就处于休眠状态;如果像素信号为 ON(值为 1)则变得兴奋,并将兴奋度信息传递给他们的主人隐藏恶魔 A、B、C。

注:即便不是黑白二值像素的情况,处理方式也是相同的。

e41c4c793b9ab860cacea9e75023b194.png

住在隐藏层的 3 个隐藏恶魔,从下层(输入层)的 12 个手下那里获得兴奋度信息。接着,将获得的信息进行整合,根据其值的大小,自己也变兴奋,并将这个兴奋度传递给住在上层的输出恶魔。

不过,隐藏恶魔 A、B、C 有不同的喜好。他们分别喜欢下图所示的模式 A、模式 B、模式 C 的图案。这个性质影响了神经网络的特性。(看清他们的不同“偏好”,就是我们最初所提及的设计者的预估。)

c5c545ad5a1e7b8a9f001bcc567f8c11.png

住在最上层的 2 个输出恶魔也是从住在下层的 3 个隐藏恶魔那里得到兴奋度信息。与隐藏恶魔一样,他们将得到的兴奋度信息进行整合,根据其值的大小,自己也变兴奋。然后,这些输出恶魔的兴奋度就成为整个恶魔组织的意向。如果输出恶魔 0 的兴奋度比输出恶魔 1 的兴奋度大,神经网络就判定图像的数字为 0,反之则判定为 1。

c8ee63b2cc628f8428573ca2df50970d.png

可见,恶魔的世界里也存在着人际关系。

隐藏恶魔 A、B、C 对模式有着各自的偏好,与 12 个手下有不同的交情。隐藏恶魔 A 的偏好是之前的模式 A,因此与④、⑦性情相投。因为模式 A 的 4 号像素与 7 号像素是 ON,所以理所当然地与对应的看守人④、⑦性情相投。

c8259a8a520927f885d83a62a913404a.png

同样地,手下⑤、⑧与隐藏恶魔 B,手下⑥、⑨与隐藏恶魔 C 性情相投,因此他们之间传递兴奋度的管道也变粗了(下图)。

4fdda88ac91c94fe8f72b1ba0827d127.png

住在隐藏层的隐藏恶魔 A、B、C 与住在上层的 2 个输出恶魔也有着人际关系。由于某种羁绊,输出恶魔 0 与隐藏恶魔 A、C 性情相投,而输出恶魔 1 与隐藏恶魔 B 性情相投。

9cceab0e9f47bd780c44a7f2acf6a04f.png

以上就是恶魔组织的所有人际关系。除了隐藏恶魔 A、B、C 有不一样的偏好以外,这是一个人类社会中到处都可能存在的简单的组织。

那么,这里让我们读入手写数字 0。

dc95e9e79f0093cb613ceeb41442f8fa.png

于是,作为像素看守人的手下④、⑦和手下⑥、⑨看到这个图像就变得非常兴奋了(下图)。

0153c29a329bccf2005d6346e3e8e50e.png

这时,兴奋的手下④、⑦向性情相投的隐藏恶魔 A 传递了较强的兴奋度信息,兴奋的手下⑥、⑨也向性情相投的隐藏恶魔 C 传递了较强的兴奋度信息。相对地,几乎没有手下向隐藏恶魔 B 传递兴奋度信息(下图)。

66d3557e03d21ebf70a1fdfef9bedf7a.png

接收了来自手下的兴奋度信息的隐藏恶魔们会怎样呢?接收了较强的兴奋度信息的隐藏恶魔 A 和隐藏恶魔 C 自然也变兴奋了。另一方面,隐藏恶魔 B 变得怎样呢?因为几乎没有从手下接收到兴奋度信息,所以一直保持冷静。

c0aa334ed1cf736529aba91e51458dad.png

住在最上层的输出恶魔变得怎样了呢?输出恶魔 0 由于与兴奋的隐藏恶魔 A、C 关系亲密,从而获得了较强的兴奋度信息,所以自己也兴奋起来了。相对地,输出恶魔 1 与隐藏恶魔 A、C 关系疏远,而与之关系亲密的隐藏恶魔 B 一直保持冷静,所以输出恶魔 1 没有获得兴奋度信息,因此也保持冷静。

27ecdec73a9e9c1a9cd239749351c036.png

这样一来,读取手写数字 0 的图像后,根据恶魔之间的连锁关系,最终得到了“输出恶魔 0 兴奋,输出恶魔 1 冷静”的结果。根据前文中的“如果输出恶魔 0 的兴奋度比输出恶魔 1 的兴奋度大,神经网络就判断图像的数字为 0”,恶魔的网络推导出了 0 这个解答。

c5e4243a14831555127fc464fe23d072.png

恶魔的心的偏置

在这个恶魔组织中,下层的兴奋度会或多或少地传递到上层。但是,除了具有亲密关系的各层之间传递的兴奋度信息以外,还遗漏了少量信息,就是“噪声”。如果这些噪声迷住了恶魔的心,就会导致无法正确地传递兴奋度信息。因此,这就需要减少噪声的功能。对于恶魔组织的情形,我们就将这个功能称为“心的偏置”吧!具体来说,将偏置放在恶魔的心中,以忽略少量的噪声。这个“心的偏置”是各个恶魔固有的值(也就是个性)。

从关系中得到信息

像上面那样,恶魔组织实现了手写数字的模式识别。我们应该关注到,是恶魔之间的关系(也就是交情)和各个恶魔的个性(也就是心的偏置)协力合作推导出了答案。也就是说,网络作为一个整体做出了判断。

问题 在图中示范一下在读取数字 1 的图像时,恶魔组织得出 1 这个解答的全过程。

解 在这种情况下,也能够根据上层恶魔与下层恶魔之间交情的好坏来判断图像中的数字是1。下图就是解答。沿着下图的粗线,输出恶魔1兴奋起来,判断出图像中的数字是1。

e5a847ae23a1632d570c2c552c184fda.png

3 

将恶魔的工作翻译为神经网络的语言

上一节我们通过恶魔讲解了神经网络的结构。本节我们将恶魔的工作用神经网络的语言来描述。

恶魔之间的“交情”表示权重

上一节考察了恶魔组织识别手写数字 0、1 的结构。将这个组织替换为神经网络,我们就能理解神经单元发挥良好的团队精神进行模式识别的结构。

首先,将恶魔看作神经单元。隐藏层住着 3 个隐藏恶魔 A、B、C,可以解释为隐藏层有 3 个神经单元 A、B、C。输出层住着 2 个输出恶魔 0、1,可以解释为输出层有 2 个神经单元 0、1。此外,输入层住着 12 个恶魔的手下,可以解释为输入层有 12 个神经单元(下图)。

429b3ef7d23420055c4e655dd9af8423.png

接下来,将恶魔的“交情”看作神经单元的权重。隐藏恶魔 A 与手下④、⑦性情相投,这样的关系可以认为是从输入层神经单元④、⑦指向隐藏层神经单元 A 的箭头的权重较大。同样地,隐藏恶魔 B 与手下⑤、⑧性情相投,可以认为是从输入层神经单元⑤、⑧指向隐藏层神经单元 B 的箭头的权重较大。隐藏恶魔 C 与手下⑥、⑨性情相投,可以认为是从输入层神经单元⑥、⑨指向隐藏层神经单元 C 的箭头的权重较大。

a8ae6be0b134c39c44bdff507abaa5d7.png

隐藏恶魔 A、C 与上层的输出恶魔 0 性情相投,这个关系表示从隐藏层神经单元 A、C 指向输出层神经单元 0 的箭头的权重较大。同样地,隐藏恶魔 B 与输出恶魔 1 性情相投,这个关系表示从隐藏层神经单元 B 指向输出层神经单元 1 的箭头的权重较大。

a3c469e4b40b2cbb6a814ab321561770.png

这样解释的话,神经网络读入手写数字 0 时,神经单元 A 和 C 的输出值较大,输出层神经单元 0 的输出值较大。于是,根据神经网络整体的关系,最终识别出数字 0。

ce1d91bc57596b630709037f916cda44.png

在像这个神经网络那样前一层与下一层全连接的情况下,在输入 0 的图像时,原本不希望做出反应的隐藏层神经单元 B 以及输出层神经单元 1 也有信号传递,因此需要禁止这样的信号并使信号变清晰,这样的功能就是偏置,在恶魔组织中表现为“心的偏置”。

如上所述,权重和偏置的协力合作使得图像识别成为可能。这就是“由神经网络中的关系得出答案”的思想。

模型的合理性

如上所述,我们将上一节考察过的恶魔的工作翻译为了神经网络的权重与偏置,但不要认为这样就万事大吉了。即使将恶魔的活动转换为了神经网络,也无法保证可以求出能够实现恶魔的工作的权重和偏置。而如果能够实际建立基于这个想法的神经网络,并能够充分地解释所给出的数据,就能够验证以上话题的合理性。这需要数学计算,必须将语言描述转换为数学式。为此,我们会在第 2 章进行一些准备工作,并从第 3 章开始进行实际的计算。

恶魔的人数

住在输出层的输出恶魔的人数是 2 人。为了判断图像中的数字是 0 还是 1,2 人是合适的。

住在隐藏层的隐藏恶魔的人数是 3 人。为什么是 3 人呢?如本节开头所讲的那样,这是由于存在某种预估,如下图所示。

fb95a2324c4ddedbf63c39e1171d2f0f.png

根据该图可以预估数字 0 包含了图中的模式 A 和 C,数字 1 包含了模式 B。因此,只要准备好对上图的模式 A、B、C 做出反应的神经单元,就能够判断图像中的数字是 0 还是 1。这 3 个神经单元正是隐藏恶魔 A、B、C 的本来面目。

上一节中为隐藏恶魔 A、B、C 设定分别喜欢模式 A、B、C 的特征,也是出于这个原因。

以上是在隐藏层部署 3 个神经单元的理由。通过让这个神经网络实际读取图像数据并得出令人信服的结论,可以确认这个预估的正确性。

神经网络与生物的类比

让我们从生物的观点来看神经网络。

请想象一下生物看东西时的情形。可以认为,输入层神经单元相当于视细胞,隐藏层神经单元相当于视神经细胞,输出层神经单元相当于负责判断的大脑神经细胞群。

不过,相当于隐藏层神经单元的视神经细胞实际上存在吗?例如,第一个神经单元对前面图中的模式 A 做出反应,像这样的视神经细胞存在吗?

实际上,1958 年美国生理学家大卫· 休伯尔(David Hunter Hubel)和托斯坦· 威泽尔(Torsten Wiesel)发现存在这种细胞,这种细胞被命名为特征提取细胞。对某种模式做出强烈反应的视神经细胞有助于动物的模式识别。想到本节考察的“恶魔”在大脑中实际存在,这真是非常有意思的事情。

备注 人工智能研究中的几次热潮

人工智能的研究大约是从 20 世纪 50 年代开始的,其发展史与计算机的发展史有所重合,可以划分为以下 3 次热潮。

世代

年代

关键

主要应用领域

第1代

20 世纪 50 ~ 60 年代

逻辑为主

智力游戏等

第2代

20 世纪 80 年代

知识为主

机器人、机器翻译

第3代

2010 年至今

数据为主

模式识别、语音识别

4 

网络自学习的神经网络

在前面的 1 - 5 节和 1 - 6 节中,我们利用恶魔这个角色,考察了识别输入图像的机制。具体来说,就是根据恶魔组织中的关系来判断。不过,之前的讲解中事先假定了权重的大小,也就是假定了各层恶魔之间的人际关系。那么,这个权重的大小(恶魔的关系)是如何确定的呢?神经网络中比较重要的一点就是利用网络自学习算法来确定权重大小。

从数学角度看神经网络的学习

神经网络的参数确定方法分为有监督学习和无监督学习。本书只介绍有监督学习。有监督学习是指,为了确定神经网络的权重和偏置,事先给予数据,这些数据称为学习数据。根据给定的学习数据确定权重和偏置,称为学习。

注:学习数据也称为训练数据。

那么,神经网络是怎样学习的呢?思路极其简单:计算神经网络得出的预测值与正解的误差,确定使得误差总和达到最小的权重和偏置。这在数学上称为模型的最优化(下图)。

4af5b51d1846c96f5aab06e950f9b75d.png

关于预测值与正解的误差总和,有各种各样的定义。本书采用的是最古典的定义:针对全部学习数据,计算预测值与正解的误差的平方(称为平方误差),然后再相加。这个误差的总和称为代价函数(cost function),用符号 8ff6ad9371af1cd6b4bcd9676e7f01f9.png 表示(T 是 Total 的首字母)。

利用平方误差确定参数的方法在数学上称为最小二乘法,它在统计学中是回归分析的常规手段。

我们将在 2-12 节以回归分析为例来具体考察什么是最小二乘法。

另外,本书以手写数字的模式识别为例进行说明。因此,学习数据是图像数据,学习实例是图像实例。

需要注意的是,神经网络的权重是允许出现负数的,但在用生物学进行类比时不会出现负数,也难以将负数作为神经传递物质的量。可以看出,神经网络从生物那里得到启发,又飞跃到了与生物世界不同的另一个世界。

03009b8e6f8fc0d61384a8d6169bee86.jpeg

《深度学习的数学》

作者:[日]涌井良幸、涌井贞美

译者:杨瑞龙

一本书掌握深度学习的数学基础知识!结合235幅插图和大量示例,基于Excel实践,直击神经网络根本原理。

894983ea0635c698ac328a253481f050.jpeg

《程序员数学 用Python学透线性代数和微积分》

作者:保罗·奥兰德(Paul Orland)

译者:百度KFive

代码和数学是相知相惜的好伙伴,它们基于共同的理性思维,数学公式的推导可以自然地在编写代码的过程中展开。

500余幅图片,本书以图文结合的方式帮助你用Python代码解决程序设计中的数学问题。

300余个练习,通过边学边练,你会发现线性代数和微积分的重要概念跃然纸上、印在脑中。

30d4230f3de6f1e986eb3b3afe4578d3.jpeg

《程序员的数学》(系列全四册)

作者:[日] 结城浩,[日] 平冈和幸,堀玄,[日] 宫崎修一

机器学习、数据挖掘、模式识别基础知识,热销书程序员的数学系列套装,IT计算机编程基础数据教程书籍,掌握编程所需的基础数学知识和数学思维。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值