Jaime Zornoza作者马德里技术大学单位王威力校对陈之炎翻译

NLP的深度学习:ANN,RNN和LSTM详解!(附资源)

本文带你以前所未有的方式了解深度学习神经网络,并利用NLP构建Chatbot!

是否曾经幻想过能和自己的私人助理对话或是漫无边际地探讨任何问题?多亏机器学习深度神经网络,你曾经的幻想很快会变成现实。让我们来看一下Apple的Siri或亚马逊的Alexa所展示的这一神奇功能吧。

不要太激动,我们在下面一系列帖子中,创建的不是一个无所不能的人工智能,而是创建一个简单的聊天机器人,预先些输入一些信息,它能够对此类信息相关的问题做出是或否的回答。

它远不及Siri或Alexa,但它却能很好地说明:即使使用非常简单的深度神经网络架构,也可以获得不错的结果。在这篇文章中,我们将学习人工神经网络深度学习,递归神经网络长短期记忆网络在下一篇文章中,我们将在真实项目中利用它来回答问题

在开始讨论神经网络之前,先仔细看看下面的图像。其中有两张图片:其中一张图片是一辆校车行驶通过马路,另一张图片是是普通的起居室,这两张图片都有人工注释人员对其进行了描述。

图中为两个不同的图像,附有人工注释人员对其进行的描述

好了,让我们继续吧!

开始 - 人工神经网络

 
为了构建一个用于创建聊天机器人神经网络模型,会用到一个非常流行的神经网络Python库:Keras。然而,在进一步研究之前,首先应了解人工神经网络(ANN)是什么。

人工神经网络是一种机器学习模型,它试图模仿人类大脑的功能,它由连接在一起的大量神经元构建而成- 因此命名为“人工神经网络”。

感知

最简单的ANN模型由单个神经元组成, Star-Trek将之命名为感知器(Perceptron)。它由弗朗克·罗森布拉特(Frank Rossenblatt)于1957年发明,它包括一个简单的神经元,对输入的加权和进行函数变换(在生物神经元中是枝状突起),并输出其结果(输出将等同于生物神经元的轴突)。我们不在这里深入研究用到的函数变换的细节,因为这篇文章的目的不是成为专家,而只是需要了解神经网络的工作原理。

单个神经元的图像,左边为输入,乘以每个输入的权重神经元将函数变换应用于输入的加权和并输出结果这些单独的神经元可以堆叠起来,形成包含不同个数神经元的层,这些层可以顺序地相邻放置,从而使得网络更深。

当以这种方式构建网络时,不属于输入层或输出层的神经元叫做隐藏层,正如它们的名称所描述:隐藏层是一个黑盒模型,这也正是ANN的主要特征之一。通常我们对其中的数学原理以及黑盒中发生的事情有一些认知,但是如果仅通过隐藏层的输出试图理解它,我们大脑可能不够用。

尽管如此,ANN却能输出很好的结果,因此不会有人抱怨这些结果缺乏可解释性。

大的神经网络的图像,由许多单独的神经元和层组成:一个输入层,两个隐藏层和一个输出层

神经网络结构以及如何训练一个神经网络,已为人所知有二十多年了。那么,又是什么原因导致了当今对人工神经网络深度学习的火爆和炒作?下面我们会给出问题的答案,但在此之前,我们先了解一下深度学习的真正含义。


什么是深度学习

从它的名称可以猜测到,深度学习使用多个层逐步从提供给神经网络的数据中提取出更高级别的特征。这个道理很简单:使用多个隐藏层来增强神经模型的性能。

明白了这一点之后,上面问题的答案便简单了:规模。在过去的二十年中,各种类型的可用数据量以及我们的数据存储和处理机器(即,计算机)的功能都呈指数级增长。

计算力的增加,以及用于训练模型的可用数据量的大量增加,使我们能够创建更大、更深的神经网络,这些深度神经网络的性能优于较小的神经网络

Andrew Ng是世界领先的深度学习专家之一,他在本视频中明确了这一点。在这个视频(https://www.youtube.com/watch?v=O0VN0pGgBZM&t=576s)中,他展示了与下面图像类似的一副图像,并用它解释了利用更多数据来训练模型的优势,以及大型神经网络与其他机器学习模型相比较的优势。

图像显示了当训练数据集增大时,不同算法的性能演变传统的机器学习算法(线性或逻辑回归,SMV,随机森林等)的性能会随着训练数据集的增大而增加,但是当数据集增大到某一点之后,算法的性能会停止上升。数据集大小超过这一值之后,即便为模型提供了更多的数据,传统模型却不知道如何去处理这些附加的数据,从而性能得不到进一步的提高。

神经网络则不然,这种情况永远不会发生。神经网络的性能总是随着数据量的增加而增加(当然,前提是这些数据质量良好),随着网络大小的增加,训练的速度也会加快。因此,如果想要获得最佳性能,则需要在X轴右侧(高数据量)的绿线(大神经网络)的某个位置。

此外,虽然还需要有一些算法上的改进,但是深度学习和人工神经网络兴起的主要因素便是规模:计算规模和数据规模

杰夫·迪恩(Jeff Dean)(谷歌深度学习的煽动者之一)是该领域的另一个重要人物,关于深度学习,杰夫如是说:
当听到深度学习这个词时,便会想到一个大的深度神经网络。深度通常指的是层数比较多,这是出版物中的一个流行术语,此刻,我便视它为深度神经网络
在谈论深度学习时,杰夫强调了神经网络的可扩展性,即随着数据量的增大,模型规模的增大,模型输出的结果会越来越好,同时,训练的计算量也随之增大,这和先前看到的结果一致。

好了,理解了原理之后,那么神经网络如何进行深度学习的呢?

你可能已经猜到了:神经网络从数据中学习。

还记得将多个输入乘以权重之后输入到感知器中吗?连接两个不同神经元的“边”(连接)也需要赋权重。这意味着在较大的神经网络中,权重也存在于每个黑箱边之中,取一个神经元的输出,与其相乘,然后将其作为输入提供给这个边缘所连接的另一个神经元

具有两个隐藏层的神经网络以及每个层之间的权重

当训练神经网络(通过ML表达式来训练神经网络使其进行学习)时,首先为它提供一组已知数据(在ML中称为标记数据),让它预测这些数据的特征(比如图像标记“狗”或“猫”)然后将预测结果与实际结果进行比对。


当这个过程在进行中出现错误时,它会调整神经元之间连接的权重,以减少所犯错误的数量。正因如此,如前所示,在大多数情况下,如果我们为网络提供更多的数据,将会提高它的性能。

从序列数据中学习 –递归神经网络

 
了解了人工神经网络深度学习之后,我们懂得了神经网络是如何进行学习的,现在可以开始研究用于构建聊天机器人神经网络:递归神经网络或RNN  。

递归神经网络是一种特殊的神经网络,旨在有效地处理序列数据,序列数据包括时间序列(在一定时间段内的参数值列表)、文本文档(可以视为单词序列)或音频(可视为声音频率序列)。

RNN获取每个神经元的输出,并将其作为输入反馈给它,它不仅在每个时间步长中接收新的信息,并且还向这些新信息中添加先前输出的加权值,从而,这些神经元具备了先前输入的一种“记忆”,并以某种方式将量化输出反馈给神经元

递归神经元,输出数据乘以一个权重并反馈到输入中


来自先前时间步长的输入的函数单元称为记忆单元

RNN存在的问题是:随着时间的流逝,RNN获得越来越多的新数据,他们开始“遗忘”有关数据,通过激活函数的转化及与权重相乘,稀释新的数据。这意味着RNN有一个很好的短期记忆,但在尝试记住前一段时间发生过的事情时,仍然会存在一些小问题(过去若干时间步长内的数据)。

为此,需要某种长期记忆,LSTM正是提供了长期记忆的能力。 

增强记忆力 - 长期短期记忆网络

 
 长短期记忆网络LSTM是RNN的一种变体,可解决前者的长期记忆问题。作为本文的结尾,简要解释它是如何工作的。

与普通的递归神经网络相比,它们具有更为复杂的记忆单元结构,从而使得它们能够更好地调节如何从不同的输入源学习或遗忘。

LSTM记忆单元示例。注意蓝色圆圈和方框,可以看出它的结构比普通的RNN单元更复杂,我们将不在本文中介绍它

LSTM神经元通过三个不同的门的状态组合来实现这一点:输入门,遗忘门和输出门。在每个时间步长中,记忆单元可以决定如何处理状态向量:从中读取,写入或删除它,这要归功于明确的选通机制。利用输入门,记忆单元可以决定是否更新单元状态;利用遗忘门,记忆单元可以删除其记忆;通过输出门,单元细胞可以决定输出信息是否可用。


LSTM还可以减轻梯度消失的问题,但这不在此做详细介绍。

就是这样!现在我们对这些不同种类的神经网络已经有了一个初浅的认识,下面可以开始用它来构建第一个深度学习项目!

结论

神经网络会非常神奇。在下一篇文章中,我们将看到,即便是一个非常简单的结构,只有几个层便可以创建一个非常强大的聊天机器人。哦,顺便问一下,记得这张照片吗?

神经网络创建的带有简短文本描述的两幅不同图像为了证明深度神经网络是多么酷,不得不承认,我对如何产生这些图像的描述撒了谎。

记得在本文的开头,曾说明这些描述是人工注释的,然而实际上,每幅图像上所的简短文本实际上都是人工神经网络生成的
 
太狂啦?

如果想要学习如何使用深度学习来创建一个神奇的聊天机器人,请在媒体上追随我,并继续关注我的下一篇文章!然后,尽情享受人工智能

其它资源

本帖中描述的概念解释非常初浅,如果想深入学习,请参考以下附加的资源。

  • 神经网络如何端到端地工作

    https://end-to-end-machine-learning.teachable.com/courses/how-deep-neural-networks-work/lectures/9533963

  • YouTube视频系列,讲解如何训练神经网络的主要概念

    https://www.youtube.com/watch?v=sZAlS3_dnk0

  • 深度学习和人工神经网络

    https://machinelearningmastery.com/what-is-deep-learning/

好啦,希望你喜欢这个帖子。可以在LinkedIn上与我联系,或在@jaimezorno的Twitter上跟我联系。此外,还可以在此处查看我的关于数据科学机器学习的其它帖子。学习快乐!
 
作者简介:

Jaime Zornoza是一名工业工程师,拥有电子专业的学士学位和计算机科学的硕士学位。原创。经许可转载。

原文标题:

Deep Learning for NLP: ANNs, RNNs and LSTMs explained!

原文链接:

https://www.kdnuggets.com/2019/08/deep-learning-nlp-explained.html

THU数据派
THU数据派

THU数据派"基于清华,放眼世界",以扎实的理工功底闯荡“数据江湖”。发布全球大数据资讯,定期组织线下活动,分享前沿产业动态。了解清华大数据,敬请关注姐妹号“数据派THU”。

理论深度学习NLP
7
相关数据
亚马逊机构

亚马逊(英语:Amazon.com Inc.,NASDAQ:AMZN)是一家总部位于美国西雅图的跨国电子商务企业,业务起始于线上书店,不久之后商品走向多元化。目前是全球最大的互联网线上零售商之一,也是美国《财富》杂志2016年评选的全球最大500家公司的排行榜中的第44名。

https://www.amazon.com/
相关技术
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

逻辑回归技术

逻辑回归(英语:Logistic regression 或logit regression),即逻辑模型(英语:Logit model,也译作“评定模型”、“分类评定模型”)是离散选择法模型之一,属于多重变量分析范畴,是社会学、生物统计学、临床、数量心理学、计量经济学、市场营销等统计实证分析的常用方法。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

感知技术

知觉或感知是外界刺激作用于感官时,脑对外界的整体的看法和理解,为我们对外界的感官信息进行组织和解释。在认知科学中,也可看作一组程序,包括获取信息、理解信息、筛选信息、组织信息。与感觉不同,知觉反映的是由对象的各样属性及关系构成的整体。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

数据科学技术

数据科学,又称资料科学,是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。它结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

随机森林技术

在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。 Leo Breiman和Adele Cutler发展出推论出随机森林的算法。而"Random Forests"是他们的商标。这个术语是1995年由贝尔实验室的Tin Kam Ho所提出的随机决策森林(random decision forests)而来的。这个方法则是结合Breimans的"Bootstrap aggregating"想法和Ho的"random subspace method" 以建造决策树的集合。

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

聊天机器人技术

聊天机器人是经由对话或文字进行交谈的计算机程序。能够模拟人类对话,通过图灵测试。 聊天机器人可用于实用的目的,如客户服务或资讯获取。有些聊天机器人会搭载自然语言处理系统,但大多简单的系统只会撷取输入的关键字,再从数据库中找寻最合适的应答句。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

长短期记忆网络技术

长短期记忆(Long Short-Term Memory) 是具有长期记忆能力的一种时间递归神经网络(Recurrent Neural Network)。 其网络结构含有一个或多个具有可遗忘和记忆功能的单元组成。它在1997年被提出用于解决传统RNN(Recurrent Neural Network) 的随时间反向传播中权重消失的问题(vanishing gradient problem over backpropagation-through-time),重要组成部分包括Forget Gate, Input Gate, 和 Output Gate, 分别负责决定当前输入是否被采纳,是否被长期记忆以及决定在记忆中的输入是否在当前被输出。Gated Recurrent Unit 是 LSTM 众多版本中典型的一个。因为它具有记忆性的功能,LSTM经常被用在具有时间序列特性的数据和场景中。

遗忘门技术

LSTM或GRU中特有的机制

堆叠技术

堆叠泛化是一种用于最小化一个或多个泛化器的泛化误差率的方法。它通过推导泛化器相对于所提供的学习集的偏差来发挥其作用。这个推导的过程包括:在第二层中将第一层的原始泛化器对部分学习集的猜测进行泛化,以及尝试对学习集的剩余部分进行猜测,并且输出正确的结果。当与多个泛化器一起使用时,堆叠泛化可以被看作是一个交叉验证的复杂版本,利用比交叉验证更为复杂的策略来组合各个泛化器。当与单个泛化器一起使用时,堆叠泛化是一种用于估计(然后纠正)泛化器的错误的方法,该泛化器已经在特定学习集上进行了训练并被询问了特定问题。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

感知器技术

感知器是Frank Rosenblatt在1957年就职于Cornell航空实验室时所发明的一种人工神经网络。它可以被视为一种最简单形式的前馈神经网络,是一种二元线性分类器。 Frank Rosenblatt给出了相应的感知机学习算法,常用的有感知机学习、最小二乘法和梯度下降法。

推荐文章
暂无评论
暂无评论~