神经网络的发展历史模型的一个优良特性几何解释

一。神经网络发展史

在介绍神经网络的发展历史之前,先介绍一下神经网络的概念。神经网络主要是指模仿人脑设计的简化计算模型。该模型包含大量用于计算的神经元。以某种方式组织在一起。各层神经元之间可以进行大规模并行计算,层与层之间传递消息。

下图展示了整个神经网络的发展过程:

神经网络发展的历史甚至早于计算机的发展。最早的神经网络模型早在 1940 年代就出现了。接下来,本文将以神经网络的发展历程为主线,带领大家初步了解神经网络的基础知识。

第一代神经元模型是验证型。当时的设计者只想验证神经元模型是否可以进行计算。这种神经元模型既不能训练也不能学习。它可以简单地视为一个定义良好的神经元模型。逻辑门电路,因为它的输入和输出是二进制的,并且中间层的权重是预先定义好的。

神经网络的第二次发展时代是在 1950 年代和 1960 年代,以一些工作为代表,例如 Rosenblatt 提出的感知机模型和 Herbert 学习原理。

二。感知器模型

感知器模型与前面提到的神经元模型几乎相同,但两者之间存在一些关键差异。感知器模型的激活函数可以选择不连续函数和sigmoid函数,其输入可以选择使用实数向量而不是神经元模型的二进制向量。与神经元模型不同,感知器模型是可以学习的模型。下面介绍感知器模型的一个优秀特性——几何解释。

我们可以把输入值(x1, . . ., xn)看成是N维空间中一个点的坐标,而w⊤x−w0 = 0可以看成是N维空间中的一个超平面。显然,当 w ⊤x−w00 时,此时的点位于超平面之上。感知器模型对应于分类器的超平面,可以在N维空间中分离不同类别的点。从下图中可以看出,感知器模型是一个线性分类器。

对于一些基本的逻辑运算,如AND、OR、NOT,感知器模型可以很容易地做出判断分类。那么所有的逻辑操作都可以被感知器分类吗?答案当然是否定的。例如,异或运算很难通过单一的线性感知器模型进行分类,这也是神经网络的发展在第一个高峰之后迅速进入低谷的主要原因。这个问题最早是由 Minsky 等人提出的。在他们关于感知器的工作中,但事实上,很多人对这项工作存在误解。事实上,明斯基等人。还指出,XOR 操作可以由多层感知器实现,同时提出了这个问题。,但由于当时学术界还没有有效的学习方法来学习多层感知机模型,

多层感知器模型实现异或运算的直观几何结构如下图所示:

三。前馈神经网络

进入1880年代后,由于单层感知器神经网络的表达能力非常有限,只能做一些线性分类器任务,神经网络的发展进入了多层感知器时代。典型的多层神经网络是前馈神经网络,如下图所示,它包括一个输入层、一个节点数可变的隐藏层和一个输出层。任何逻辑操作都可以用一个多层感知器模型来表示,但这涉及到三层交互的权重学习问题。将输入层节点xk乘以输入层和隐藏层之间的权重vkj,然后通过sigmoid等激活函数得到对应的隐藏层节点值hj。同样,经过类似的操作,

需要学习的权重信息是两个矩阵w和v,最终的信息是样本的输出y和真实的输出d。具体流程如下图所示:

如果读者有简单的机器学习知识库,就会知道一般情况下,会根据梯度下降的原理来学习一个模型。在感知器模型中使用梯度下降的原理是比较容易的。下图是一个例子。首先,确定模型的损失。例子中使用了平方根损失,即得到样本的真实输出d与模型给出的输出y的差值。为了计算方便,通常使用平方关系E= 1/2 (d−y)^2 = 1/2 (d−f(x))^2。根据梯度下降原理,权重更新遵循如下规则: wj ← wi + α(d − f(x))f′(x)xi ,其中α为学习率,可以手动调整。

四。反向传播

对于多层前馈神经网络,我们如何学习其中的所有参数?首先,顶层的参数很容易获得。根据上面提到的计算模型的输出和真实输出的差异,可以根据梯度下降的原理得到参数结果,但是问题是对于隐藏层,虽然我们可以计算出它的模型输出,但不知道它的预期输出是什么,就没有办法有效地训练多层神经网络。这也是当时长期困扰学术界的一个问题,导致了 1960 年代之后神经网络缺乏更多的发展。

后来,在 1870 年代,许多科学家独立提出了一种称为反向传播的算法。这个算法的基本思想其实很简单。虽然此时隐藏层的状态无法根据隐藏层的预期输出进行更新,但可以根据隐藏层对Error的梯度更新隐藏层与其他层之间的权重。在计算梯度时,由于每个隐藏层节点都与输出层中的多个节点相关联,因此前一层的所有误差都会累积起来。

反向传播的另一个优点是同一层中节点的梯度和权重更新可以并行计算,因为它们之间没有相关性。整个BP算法过程可以用如下伪代码表示:

接下来,我们介绍 BP 神经网络的一些其他性质。BP算法实际上是一个链式法则,可以很容易地推广到任何有向图的计算中。根据梯度函数,在大多数情况下,BP神经网络只给出局部最优解bp神经网络原理及其在字符 1 识别中的应用,而不是全局最优解。但从整体上看,BP算法总体上可以算出比较好的解。下图是BP算法的可视化演示:

大多数情况下,BP神经网络模型会在这个范围内找到一个最小值点bp神经网络原理及其在字符 1 识别中的应用,但在这个范围之外我们可能会找到一个更好的最小值点。在实际应用中,对于此类问题,我们有很多简单但非常有效的解决方案,例如尝试不同的随机初始化方法。事实上,在一些深度学习领域比较常用的模型中,初始化方式对最终结果的影响很大。另一种使模型跳出局部最优解范围的方法是在训练时加入一些随机噪声,或者使用一些遗传算法避免训练模型停留在不理想的局部最优解位置。

BP神经网络是机器学习的优秀模型,说到机器学习,就不得不提一个在整个机器学习过程中经常遇到的基本问题——过拟合问题。过拟合的一个普遍现象是,虽然模型在训练集上的loss一直在下降,但实际上它在测试集上的loss和error可能已经开始上升了。避免过拟合问题的常用方法有两种:

神经网络在 1880 年代曾经非常流行,但不幸的是在 1990 年代,神经网络的发展陷入了第二个低谷。造成这种低迷的原因有很多,例如支持向量机 (SVM) 的兴起,这是 1990 年代非常流行的模型。它在各大会议中占有一席之地,也被用于主要应用领域。取得了很好的效果。支持向量机有非常完善的统计学习理论,以及非常好的直观解释,效率也非常高,结果也很理想。

因此,与支持向量机相关的统计学习理论的兴起,在一定程度上抑制了神经网络的发展。另一方面,从神经网络本身来看,虽然BP理论上可以用来训练任意程度的神经网络,但在实际应用中,我们会发现随着神经网络层数的增加,神经网络的训练难度呈几何级数增长。例如,在 1990 年代初期,人们发现在多层神经网络中可能会出现梯度消失或梯度爆炸的现象。

举一个梯度消失的简单例子,假设神经网络的每一层都是一个sigmoid结构层,那么每次BP反向传播时,它的loss都会连接到一个sigmoid梯度。一系列元素连接在一起,如果其中一个元素的梯度很小,就会导致梯度向下传播越来越小。事实上,在传播一两层之后,这个梯度已经消失了。梯度消失会导致深层参数几乎是静止的,从而难以得出有意义的参数结果。这就是多层神经网络很难训练的原因之一。

学术界对这个问题做了大量的研究,最简单的处理方法就是修改激活函数。早期的尝试是使用 Rectified 激活函数。由于sigmoid函数是指数形式的,容易造成梯度消失的问题,Rectified用max(0,x)代替sigmoid函数。从下图中我们可以发现,对于那些大于0的样本点,它的梯度是1,所以不会造成梯度消失的问题,但是当样本点小于0的时候,我们可以看出它的梯度再次变为0,所以ReLU函数是不完善的。后来,出现了包括 Leaky ReLU 和 Parametric Rectifier (PReLU) 在内的改进功能。当样本点x小于0的时候,我们可以人为的乘以一个系数比如0.

图片[1]-神经网络的发展历史模型的一个优良特性几何解释-老王博客

随着神经网络的发展,出现了一些在结构上解决梯度迁移困难问题的方法,例如元模型、LSTM 模型,或者在图像分析中使用跨层连接来提高梯度效率的很多方法。容易传播。

五号。深度学习入门

在 1990 年代神经网络的第二次低谷之后,到 2006 年,神经网络再次回归大众视野,而这次回归后的人气远高于以往的任何一次上涨。神经网络复兴的标志是 Hinton 等人的两篇论文。在 Salahudinov 等人。关于多层神经网络(现在称为“深度学习”)。

其中一篇论文解决了上述神经网络学习中如何设置初始值的问题。解决方法就是简单的假设输入值为x,然后输出就是解码x。这样,我们可以学习到更好的初始化点。另一篇论文提出了一种训练深度神经网络的快速方法。事实上,神经网络的现状有很多原因。例如,今天的计算资源与过去相比非常庞大,数据也是如此。在 1880 年代,由于缺乏大量的数据和计算资源,很难训练出大规模的神经网络。

神经网络的早期兴起主要归功于三个重要的标志性人物,Hinton、Bengio 和 LeCun。Hinton 的主要成就在于 Restricted Boltzmann Machine 和 Deep autoencoder;Bengio 的主要贡献在于元模型在深度学习中的使用取得了一系列突破,这也是深度学习最早的实际应用。在突破领域,基于元模型的语言建模在 2003 年就已经可以击败当时最好的概率模型;LeCun 的主要成就是对 CNN 的研究。深度学习崛起最重要的表现就是占据了NIPS、ICML、CVPR、ACL等主要技术峰会的半壁江山。包括 Google Brain、Deep Mind 和 FaceBook AI 在内的研究部门已经将他们的研究工作放在了中心位置。

神经网络进入大众视野后的第一个突破是在语音识别领域。在使用深度学习理论之前,人们使用定义明确的统计库来训练一些模型。2010 年,微软采用深度学习神经网络进行语音识别。从图中可以看出,两个误差指标下降了近三分之一,效果显着。基于最新的 ResNet 技术,微软将此指标降低到 6.9%,每年都有显着提升。

到2012年,在图像分类领域,CNN模型在ImageNet上取得了重大突破。测试图像分类是一个大数据集,这些图像被分为 1000 个类别。在使用深度学习之前,当时最好的结果是错误率 25.8%(2011 年的一个结果),在 Hinton 和他的学生在 2012 年将 CNN 应用于这个图像分类问题之后,这个指标有了下降了近 10%。从2012年开始,我们可以从图表中观察到,这个指标每年都有很大程度的突破,这些结果都是使用CNN模型得到的。

深度学习模型能取得如此巨大的成功,在现代人看来,主要是因为它的层次结构,可以独立学习,通过层次结构抽象地表达数据。抽象出来的特征可以应用于各种其他任务,这也是深度学习目前非常火的原因之一。

下面介绍两种非常典型且常用的深度学习神经网络:一种是卷积神经网络(CNN),另一种是循环神经网络。

1.卷积神经网络

卷积神经网络有两个基本核心概念,一个是Convolution,一个是Pooling。此时可能有人会问,为什么我们不直接使用前馈神经网络,而是使用CNN模型呢?例如,对于1000*1000的图像,神经网络会有100万个隐藏层节点,而对于前馈神经网络,则需要学习10^12等巨大数量级的参数,这几乎是不可能学习的,因为需要大量样本。但实际上,对于图像来说,它们中的许多都具有相同的特征。如果我们使用 CNN 模型进行图像分类,由于 CNN 是基于卷积的数学概念,每个隐藏层节点只会跟随其中一张图像。本地连接并扫描其本地功能。

从下图中,我们可以直观地看出前馈神经网络与 CNN 的区别。图中的模型,从左到右分别是全连接的正常前馈神经网络、部分连接的前馈神经网络和基于卷积的CNN模型网络。我们可以观察到,基于卷积的神经网络的隐藏层节点之间的连接权重参数是可以共享的。

另一种操作是池化。在卷积生成的隐藏层的基础上,CNN会形成一个中间隐藏层——池化层。最常见的池化方法是Max Pooling,即在得到的隐藏层的节点中选择一个最大值作为输出。由于池化有多个内核,我们将得到多个中间隐藏层节点。

那么这样做有什么好处呢?首先,通过池化操作,参数的数量级会进一步降低;其次,它具有一定的平移不变性,如图所示,假设图中九个隐藏层节点之一进行平移,池化操作形成池化层节点保持不变。

CNN的这两个特点使其在图像处理领域得到了广泛的应用,现在甚至已经成为图像处理系统的标准。像下面的可视化汽车这样的例子很好地说明了 CNN 在图像分类领域的应用。将原车图像输入到 CNN 模型后,从原本简单粗暴的边缘、点等特征,经过卷积和 RELU 的一些激活层,我们可以直观的看到越接近顶层的输出图像,其特征更接近汽车的轮廓。这个过程最终会得到一个隐藏层表示并将其连接到一个全连接的分类层,进而得到图片的类别,比如图片中的汽车、卡车、飞机、轮船、马等。

下图是 LeCun 等人提出的用于手写识别的早期神经网络。该网络已在 1990 年代成功用于美国邮件系统。有兴趣的读者可以登录乐存官网查看其识别笔迹的动态过程。

CNN在图像领域的应用非常火爆的同时,近两年CNN在文本领域也得到了广泛的应用。比如对于文本分类的问题,目前最好的模型是基于CNN模型的。从文本分类的特点来看,识别一个文本的类别其实只需要识别出文本中的一些关键词信号,而这种工作非常适合CNN模型来完成。

事实上,如今的 CNN 模型已经应用到了人们生活的各个领域,比如侦探、自动驾驶汽车的研发、Segmenttation、Neural Style。其中,Neural Style 是一个非常有趣的应用。例如,在 App Store 中有一个非常流行的应用程序 Prisma。它可以将用户上传的照片转换成其他风格,比如梵高的星空风格。其中CNN技术应用广泛。

2. 循环神经网络

循环神经网络的基本原理如下图所示。从图中可以看出,循环神经网络的输出不仅取决于输入x,还取决于当前的隐藏层状态,隐藏层状态会根据之前的x进行更新。这个过程可以通过展开图直观的理解。中间隐藏层状态 S(t-1) 的第一个输入会影响下一个输入 X(t)。递归神经网络模型的优点是可以与文本等顺序数据,语言,或语音,即当前数据的状态受前一个数据状态的影响,对于这样的数据,前馈神经网络很难实现。

说到RNN,就不得不介绍前面提到的LSTM模型。事实上,LSTM 并不是一个完整的神经网络,它只是一个 RNN 网络中节点复杂处理的结果。LSTM 中有三个门:输入门、遗忘门和输出门。

这三个门都是用来处理cell中的数据内容,分别决定是否输入、忘记和输出cell中的数据内容。

最后介绍一个非常流行的跨域神经网络的应用——将图片转换为文字的描述形式或图片的标题。具体实现过程可以简单解释为首先通过CNN模型提取图片中的信息,形成向量表示,然后将向量作为输入传递给训练好的RNN模型,得到图片的描述。

视频直播审核地址:

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论