关于神经网络,你需要了解这些(一)

简介: 对神经网络概念还很朦胧?来看看阿里技术大牛的分享!

神经网络和深度学习技术是当今大多数高级智能应用的基础。在本文,来自阿里巴巴搜索部门的高级算法专家孙飞博士将简要介绍神经网络的演变,并讨论该领域的最新发展。本文主要围绕以下五个方面:

  • 神经网络的演化;
  • 感知机模型;
  • 前馈神经网络;
  • 反向传播;
  • 深度学习基础知识;

1.神经网络的演变

在我们深入研究神经网络的历史发展之前,让我们首先介绍神经网络的概念。神经网络主要是一种计算模型,它以简化的水平模拟人类大脑的运作。这种类型的模型使用大量计算神经元,这些神经元通过加权连接层连接。每层神经元都能够执行大规模并行计算并在它们之间传递信息。

下面的时间表显示了神经网络的演变:

b13c05e1ba1e737d5b000c7b37f77c686d0d5f33

神经网络的起源甚至可以追溯到计算机本身的发展之前,第一个神经网络出现在20世纪40年代。本文将通过一些历史来帮助每个人更好地理解神经网络的基础知识。

第一代神经网络神经元作为验证者:这些神经元的设计者只是想确认他们可以构建用于计算的神经网络。但,这些网络不能用于训练或学习,它们只是充当逻辑门电路。它们的输入和输出是二进制的,权重是预定义的。

神经网络发展的第二阶段发生在20世纪50年代和60年代:这涉及Roseblatt关于感知机模型的开创性工作和Herbert关于学习原理的工作。

2.感知机模型

我们上面提到的感知机模型和神经元模型相似但有一些关键差异。感知机模型中的激活算法可以是中断算法或S形算法,并且其输入可以是实数向量而不是神经元模型使用的二进制向量。与神经元模型不同,感知机模型能够学习。接下来,我们将讨论感知机模型的一些特殊特性。

我们可以将输入值(x1...xn)视为N维空间中的坐标,而wTx-w0=0是N维空间中的超平面。显然,如果wTx-w0<0,则该点低于超平面,而如果wTx-w0> 0,则该点落在超平面之上。

感知机模型对应于分类器的超平面,并且能够分离N维空间中的不同类型的点。看下图,我们可以看到感知机模型是线性分类器:

7adbd5d419e04ae6513915310e02c42f93e82820

感知机模型能够轻松地对AND,OR和NOT等基本逻辑运算进行分类。

我们可以通过感知机模型对所有逻辑运算进行分类吗?答案当然不是。例如,通过单个线性感知机模型很难对异或运算进行分类,这是神经网络在第一个峰值之后很快进入开发的低点的主要原因之一。包括明斯基在内的一些大牛就感知机模型的主题讨论了这个问题。然而,很多人在这个问题上误解了作者。

实际上,像明斯基这样的作者指出,可以通过多层感知机模型实现异或运算;然而,由于学术界缺乏有效的方法来研究当时的多层感知机模型,神经网络的发展已经进入了第一个低点。

下图直观地显示了多层感知机模型如何实现异或操作:

99b3ed67cbd16b4f1fac0040a5b9fc7f97c9c1c1

3.前馈神经网络

进入20世纪80年代,由于感知机模型神经网络的表达能力局限于线性分类任务,神经网络的发展开始进入多层感知机阶段。而经典的多层神经网络是前馈神经网络。

从下图中可以看出,它涉及输入层,具有未定义数量的节点的隐藏层和输出层。

57e1f6833eb99a83c825164e2857099f4a3cac86

我们可以通过多层感知机模型表达任何逻辑运算,但这引入了三层之间的加权学习问题。当xk从输入层传输到隐藏层上的加权vkj,然后通过像sigmoid这样的激活算法时,我们可以从隐藏层中检索相应的值hj。同样,我们可以使用类似的操作使用hj值从输出层导出yi节点值。为了学习,我们需要来自w和v矩阵的加权信息,以便我们最终可以获得估计值y和实际值d。

如果你对机器学习有基本的了解,你就会明白为什么我们使用梯度下降来学习模型。将梯度下降应用于感知机模型的原理相当简单,如下图所示。首先,我们必须确定模型的损失。

该示例使用平方根损失并寻求缩小模拟值y与实际值d之间的差距。为了方便计算,在大多数情况下,我们使用根关系E=1/2(dy)^2 = 1/2(df(x))^2。

根据梯度下降原理,加权更新周期的比率为:wj←wi+α(d-f(x))f'(x)xi,其中α是我们可以手动调整的学习率。

f54200949ff0360947327587fbfbd2f6a5f3784f

4.反向传播

我们如何学习多层前馈神经网络中的所有参数?顶层的参数非常容易获得,我们可以通过比较计算模型输出的估计值和实际值之间的差异并使用梯度下降原理来获得参数结果来实现参数。当我们尝试从隐藏层获取参数时,问题出现了。即使我们可以计算模型的输出,我们也无法知道预期值是什么,因此我们无法有效地训练多层神经网络。这个问题长期困扰着研究人员,它导致20世纪60年代以后神经网络的发展不足。

后来,在70年代,科学家独立地引入了反向传播算法的想法。这种算法背后的基本思想实际上非常简单,即使当时没有办法根据隐藏层的预期值进行更新,也可以通过从隐藏层传递的错误来更新隐藏层和其他层之间的权重。在计算梯度时,由于隐藏层中的所有节点都与输出层上的多个节点相关,因此前一层上的所有层都被累积并一起处理。

反向传播的另一个优点是我们可以同时对同一层上的节点执行梯度和加权,因为它们是不相关的。我们可以用伪代码表示反向传播的整个过程如下:

33f8687e37dba422fb74dc482f8d2098a26e6b11

接下来,我们来谈谈反向传播神经网络的一些其他特性。反向传播实际上是一个链规则,它可以很容易地推广任何具有映射的计算。根据梯度函数,我们可以使用反向传播神经网络来生成局部优化解决方案,但不是全局优化解决方案。然而,从一般的角度来看,反向传播算法产生的结果通常是令人满意的优化解决方案。下图是反向传播算法的直观表示:

9d54f79d04cd21b1fe01e0830e6ef3d2ff1e38ce

在大多数情况下,反向传播神经网络将在范围内找到最小的可能值;但是,如果我们离开那个范围,我们可能会发现更好的价值。在实际应用中,有许多简单有效的方法可以解决这类问题,例如,我们可以尝试不同的随机初始化方法。而且,在实践中,在现代深度学习领域中经常使用的模型中,初始化方法对最终结果具有显着影响。迫使模型离开优化范围的另一种方法是在训练期间引入随机噪声或使用遗传算法来防止训练模型停止在非理想的优化位置。

反向传播神经网络是一种优秀的机器学习模型,在谈到机器学习时,我们不禁注意到机器学习过程中经常遇到的基本问题,即过度拟合的问题。过度拟合的一个常见表现是,在训练期间,即使模型的损失不断下降,测试组中的损失和错误也会增加。有两种典型方法可以避免过度拟合:

  • 提前停止:我们可以提前分离验证组,并在训练期间针对此已经验证的组进行运行。然后我们可以观察到模型的损失,如果损失已经在验证组中停止但仍然在训练组中下降,那么我们可以提前停止训练以防止过度拟合。
  • 正则化:我们可以在神经网络中为权重添加规则。目前流行的dropout方法涉及随机丢弃一些节点或侧面。我们可以将这种方法视为正则化的一种形式,在防止过度拟合方面非常有效。

尽管神经网络在20世纪80年代非常流行,但不幸的是,它们在20世纪90年代进入了发展的另一个低谷。许多因素促成了这一低估区。例如,支持向量机,它是20世纪90年代的流行模型,在各种主要会议上登台亮相,并在各种领域得到应用。支持向量机具有出色的统计学习理论,易于直观理解。它们也非常有效并产生近乎理想的结果。

在这种转变中,支持向量机背后的统计学习理论的兴起对神经网络的发展施加了不小的压力。另一方面,从神经网络本身的角度来看,即使你可以使用反向传播网络在理论上训练任何神经网络,在实际应用中,我们注意到随着神经网络中层数的增加,难度训练网络成倍增长。例如,在20世纪90年代初,人们注意到在具有相对大量层的神经网络中,通常会看到梯度损失或梯度爆炸。

例如,梯度损失的一个简单例子是神经网络中的每个层都是S形结构层,因此在反向传播期间它的损失被链接成S形梯度。当一系列元素串在一起时,如果其中一个渐变非常小,则渐变将变得越来越小。实际上,在传播一层或两层之后,该梯度消失。梯度损失导致深层中的参数停止变化,使得很难获得有意义的结果。这是多层神经网络很难训练的原因之一。

学术界已经深入研究了这个问题,并得出结论,处理它的最简单方法是改变激活算法。在开始时,我们尝试使用整流激活算法,因为S形算法是一种索引方法,很容易引起梯度损失问题。另一方面,整流取代了sigmoid函数并替换了max(0,x)。从下图中我们可以看出,估计值大于0的梯度为1,这可以防止梯度消失的问题。但是,当估计值低于0时,我们可以看到梯度再次为0,因此ReLU算法必须是不完美的。后来,出现了许多改进的算法,包括Leaky ReLU和Parametric Rectifier(PReLU)。当估计x小于0时,我们可以将其转换为类似0的系数。

5e6616c1388312cd9f117b37b9280daf08450c08

随着神经网络的发展,我们后来提出了许多方法来解决在结构层面上传递梯度的问题。例如,Metamodel、LSTM模型和现代图像分析使用多种跨层链接方法来更容易地传播渐变。

请继续关注本文的第二部分。 

 数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

以上为译文。

本文由阿里云云栖社区组织翻译。

文章原标题《all-you-need-to-know-about-neural-networks-part-1》,

作者:Leona Zhang 译者:虎说八道,审校:。

文章为简译,更为详细的内容,请查看原文

相关文章
|
6月前
|
机器学习/深度学习 网络架构
神经网络4
与单层神经网络不同。理论证明,两层神经网络可以无限逼近任意连续函数。 这是什么意思呢?也就是说,面对复杂的非线性分类任务,两层(带一个隐藏层)神经网络可以分类的很好。 下面就是一个例子(此两图来自colah的博客),红色的线与蓝色的线代表数据。而红色区域和蓝色区域代表由神经网络划开的区域,两者的分界线就是决策分界。 可以看到,这个两层神经网络的决策分界是非常平滑的曲线,而且分类的很好。有趣的是,前面已经学到过,单层网络只能做线性分类任务。而两层神经网络中的后一层也是线性分类层,应该只能做线性分类任务。为什么两个线性分类任务结合就可以做非线性分类任务? 我们可以把输出层的决策分界单独拿出来看一下
44 0
|
机器学习/深度学习 数据可视化
|
1月前
|
机器学习/深度学习 人工智能 算法
训练神经网络的7个技巧
训练神经网络的7个技巧
32 1
|
6月前
|
机器学习/深度学习 存储 人工智能
神经网络
3.效果 与神经元模型不同,感知器中的权值是通过训练得到的。因此,根据以前的知识我们知道,感知器类似一个逻辑回归模型,可以做线性分类任务。 我们可以用决策分界来形象的表达分类的效果。决策分界就是在二维的数据平面中划出一条直线,当数据的维度是3维的时候,就是划出一个平面,当数据的维度是n维时,就是划出一个n-1维的超平面。 下图显示了在二维平面中划出决策分界的效果,也就是感知器的分类效果。 4.影响 感知器只能做简单的线性分类任务。但是当时的人们热情太过于高涨,并没有人清醒的认识到这点。于是,当人工智能领域的巨擘Minsky指出这点时,事态就发生了变化。 Minsky在1969年出版了一本叫
55 0
|
6月前
|
机器学习/深度学习 算法 自动驾驶
神经网络5
4.训练 下面简单介绍一下两层神经网络的训练。 在Rosenblat提出的感知器模型中,模型中的参数可以被训练,但是使用的方法较为简单,并没有使用目前机器学习中通用的方法,这导致其扩展性与适用性非常有限。从两层神经网络开始,神经网络的研究人员开始使用机器学习相关的技术进行神经网络的训练。例如用大量的数据(1000-10000左右),使用算法进行优化等等,从而使得模型训练可以获得性能与数据利用上的双重优势。 机器学习模型训练的目的,就是使得参数尽可能的与真实的模型逼近。具体做法是这样的。首先给所有参数赋上随机值。我们使用这些随机生成的参数值,来预测训练数据中的样本。样本的预测目标为yp,真实目标
43 0
|
8月前
|
机器学习/深度学习 算法 PyTorch
神经网络知识蒸馏
翻译:《Distilling the knowledge in a neural network》
|
8月前
|
机器学习/深度学习 自然语言处理 算法
简单了解神经网络
神经网络是一种强大的机器学习算法,具有很广泛的应用,可以用于图像识别、语音识别、自然语言处理、推荐系统等多个领域。
66 0
|
机器学习/深度学习 存储 算法
一文让你掌握22个神经网络训练技巧
一文让你掌握22个神经网络训练技巧
一文让你掌握22个神经网络训练技巧
|
11月前
|
机器学习/深度学习 算法
连载|神经网络(上)
连载|神经网络(上)
|
11月前
|
机器学习/深度学习 算法
连载|神经网络(下)
连载|神经网络(下)

相关实验场景

更多