帖子

[经验分享] AI 搬运工 | 机器学习者需要了解的十大神经网络架构(上)

[复制链接]

该用户从未签到

750 AI 搬运工 发表于 2019-5-10 08:16:16 1#
神经网络(Neural Networks)是机器学习的一种模型算法。如果你曾学习过机器学习的课程,那么你应该也接触过神经网络。

神经网络是一组特定的算法,它引起了机器学习领域的彻底性的变革。神经网络启发于生物神经网络,当前我们所说的深度神经网络已被证明十分有用。

神经网络本身就是一般的函数逼近,这也是为什么他们能被运用于几乎任何一个关于从输入到输出空间的复杂映射的机器学习问题中。


1_F-PHNVI7wdcoYFDrA9pmGQ.jpeg


为什么要学习神经网络算法?主要有以下三个原因:

1. 了解大脑的实际运作过程:大脑很复杂,且大脑的组成部分一旦被破坏,就会形成脑死亡。因此我们需要利用计算机来模拟大脑,从而了解大脑的运作过程。

2. 了解受神经元及其自适应连接启发的并行计算风格:这种风格与串行计算风格完全不同。

3. 利用受大脑启发的新颖学习算法来解决实际问题:即使这些算法并没有表明大脑的实际运作过程,学习它们也是很有用的。




我在学习完吴恩达老师的Machine Learning Coursera课程后,便开始对神经网络和深度学习产生了兴趣。因此,我开始去寻找最好的相关网络资源,发现了Geoffrey Hinton的Neural Networks for Machine Learning课程。如果你是机器学习从业者,或者你想进入这个领域,那么你真的应该去学习这个课程。毫无疑问,Geoffrey Hinton是机器学习的开拓者,他的这个课程确实很不错。本篇中,我想分享一下,我从这门课程中学习到的10大神经网络架构,我想,这十大架构应该是所有机器学习研究者都应该了解的。

1. 感知器 Perceptrons




1.png



第一代神经网络出现时,感知器仅仅是单个神经元的计算模型,这一概念最初时Frank Rosenblatt在其论文The perceptron: a probabilistic model for information storage and organization in the brain中提出来的。感知器也被称为前馈神经网络(feed-forward neural network)。它将前端信息提供给后端。训练感知器通常会要求反向传播,将输入和输出数据配对并输送到网络。输入数据被发送到神经元,经过处理后输出一个结果,即输出数据。反向传播的误差通常是输入数据和输出数据之间的差异变化。假使神经网络有足够的隐藏神经,理论上来说它就可以一直模拟输入数据和输出数据之间的关系。事实上,它们在利用上虽然受限较多,但是它们通常会与其他网络进行结合,从而形成新的网络架构。

2.jpeg





然而,感知器确实还有些缺陷:如果你手动选择特征,同时你有足够的特征,你几乎可以完成任何事。对于二进制输入向量来说,我们可以给每一个多进制向量匹配一个独立的特征单元,从而促使我们可以尽可能去区分二进制输入向量。一旦手动编码特征确定以后,它们就会从很大程度上限制感知器可以学习的内容。

2. 卷积神经网络  Convolutional Neural Networks
1998年,计算机科学家扬·勒丘恩和他的小伙伴们开发了一款十分好用的手写数字识别器,名为LeNet。这款识别器在前馈神经网络中使用了反向传播算法。该前馈神经网络拥有多个隐藏层,每个层拥有多个复制单元映射,且汇集了附近复制单元的输出数据;同时,该前馈神经网络拥有一个大网,即使复制单元重叠也可以同时处理多个字符,并且,这不仅仅只是一款识别器,它还是训练复杂系统的有效方法。后来,这款识别器被正式命名为卷积神经网络(CNNs)。一个有趣的事实是:卷积神经网络在北美被用于10%的支票读取服务。

3.png





卷积神经网络与其他多数神经网络有所不同。

卷积神经网络主要是用于图像处理,也可以用于其他数据类型的处理,如音频文件。卷积神经网络一个典型案例就是处理网络图片和网络分类数据。卷积神经网络倾向于从输入“扫描仪”开始,该扫描仪不会一次解析所有训练数据。举个例子,为了输入一张100×100的图片,你不会想要1000个节点的图层。相反,你会创建一个10*10的扫描输入层,将10×10的图片输入进去。如果图片通过输入,你可以通过向右移动扫描仪一个像素,就可以输入下一个10×10像素的图片。


4.png


输入数据通过卷积层而非普通层输入(普通层并非所有节点之间都是互相连接的)。每一个节点本身仅关注与其相邻的节点。随着卷积层变得越发深入以后,卷积层也趋于收缩,主要是因为输入数据易于分割。除了卷积层,卷积网络通常也以池化层(pooling layer)为特色。池化层用于筛选细节:常用的池化类型是最大池化(max pooling),在最大池化中,我们采取的是2×2矩阵,并且将多数矩阵涂为红色。如果你想更深入研究卷积神经网络,可以读一读扬·勒丘恩的原论文——Gradient-based learning applied to document recognition

3. 循环神经网络Recurrent Neural Networks

为了理解循环神经网络,我们需要先简单介绍一下序列模型(sequence modeling)。当机器学习被应用于序列时,我们通常希望将输入序列转换为可以在不同领域中存在的输出序列。比如:将声压序列转换为单词序列。如果没有单独的目标序列,我们可以通过尝试预测输入序列的下一项来获取目标数据。目标输出序列是输入序列的下一步。相比于从其他像素中或根据图像的其余部分来预测图像的某一个部分来说,这似乎更为自然。对于序列中的下一项的预测行为使监督学习和非监督学习之间的差异变得模糊。它利用的虽是为监督学习而设计的方法,但它并不需要单独的目标数据。


5.png






无记忆模型(Memoryless models)是针对此任务的标准方法。特别是,自回归模型可以根据之前利用“延迟打拍”的固定数量来预测一个序列中的下一项。前馈神经网络属于广义上的自回归模型,它使用的是一层或多层的非线性隐藏单元。然而,如果我们让生成模型变成隐藏状态,并且使这个隐藏状态的内部是动态的,那么我们就会得到一个更有趣的模型——该模型可以在隐藏层长久储存信息。如果隐藏状态的内部动态是有噪声的,而且它从隐藏层产生的输出数据也是有噪声的,那么我们就无法知道确切的隐藏状态。我们做能做的,就只是推断隐藏状态向量空间中的概率分布。这种推断也只适用于两类隐藏状态模型。

循环神经网络的强大在于其拥有的两大属性:1)分布式隐藏状态允许其有效存储过去的大量信息;2)非线性动态允许其以复杂的方式来更新其隐藏状态。在拥有足够神经元和足够时间的情况下,循环神经网络可以计算任何计算机可以计算的东西。那么,循环神经网络可以执行哪些行为呢?它们可以有规律地来回移动,可以稳定在点吸引子(point attractor),也可以产生一些混乱的行为。循环神经网络还可能学习去执行很多的小程序,每个小程序都可以抓取一块知识,并且可以同时运行,以产生较为复杂的影响。





1_Kje9TpsSvMGeBF6vIv6k5Q.jpeg



循环神经网络的一个问题是,正在消失的(或者正在爆发的)梯度问题——取决于已使用的激活函数,信息会随着时间的流逝而快速丢失。直觉上来讲,这不会是个问题,因为它们仅仅是权重而不是神经元状态,但是这些时间上的权重实际上是过去的信息被储藏的地方。如果权重值介于0到1000000之间,以前的状态就不会提供很多的信息。原则上来说,循环神经网络可以被应用于很多领域,因为大多数形式的数据实际上没有时间线(除了声音或视频数据),可以被当作一个序列。一张图片或一串文字一次可以输入一个像素或一个字符,因此与时间相关的权重被用于序列中之前的内容,而不是X秒前实际发生的内容。一般来讲,循环神经网络对于推动或完善信息如自动完善信息来说是一个不错的选择。

未完待续…… 下周五见!

PS:喜欢就点个赞,顺手分享一下,好让我有持续的动力接着翻译文章给你看,好不好呀~

注:本文首发于个人知乎账号:AI搬运工

编译 | AI搬运工
文章链接 | The 10 Neural Network Architectures Machine Learning Researchers Need To Learn
知乎相关文章回顾:
浅谈深度学习的工作原理
深度学习主要应用在哪些领域?
如何在6个月内入门深度学习?
深度学习与普通机器学习有什么区别?
普通人如何正确学习人工智能?