深度学习简史:初学者快速上手指南(上)
点击上方关注,All in AI中国
作者——Jean-Christophe B. Loiseau
这篇文章是我明年将在法国巴黎高等艺术学院教授的博士课程"初学者深度学习入门"系列文章中的第一篇。本系列的目的是帮助初学者逐步建立他们对神经网络内部机制的认知,并分享一些关于我对数学的基本理解。在此过程中我们还将讨论一些历史方面的问题。最后要注意的是,由于你可能没有时间(也没有意愿)阅读本系列中的所有文章,因此每篇文章都是尽可能独立的。现在,让我们一起来讨论吧!
在过去的十年中,机器学习在认知神经科学、图像分类、推荐系统或工程等众多领域中产生了变革性的影响。最近,随着科学和主流媒体定期报道神经网络和深度学习的增多,它们引起了更多人的关注。
尽管有越来越多高效和通用的库能够减少实现深度学习算法所需的知识,为创新应用打开了大门,但技术人员仍然需要对基础数学理论有一个很好的理解,才能构建高效的神经网络体系结构。
不幸的是,社会上大多数人对数学的印象可能会吓跑学生。这种数学素养的缺乏也可能是政治和非技术产业对深度学习表现和能力持怀疑态度或过于乐观的原因之一。此外,Susannah Shattuck发表了一篇文章,讨论为什么人们不信任AI以及为什么行业可能不愿意采用AI。她引用的一个主要原因是:在IBM 2018年的一项研究中,63%的受访者认为缺乏技术技能是人工智能实施的障碍。
本系列的历史观点和目标
尽管深度学习最近才进入主流媒体的视野中,但它的历史可以追溯到20世纪40年代初,当时McCulloch和Pitts建立了第一个人工神经元数学模型。从那以后,科学文献中提出了无数的体系结构,从Frank Rosenblatt(1958)的单层感知器到最近的神经常微分方程,以解决各种任务(例如时间序列预测、图像分类、模式提取等)。下面的时间轴(由Favio Vázquez提供)显示了一个相当准确的深度学习历史图,你可以在这张图上看到整个历史过程。
如你所见,这段历史相当密集。因此,在有限数量的博客文章中涵盖所有这些不同的架构将是不现实的。此外,其中一些神经网络架构可能来自高级数学领域,甚至来自统计物理学。本系列的目的不是详细讨论这些架构中的每一个,而是逐步向初学者介绍深度学习的基础数学理论、它使用的基本算法、以及关于其发展的一些历史观点。
为此,我们将从简单的线性分类器开始,然后介绍完全连接的神经网络和其他体系结构,如卷积神经网络或LSTM网络。像我们关注的其他主题,例如凸优化和非凸优化,普遍逼近定理等也将在此过程中得到解决。因为我们的目标是帮助初学者理解深度学习算法的内部工作原理,因此我们所有的实现主要依赖于SciPy和NumPy(尽可能的全部使用),而不是像TensorFlow那样高度优化的库。
此外,为了教育和科学推广深度学习的目的,本系列中使用的所有代码都可以在GitHub中免费获得(https://github.com/loiseaujc/TowardsDataScience/tree/master)。
McCulloch和Pitts的人工神经元模型(1943)
人工神经元的第一个数学模型是由Warren S. McCulloch(1898-1969,美国神经生理学家)和Walter H. Pitts Jr(1923-1969,美国逻辑学家)于1943年提出的阈值逻辑单元。在深入研究他们的模型之前,让我们快速回顾一下生物神经元是如何工作的。
左:Warren S. McCulloch。右:Walter H. Pitts Jr.
生物神经元的高级描述
神经元,又称神经细胞,是大脑的组成部分。神经元是神经系统的基本结构和机能单位。主要部分包括树突、胞体、轴突、细胞膜。简而言之,神经元是是一种高度分化的细胞,它具有感受刺激和传导兴奋的功能,通过专门的连接与其他细胞通信。存在不同的生物模型来描述它们的特性和行为,例如:
- 早在1907年,Louis Lapicque(1866-1952,法国神经科学家)就提出了Integrate-and-Fire模型。
- Hodgkin-Huxley模型,以Alan A. Hodgkin(1914-1998,英国生理学家和生物物理学家)和Andrew F. Huxley(1917-2012,英国生理学家和生物物理学家,他获得了1963年的诺贝尔生理学和医学奖)的名字命名。
- FitzHugh-Nagumo模型,以Richard FitzHugh(1922-2007,美国生物物理学家)和J. Nagumo(日本工程师)命名,基本上是Hodgkin-Huxley模型的简化。
- Eugene M. Izhikevich(1967年出生,俄罗斯数学家)最近提出的spiking neurons模型(尖峰神经元模型)。
虽然这些模型中的一些开始被用作复杂神经网络的模块构建,但我们将在后文中对神经元进行非常详细的描述。如下图所示。就我们的目的而言,我们只对以下特性感兴趣:
生物神经元的示意图
- 树突,是神经细胞的分支原生质延伸,它将从其他神经细胞接收的电化学刺激传播至细胞体。每个神经元可以有一或多个树突。
- Soma(胞体)是连接并传递从树突中接收的信号的地方。胞体是神经元的代谢和营养中心。胞体的结构与一般细胞相似,有细胞膜、细胞质和细胞核。
- Axon hillock是连接轴突体细胞的一个特殊部分。正是它控制着神经元。如果它接收的信号的总强度超过其阈值极限,则神经元将在轴突下发射信号。
- Axon是从细胞向下延伸到末端的细长纤维。它的作用是通过突触将神经信号传递给其他神经元。
- Synapses是位于轴突末端的一个小间隙,连接着神经元和其他神经细胞。在那里,神经递质用于将信号穿过突触传递到其他神经元。
生物神经元的工作原理可概括如下。首先,它从树突(即其他神经元)获取输入。然后,在soma内执行这些输入的加权和。结果被传递到Axon hillock。如果此加权和大于阈值限制,则神经元将触发。否则,它会保持静止状态。我们神经元的状态(开或关)通过其轴突传播,并通过它的突触传递给其他连接的神经元。虽然非常简单,但这种对生物神经元工作原理的高级描述足以理解McCulloch和Pitts在1943年提出的人工神经元的数学模型。
人工神经元的数学模型
基于对神经元操作原理的基本理解,McCulloch&Pitts在1943年发表的开创性论文《A logical calculus of the ideas immanent in nervous activity》中提出了第一个人工神经元的数学模型。虽然很简单,但他们的模型已被证明非常通用且易于修改。今天,他们原始模型的变化现在已成为大多数神经网络的基本构建,从简单的单层感知器到微软用来赢得2016年ImageNet竞赛的152层深度神经网络都是由它们构建。
McCulloch&Pitts的神经元模型,简称MCP神经元,规则定义如下:
- 它的二进制输出y∈{0,1},其中y = 1表示神经元触发,y = 0表示它处于静止状态。
- 它有N个二进制输入xₖ∈{0,1}。
- 它有一个抑制输入i。
- 它具有阈值Θ。如果其输入的总和大于该临界值,则神经元会触发。否则它会保持静止状态。
给定输入x = [x 1,x 2,x 3,...,xₙ]ᵀ,抑制输入i和阈值Θ,输出y计算如下
许多不同的论文和博客文章都展示了如何使用MCP神经元来实现不同的布尔函数,如OR,AND或NOT。下面使用Marvin Minsky的符号说明这些。
使用MCP神经元建模的三个布尔函数。
必须强调的是,通过堆叠多个MCP神经元,还可以表示更复杂的特性。尽管具有这种灵活性,MCP神经元仍然受到主要限制,即
- 单个MCP神经元不能表示XOR布尔函数或任何其他非线性函数。
- 所有突触权重都设置为1,这意味着所有输入对输出的贡献相等。
- 所考虑的函数需要由用户进行硬编码。无法从数据中学习。
- 绝对抑制规则(即如果抑制性输入i打开,神经元不能触发)限制性太强。
尽管如此,MCP神经元在当时的研究界引起了极大的关注,在半个多世纪之后,又产生了现代深度学习。在这个过程中,解决了MCP神经元局限性的最重要的改进之一来自于Frank Rosenblatt和他的感知器。
注:Akshay Chandra Lagandula去年夏天发表了一篇关于McCulloch和Pitts神经元的精彩介绍。最值得注意的是,他说明了如何使用此模型实现布尔函数(例如AND,OR等)。强烈建议有兴趣的读者查看。
编译出品