你需要了解的六种神经网络

译文
人工智能
神经网络如今在人工智能领域中已经变得非常流行,但是很多人对它们仍然缺乏了解。首先,很多人识别不清各种类型的神经网络及其解决的问题,更不用说如何对它们进行区分了。其次,在某种程度上甚至更糟的是,人们在谈论神经网络时通常不加区分地使用“深度学习”这一术语。

【51CTO.com快译】神经网络如今在人工智能领域中已经变得非常流行,但是很多人对它们仍然缺乏了解。首先,很多人识别不清各种类型的神经网络及其解决的问题,更不用说如何对它们进行区分了。其次,在某种程度上甚至更糟的是,人们在谈论神经网络时通常不加区分地使用“深度学习”这一术语。

以下将讨论目前一些行业主流的神经网络架构,而人工智能行业人士应该对这些架构都非常熟悉:

1.前馈神经网络

这是一种最基本的神经网络类型,得益于技术的进步和发展,开发人员可以添加更多的隐藏层,而不必太担心其计算时间过长。而在深度学习技术的“教父”Geoff Hinton在1990年推出了反向传播算法之后,前馈神经网络开始得到广泛应用。

这种类型的神经网络基本上由一个输入层、多个隐藏层和一个输出层组成。其运行没有循环,信息只能向前流动。前馈神经网络通常适用于数值数据的监督学习,但也存在一些缺点:

  • 不能与顺序数据一起使用;
  • 不能很好地处理图像数据,因为其模型的性能严重依赖于特征,而人工查找图像或文本数据的特征本身是一项相当困难的工作。

于是行业厂商又相继开发了卷积神经网络和递归神经网络。

2.卷积神经网络(CNN)

在卷积神经网络(CNN)普及之前,人们采用很多算法对图像分类。人们过去常常根据图像创建特征,然后将这些特征输入到诸如支持向量机(SVM)之类的分类算法中。一些算法也将图像的像素水平值作为特征向量。例如,用户可以训练具有784个特征的支持向量机(SVM),其中每个特征都是28×28的图像像素值。

那么,为什么要使用卷积神经网络(CNN),为什么其效果要好得多?因为可以将卷积神经网络(CNN)视为图像的自动特征提取器。如果用户使用带有像素矢量的算法,则会丢失很多像素之间的空间交互关系,而卷积神经网络(CNN)会有效地使用相邻像素信息,首先通过卷积有效地对图像进行下采样,然后在最后使用预测层。

人工智能科学家Yann le cun在1998年首次提出了用于数字分类的这一概念,他使用一个卷积层来预测数字。后来在2012年被Alexnet推广,它使用多个卷积层在Imagenet上实现了更先进的预测。因此,从而使其成为图像分类的首选算法。

随着时间的推移,神经网络这个特定领域取得了各种进展,研究人员为卷积神经网络(CNN)开发了各种架构,例如VGG、Resnet、Inception、Xception等,这些架构不断地推动了图像分类的发展。

[[397340]]

相比之下,卷积神经网络(CNN)也用于对象检测,这可能是一个问题,因为除了对图像进行分类之外,人们还希望检测图像中各个对象周围的边界框。在过去,研究人员采用许多架构(例如YOLO、RetinaNet、Faster RCNN等)以解决目标检测问题,所有这些架构都使用卷积神经网络(CNN)作为其架构的一部分。

3.递归神经网络(LSTM/GRU /注意力)

卷积神经网络(CNN)主要针对图像的含义进行分类,递归神经网络(RNN)主要针对文本的含义分类。递归神经网络(RNN)可以帮助人们学习文本的顺序结构,其中每个单词都取决于前一个单词或前一个句子中的一个单词。

为了简单地解释递归神经网络(RNN),可以将其中看作一个黑盒,将一个隐藏状态(一个向量)和一个单词向量作为输入,并输出一个输出向量和下一个隐藏状态。这个黑盒具有一些权重,需要使用损耗的反向传播进行调整。同样,将相同的单元格应用于所有单词,以便在句子中的单词之间共享权重。这种现象称为权重共享。

以下是同一个递归神经网络(RNN)单元的扩展版本,其中每个递归神经网络(RNN)单元在每个单词“令牌”上运行(令牌是服务端生成的一串字符串,作为客户端进行请求的一个标识),并将隐藏状态传递给下一个单元。对于长度为4的序列(例如“the quick brown fox”), 递归神经网络(RNN)单元最终给出4个输出向量,可以将它们连接起来,然后用作密集前馈神经架构的一部分,如下图所示,以解决最终任务语言建模或分类任务:

长短期记忆网络(LSTM)和门控制循环单元(GRU)是递归神经网络(RNN)的子类,它们通过引入不同的门来增加时间记忆信息(也称为消失梯度问题),这些门通过添加或删除信息来调节神经元状态。

从更高的层面来看,可以将LSTM/GRU理解为递归神经网络(RNN)单元的一种用法,以了解长期依赖性。RNN/LSTM/GRU主要用于各种语言建模任务,这些任务的目标是在给定输入单词流的情况下预测下一个单词,或用于具有顺序模式的任务。

接下来要提到的是基于关注的模型,但是在这里只讨论直觉。在过去,传统的文本特征提取方法如TFIDF/CountVectorizer等都是通过提取关键字来实现的。有些词语比其他词语更有助于确定文本的类别。然而,在这种方法中,有点失去了文本的顺序结构。使用LSTM和深度学习方法,可以处理序列结构,但是失去了赋予更重要的词语更高权重的能力。

那么能两全其美吗?答案是肯定的。事实上,关注就是用户所需要的。正好专家所说:“并不是所有的词语都能平等地表达句子的意思。因此,我们引入一种关注机制来提取对句子含义更重要的词语,并汇总这些信息性单词表达的含义形成句子向量。”

4. Transformers

Transformers已经成为实施任何一个自然语言处理(NLP)任务的实际标准,最近推出的GPT-3 Transformers是迄今为止规模最大的一个神经网络。

在过去,LSTM和GRU架构以及关注机制曾经是解决语言建模问题和翻译系统的最先进方法。这些架构的主要问题是它们本质上是递归的,并且运行时间随着序列长度的增加而增加。也就是说,这些架构采用一个句子并以顺序的方式处理每个单词,因此当句子长度增加时,其整体运行时间也会增加。

Transformer是基于关注模型的架构。Transformer完全依赖于一种关注机制来绘制输入和输出之间的全局依赖关系。这使得它可以更快、更准确地成为解决自然语言处理(NLP)领域中各种问题的首选架构。

5.生成对抗网络(GAN)

[[397342]]

近年来,在数据科学领域中看到了一些人工智能系统伪造的人脸图像,无论是在论文、博客还是视频中。现在已经到了一个难以区分实际的人脸和由人工智能生成的人脸的阶段。而所有这些图像都是通过生成对抗网络(GAN)实现的。生成对抗网络(GAN)很有可能改变人们制作视频游戏和特效的方式。使用这种方法,可以按需创建逼真的纹理或角色,从而带来了无限的可能性。

生成对抗网络(GAN)通常使用两个对抗神经网络来训练计算机,以充分了解数据集的性质,并生成足以乱真的伪造图像。其中一个神经网络生成伪造图像(生成器),另一个尝试对哪些伪造图像进行分类(鉴别器)。通过相互对抗和竞争,这两个神经网络的功能和性能会随着时间的推移而不断改进。

人们可以将“生成器”想象成小偷,将“鉴别器”想象成警察。小偷偷窃的次数越多,其手段越高明。与此同时在这一过程中,警察也越来越善于抓小偷。

这两个神经网络中的损失主要取决于另一个网络的性能:

  • 鉴别器的网络损失是生成器网络质量的函数:如果鉴别器被生成器的虚假图像所欺骗,则损失率很高。
  • 生成器的网络损失是鉴别器网络质量的函数:如果生成器无法欺骗鉴别器,则损失率很高。

在训练阶段,将依次训练鉴别器神经网络和发生器神经网络,以期提高这两者的性能。其最终目标是获得权重,以帮助生成器创建逼真的图像。使用者可以将使用生成器神经网络从随机噪声生成高质量的伪造图像。

6.自编码器

自编码器是一种深度学习函数,可以近似表示从X到X的映射,即输入=输出。它们首先将输入要素压缩为低维表示形式,然后从该表示形式重构输出。

在很多情况下,这种表示向量可以作为模型特征,因此可以用于降维。

自编码器也用于异常检测,在这种情况下,可以尝试使用自编码器来重建示例,如果重建损失率过高,则可以预测该示例是异常的。

结论

神经网络本质上是有史以来最伟大的模型之一,它们可以很好地概括人们所能想到的大多数建模用例。如今,这些不同种类和版本的神经网络正被用于解决医疗、金融和汽车行业等领域面临的各种重要问题,同时也被苹果、谷歌和Facebook这样的科技公司用来提供推荐和帮助搜索查询。例如,谷歌公司使用BERT(一种基于Transformers的模型)为其搜索查询提供帮助。

原文标题:Types of Neural Networks You Need To Know About,作者:Kevin Vu

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

责任编辑:华轩 来源: 51CTO
相关推荐

2023-05-18 13:42:51

2021-02-24 11:13:28

网络网络通信互联网

2021-01-26 01:03:36

云原生工具云原生

2012-06-26 10:13:55

2011-04-01 11:16:06

hessian

2022-10-26 07:21:15

网络视频开发

2012-06-27 09:11:47

2021-11-16 19:12:16

网络安全概念信息安全

2017-04-18 12:21:01

神经网络深度学习设计模式

2015-09-17 09:36:46

Chrome改变

2020-04-23 11:03:09

前端语言开发

2018-07-13 06:45:55

2018-08-23 10:17:09

2020-10-13 06:56:19

JavaScript异常类型开发

2022-01-04 19:28:05

VMware云端虚拟化

2013-10-11 15:26:32

linux网络监控

2022-05-08 22:09:28

网络拓扑网络技术网络

2018-05-16 09:41:13

神经网络NN函数

2022-02-22 23:39:15

JavaScript编程语言Web

2019-09-18 17:35:52

点赞
收藏

51CTO技术栈公众号