一个数学博士的深度学习方法(第 2 部分)

本文回顾《Hands-On Mathematics for Deep Learning》,探讨了多层感知器的发展,从线性回归到McCulloch-Pitts神经元和感知器,进而深入解析MLP的工作原理及参数计算。作者揭示了多层结构在处理复杂问题的优势和数学表达方式。
摘要由CSDN通过智能技术生成

作者心得:

在获得博士学位后,我开始了学习数据科学和机器学习的旅程。我拥有纯数学博士学位,并且由于有许多有趣的应用程序,我对学习机器学习产生了兴趣。

作为一个纯粹的数学家,我对如何使用我的知识来理解算法感到怀疑,但我也认为不要仅仅停留在理论上非常重要,所以我开始学习很多课程。在我的学习过程中,我注意到通过阅读书籍,可以更好地保留知识。

让我们继续回顾《Hands-On Mathematics for Deep Learning》这本书。在《一个数学博士的深度学习方法(第 1 部分)》中,我写了本书第一部分的概述,其中介绍了一些数学主题。

在这篇文章中,我将写第 6 章和第 7 章,将介绍多层感知器 (MLP) 模型,并清楚地了解确切使用了哪些数学以及如何使用。

第 6 章只介绍了线性回归、多项式回归和逻辑回归的概念以及一些关于回归和分类问题的命名法,这些在机器学习领域非常常见。

因此,让我们进入第 7 章,乐趣从这里开始!

McCulloch-Pitts 神经元

在简要描述了生物神经元之后,提出了数学神经元的第一个(也是更简单的)模型:McCulloch-Pitts 神经元 (MP)。

MP 神经元(创建于 1943 年)仅接收二进制输入,仅发出二进制输出,具体取决于阈值。

MP神经元

在数学上我们可以把这个神经元写成

MP神经元

这个神经元不能“学习”,阈值 b 必须明确地传递给神经元。

感知器

感知器(创建于 1958 年)是对 MP 神经元的改进。感知器将实数值作为输入,每个输入乘以一个权重。如果加权输入的总和大于阈值,则神经元输出 1,否则输出 0。

感知器

我们可以将这个神经元在数学上写成

写入 x0=1 和 w0=-b 阈值必须由神经元找到。所以感知器可以从输入中“学习”。

本质上,感知器可以找到一条线(或更高维度的超平面)来尝试分离数据,因为感知器的结果是形式的表达式(函数)

如果函数结果为正,则该点位于线(超平面)的一侧,神经元发出 1,如果函数结果为负,则该点位于另一侧,神经元发出 0。

由于感知器只能找到线性方程,因此在大量情况(非线性问题)中使用并不理想。一个小的修改可以帮助感知器处理非线性。加权和完成后,将结果输入到非线性函数(激活函数)中。

多层感知器 (MLP)

尽管如此,具有激活功能的感知器无法处理更复杂的问题,这是很自然的。我们的大脑有数十亿个神经元一起工作,我们不能指望只有一个神经元模型来处理复杂的问题。所以让我们加入很多人工神经元!

MLP

第一层是输入层,因此神经元的数量取决于问题中特征的数量。最后一层是输出层,神经元的数量取决于输出的类型。二元分类问题和回归问题在输出层有一个神经元,多类分类问题有与要分类的类一样多的神经元。

MLP将一层的所有神经元连接到下一层的所有神经元,它是一个全连接网络,但信息总是从输入层到输出层,禁止从一层返回信息和神经元同一层无法连接。

有一个称为通用逼近定理的结果(简化的)确定了具有包含有限数量神经元的单个隐藏层的神经网络可以逼近欧几里德向量空间的紧凑子集上的任何连续函数,而对激活函数的假设很少。该定理没有说明需要多少神经元。

直观地说,想想带有 sigmoid 激活函数的感知器(我们稍后会更详细地讨论 sigmoid),所以这个输出近似于一个阶跃函数,而具有单个隐藏层的 MLP 组合了许多阶跃函数。对于那些熟悉数学分析的人,您会注意到这本质上是通过阶跃函数之和对连续函数的近似。

现在可能困扰读者的一个问题是:“如果单个隐藏层就足够了,为什么现在使用这么多隐藏层(深度学习的深度来自大量隐藏层)?”

关键是具有少量神经元的多层在计算上比具有许多神经元的几层更好!让我们看一个例子:

假设一个 MLP,输入层有 10 个神经元,输出层有 4 个神经元,还有 15 个隐藏层,每个隐藏层有 100 个神经元。这个 MLP 必须适应多少参数(“学习”)?

让我们一步一步计算:在第一个隐藏层中,每个神经元接收 10 个输入并且有一个偏差,所以有 10 x 100 +100 = 1100 个参数;在接下来的 14 个隐藏层中,每个神经元接收 100 个输入并有一个偏差,因此 14 x 100 x 100 + 14 x 100 = 141,400 个参数;在输出层,每个神经元接收 100 个输入并有一个偏差,因此有 4 x 100 + 4 = 404。总共有 142,904 个参数。

现在假设一个 MLP,输入层有 10 个神经元,输出层有 4 个神经元,但有 3 个隐藏层,每个隐藏层有 1000 个神经元。这个 MLP 必须适应多少个参数?

在第一个隐藏层中有 10 x 1000 + 1000 = 11,000 个参数;在接下来的 2 个隐藏层中,每个神经元接收 1000 个输入并具有偏差,因此 2 x 1000 x 1000 + 2 x 1000 = 2,002,000 个参数;在输出层,每个神经元接收 1000 个输入并有一个偏差,因此有 4 x 1000 + 4 = 4004。总共有 2,017,004 个参数!!!

MLP 数学显式

现在让我们以数学方式编写信息流是如何从一层传递到另一层的。

假设一个 MLP 如下图所示。

我们可以用一般的方式编写我们的网络,如下所示。

其中第一行中的符号是第一层的第 i 个神经元的方程,它接收第一层的激活函数,应用于输入层的权重 (w's) 乘以条目 (x's) 的总和) 的输入层加上输入层的偏置 (b's)。超索引是指层数。

明确地,我们有

从这里我们可以看到,每一层都将一个向量从一个欧几里得向量空间映射到另一个,这些映射的组合构成了我们的 MLP。一般来说,MLP 将一个向量从一个欧几里得向量空间映射到另一个。

请注意,如果没有激活函数,我们将只有矩阵乘法,并且网络只会执行线性运算,因此激活函数很重要。

下一部分…

这篇文章已经很长了,所以很快就会看到关于激活函数和损失函数的内容。在你走之前,网络的绘图是在 Python Matplotlib 库中完成的,需要代码请关注『芯媒』私信获取。

文档资料源码请私信或移步官W上获取

关注芯媒官方微信看更多机器学习、深度学习等分享。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值