绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
深度学习简史:初学者快速上手指南(下)
2019-08-13 11:37:43

作者——Jean-Christophe B.

这篇文章是我明年将在法国巴黎高等艺术学院教授的博士课程"初学者深度学习入门"的系列文章中的篇。本系列的目的是帮助初学者逐步建立他们对神经网络内部机制的认知,并分享一些关于我对数学的基本理解。本文是这一系列的下篇。

LoiseauRosenblatt的单层感知器(1957)

在McCulloch和Pitts的神经网络模型提出十五年后,美国心理学家Frank Rosenblatt(1928-1971)受到Hebbian突触可塑性理论(即学习过程中大脑神经元的适应性)的启发,提出了感知器,这是对MCP神经元模型的一个重大改进。这项发明使他获得了国际上的认可,电气和电子工程师协会(IEEE)授予他年度大奖。

左:Frank Rosenblatt。右:Mark I Perceptron机器

Rosenblatt的主要成就是通过放宽MCP的一些规则(即抑制规则、所有输入的均等贡献和它们的整数性质),人工神经元实际上可以从数据中学习。更重要的是,他提出了一个改进后的MCP神经元模型的监督学习算法,使人工神经元能够直接从训练数据中找出正确的权重。在深入探讨机器学习之前,让我们快速讨论一下感知器可以解决的问题类型。

二进制分类

二进制(或二项式)分类是基于确定的规则将给定组的元素分成两组。下图我们将展示这种问题的两个实例。右边的任务是识别两个线性可分类之间的分界线(即分界线是一条简单的直线),而左边的任务是识别两个非线性可分类(即分界线不是一条简单的直线)。

正如我们将要看到的,Rosenblatt的感知器只能处理线性可分类的任务。但必须注意的是,右图中的示例也可能由感知器进行处理,尽管它需要对被称为特征工程的输入进行预处理,以便将其重新转换为线性可分的问题。这将在之后的系列中进行讨论。

为了更好地理解感知器处理二元分类问题的能力,下面让我们讨论一下它所依赖的人工神经元模型。

正如你所看到的,这个神经元与1943年McCulloch和Pitts提出的神经元非常相似。然而,它有一些主要的区别,即

神经元接受与突触权重b相关的额外恒定输入(在上图中表示为Θ),也称为偏差。关于MCP神经元,偏差b仅是激活阈值的负值。

突触权重wₖ不限于统一,因此允许某些输入对神经元的输出产生比其他输入更大的影响。

它们也不被严格限制为正数。因此,一些输入可以具有抑制性作用。

抑制规则不再适用。

在数学术语中,感知器依赖的人工神经元的非线性是如下图所示的:

该函数对应Heaviside函数(即,如果z <0则H(z)= 0,否则H(z)= 1)。注意感知器的等效公式,其中二进制输出定义为y∈{-1,1},考虑signum函数而不是Heaviside函数,因为:

无论何种公式,感知器(以及许多其他线性分类器)的决策边界都是如此

或者,使用简洁的数学符号

该决策函数线性取决于输入xₖ,因此得名"线性分类器"。此外,该方程是一个超平面方程(1D中为一个简单点,2D中为一条直线,3D中为一个规则平面……)。突触权重的向量w是该平面的法向量,而偏差b是距离原点的偏移量。现在我们已经理解了为什么Rosenblatt感知器可以用于线性分类,但还有待回答的问题是:

给定一组M个例子(xₘ,yₘ),感知器如何学习正确的突触权重w和偏见b,以正确地分离这两个类?

感知器学习算法

如前所述,Rosenblatt的主要成就不仅在于他对MCP神经元的修改实际上可以用于执行二进制分类,而且还提出了一种相当简单且相对有效的算法,使感知器可以学习正确的突触权重w。该算法如下:

在Python实现之前,让我们考虑四个简单的思想实验来说明它是如何工作的。

假设mᵗʰ示例xₘ属于类yₘ= 0且感知器正确预测ŷₘ= 0。在这种情况下,权重校正由Δw=(0-0)xₘ给出,即我们不改变权重。这同样适用于偏差。

同样,如果mᵗʰ示例xₘ属于类yₘ= 1且感知器正确预测ŷₘ= 1,则权重校正为Δw= 0。同样适用于偏差。

现在假设mᵗʰ示例xₘ属于yₘ= 0类,而感知器错误地预测ŷₘ= 1。在这种情况下,权重校正由Δw=(0-1)xₘ=-xₘ给出,而偏差更新为b = b-1。

后,如果mᵗʰ示例xₘ属于类yₘ= 1,且感知器错误地预测ŷₘ= 0,则权重校正为Δw=xₘ。偏差也根据b = b + 1进行更新。

如你所见,这个算法非常简单。然而,乍一看可能你不清楚为什么这样一个简单的算法在实际中可以收敛到一组有用的突触权重。关于收敛性的证明,这将是下一篇文章的主题。

现在让我们继续讨论你可能感兴趣的东西,并在Python中实现这个简单的学习算法。假设你已经熟悉Python,下面的代码应该是非常容易理解的。

请注意,为了清晰和可用,我们将在本文中尝试坚持使用scikit-learn API。这个代码的扩展版本可以在我的Towards Data Science Github(https://github.com/loiseaujc/TowardsDataScience/tree/master)里免费获得。由我们的模型学习得到的决策边界如下所示

对于这个特殊的例子,我们的感知器在整个数据集上进行了三次传递,以正确地学习这个决策边界。对于我们的训练数据集中地点示例,虽然它正确地进行了分类,但我们将在之后的系列中看到,感知器的泛化能力相当有限,特别是由于它具有较小的余量以及对噪声数据的高灵敏度,甚至可能阻止学习算法收敛。尽管如此,但我还是建议你从Github下载相应的脚本,并通过它来构建你的认知,并了解它的工作原理以及它的局限性。毕竟,铁器造就了铁匠,帆船造就了水手,实践才能造就出完美。

感知器的消亡

这种线性可分学习算法的简单性和高效性是它在1950年代末和1960年代早期如此受欢迎的关键原因之一。然而,这种受欢迎程度导致Rosenblatt高估了他的感知能力,在科学界产生了不切实际的期望。我们将在即将发布的帖子中分析,是什么极大地限制了它对现实问题的适用性。Marvin Minsky(1927-2016,美国认知科学家)和Seymour Papert(1928-2016,南非出生的美国数学家)于1969年出版了的《Perceptrons:an introduction to computational geometry》 。在本书中,作者展示了Rosenblatt的感知器(以及任何其他单层感知器)实际上是多么有限,并且值得注意的是,它不可能学习简单的逻辑XOR函数。有人认为,本书的出版和感知器极限的证明引发了1980年代所谓的人工智能"寒冬"......

结论

这篇文章是我明年将在法国巴黎高等艺术学院教授的博士课程"初学者深度学习入门"的系列文章中的篇。既然我们必须要先学会走路才能跑步,所以我们的注意力一直集中在深度学习的初步阶段。因为这些是现代神经网络的基本构建模块,所以请不要犹豫,尽可能多地阅读关于它们的资料,以确保在进入深度学习之前完全掌握它们的属性和局限性。尽管网上可以找到很多教程(有些真的很好,有些则没有用处),建议你使用像TensorFlow那样可以运行深入的学习库,而不需要对基础数学有深入的理解。但是,拥有基础的知识见解和储备是非常有用的,为了防止你止步于高难度的深入学习。我们需要从基础做起。

在接下来的几篇文章中,我们将讨论以下主题:

感知器收敛性定理。

Rosenblatt感知器的限制。

自适应线性神经元和Delta规则,它改进了Rosenblatt的感知器。

其他在线资源

SebastianRaschka关于单层神经网络和梯度下降的博客文章。(https://sebastianraschka.com/Articles/2015_singlelayer_neurons.html#adaptive-linear-neurons-and-the-delta-rule)

JontySinai的博客文章。(https://jontysinai.github.io/jekyll/update/2017/11/11/the-perceptron.html)

分享好友

分享这个小栈给你的朋友们,一起进步吧。

通俗易懂--机器学习
创建时间:2019-08-02 11:00:07
这里汇集了机器学习、NLP面试中常考到的知识点和代码实现,也是作为一个算法工程师必会的理论基础知识。 以各个模块为切入点,让大家有一个清晰的知识体系。 亦可拿来常读、常记以及面试时复习之用。 每一章里的问题都是面试时有可能问到的知识点,如有遗漏可联系我进行补充,结尾处都有算法的实战代码案例。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • mantch
    栈主

小栈成员

查看更多
  • 栈栈
  • Jack2k
  • hwayw
  • 天上飘下来的人
戳我,来吐槽~