什么是自然语言和自然语言理解?
对于语言的理解是一个非常重要的任务,到目前为止人类知识80%都是采用自然语言文字进行记载的。对于自然语言的处理,称为自然语言处理(简称:NLP),是指用计算机对自然语言的形、音、义等信息进行处理,即对字、词、句、篇章的输入、输出、识别、分析、理解、生成等的操作和加工。自然语言处理在人工智能的地位有一个非常形象的比喻,它是人工智能皇冠上的明珠。可见自然语言处理的问题解决了很多人工智能问题也就解决了。总的来说相比较人工智能其它领域(比如计算机视觉、语音识别),自然语言的理解难度更大一些,所以现在已经有很多的独角兽这种级别的语音识别公司,比如科大讯飞、Face++等等,但是在自然语言处理方面还需要更多的努力。达观数据正是在这方面进行努力探索的企业。
自然语言处理一般分成两块,一种叫做自然语言理解,一种叫做自然语言生成。自然语言理解是指计算机能够理解自然语言文本的意义,自然语言生成则是指能以自然语言文本来表达给定的意图。比如高考的时候要做阅读理解,这就叫做自然语言的理解。考生写作文,叫做自然语言的生成。但是高考的时候是人来做,现在由计算机来做。对计算机输入一段自然语言文本,我们希望它能够:
问答——能正确回答输入文本中的问题
文摘生成——有能力产生输入文本的摘要
释义——用不同的词语和语句复述输入
翻译——把一种语言(源语言)翻译为另一种语言(目标语言)
这些都是自然语言理解的功能。如果计算机可以完成其中一个任务,我们可以认为它通过了图灵测试,就相当于人工智能,其它类似。
自然语言的理解和分析是一个层次化的过程,许多语言学家把这一过程分为五个层次,即语音分析、词法分析、句法分析、语义分析和语用分析。
语音分析是要根据音位规则,从语音流中区分出一个个独立的音素(最小可独立的声音单元),再根据音位形态规则找出音节及其对应的词素或词。
词法分析是找出词汇的各个词素,从中获得语言学的信息。
例如:“我们研究所有东西”这句话
• 我们—研究所—有—东西(交叉歧义)
• 我们—研究—所有—东西
把手放在桌上
• 把—手—放在—桌上 (组合歧义)
• 把手—放在—桌上
中文分词是中文所特有的词法分析。
中文由于继承自古代汉语的传统,词语之间没有分隔。这是因为古代汉语中除了连绵词和人名地名等,词通常就是单个汉字,所以当时没有分词书写的必要。现代汉语的基本表达单元为“词”,以双字或多字词居多,一个字不再等同于一个词。
句法分析是对句子和短语的结构进行分析,目的是要找出词、短语等的相互关系以及各自在句中的作用。
例如:
• 反对│的│是│少数人 (反对的是少数人,到底是少数人提出反对还是少数人被反对)
• 咬死了|猎人|的|狗 (咬死了猎人的狗还是一只咬死了猎人的狗)
• Put the frog on the napkin(把青蛙放在餐巾上)
• Put the frog on the napkin in the box(把餐巾上的青蛙放在盒子里)
图1
语义分析是找出词义、结构意义及其结合意义,从而确定语言所表达的真正含义或概念。比如说同样三个字,“你打我”和“我打你”,意思是完全不同的。这叫做词义分析。词义分析是非常困难的一个任务,这几年有非常大的进展。
语用分析是研究语言所存在的外界环境对语言使用者所产生的影响。 描述语言的环境知识、语言与语言使用者在某个给定语言环境中的关系。
比如说吃一个汉堡包,这个话的意思是取决于谁对谁说,如果是一个小孩子和妈妈说要吃一个汉堡包,这叫做请求。如果一个孩子是很霸道的,这个妈妈完全被孩子所左右,小孩子对妈妈说要吃一个汉堡包,可能就是一个命令。如果是顾客到店里可能是一个交易行为的发起。所以语义上似乎明确的一句话,在不同的上下文中也有不同的含义。
什么叫做表示学习?
有人问语言还需要表示吗?答案是肯定的。
认知科学领域认为表示学习是语言在人脑中的表现形式,关系到人类如何理解和产生语言。
人工智能领域认为表示学习是学习语言的形式化或数学描述,以便在计算机中表示语言,并能让计算机程序自动处理。
早期的语言表示方法: 符号化的离散表示。
• 词表示为One-Hot向量(一维为1、其余维为0的向量)
• 元模型等方法进行转换
离散表示的缺点: 词与词之间没有距离的概念,比如“电脑”和“计算机”被看成是两个不同的词。除此之外还有从心理的角度,有哲学的角度来研究客观世界和万物是怎么理解的,我们一般是从人工智能的角度来了解语言的表示。
人工智能新时代——深度学习
概念介绍
前面介绍了自然语言理解和表示学习,实际上表示学习在前深度学习时代并不太多被提及。表示学习和深度学习的兴起是密切相关。
深度学习源于人工神经网络的研究,它是神经网络重新包装后新的说法。深度指的是神经网络的多层。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
图2
深度学习的概念由Hinton等人于2006年提出。Hinton用深度的网络进行图像理解,取得了很好的结果。之后他们在图像识别方面取得了很好的成绩,之后从此大家都在做深度学习。
图3
图4
上述两个图,一个图是做语音识别,语音识别用于深度学习之后可以大幅度的进行性能的提升。另外一个是计算机视觉,计算机视觉用了深度学习之后,可以先识别图像的边缘,后识别图像的组件,最后可以组装成物体,也会取得很好的结果。
自然语言处理中的深度学习
在自然语言的表示学习中提及深度学习这是因为深度学习首要的用处就是进行自然语言的表示。差不多在2013年左右时间自然语言处理才广泛地引入了深度学习的概念。深度学习用于自然语言表示,一方面我们可以得到字、词、句子等多粒度的分布式语言表示。
句子:卷积网络、循环网络、递归网络、PV
篇章:层次结构(先句子,后篇章)
符号:网络,知识图谱等
(采用各种各样的神经网络模型,比如说循环等等,可以得到各种语言单元的表示。)
另外一方面用于情感分析和自动问答等服务。在这类语言表示中用到一类序列到序列模型(循环网络/LSTM),它可以配合注意力模型和外部的记忆单元合作,可以解决长距离的依赖,取得比较好的效果。甚至可以涵盖机器翻译、自动问答、序列标注、文本摘要等大部分场景。图5是深度学习在自然语言理解中应用描述。
图5
深度学习带来的新变化
深度学习给自然语言处理带来了什么变化?
1.性能从追赶到超越。几乎所有的自然语言处理任务中深度学习的性能都可以达到或者是超越原有办法。
2.语义变得更为重要。有了分布式的离散表示,深度学习让语义变得可计算,我们可以得到字词句子篇章的向量,就使得语义真正可以用起来。
3.不断出现的新“玩法”、新应用场景。比如说看图说话,甚至是给一个意图,让计算机画画,做诗、作词、写歌、写程序。将来的程序员可能也是有一定危机的岗位,计算机有可能代替程序员写代码。对于写作方面,现在可以写新闻稿,可以写天气预报,不久的将来可能可以写小说等等,这些都是计算机用深度学习可以做的事情。
4.门槛降低。深度学习使得自动问答和机器翻译的门槛降低。也许一个一年级的研究生,看了几本深度学习的书本,甚至就能够发表很好的文章,提出很好的算法。所以说这是一个竞争很激烈的行业。
人工智能新时代,社会媒体)大数据
在人工智能新时代不仅有很好的深度学习算法,还有社会媒体的大数据(如图6、图7和图8所示)。
图6
图7
图8
这些丰富的社会媒体大数据包含了比较鲜活的网络语言,也带来了很多有价值的数据,也有很多标注的数据,对自然语言处理带来说是很大的资源。
人工智能新时代——计算平台
图9
图10
人工智能新时代还给我们带来了超强的计算平台(如图9和图10所示),也是自然语言处理的基础。深度学习和神经网络的算法很早就有人提出,但是那个时候的模型不能太复杂,数据不够多,因为计算机的能力不够。现在我们可以用GPU,还有很多存储、框架管理和开源工具,进行快速有效的计算,所以近些年来我们很多领域的研究都有新的进展。
这部分主要介绍基于神经网络的表示学习。它的定义为:
这种表示具体可以用来学习词语、短语、句子和句对。如下图所示:
图 11
对词语我们可以进行预训练,也可以为下一个任务服务。对短语和句子来说直接就可以作为一个任务,比如说对句子进行情感分类,首先通过各种各样语言的组合,进行不同向量的表示。我们还可以做句对,可以判断相应两个句子之间的关系,判断句子和答案之间是否匹配。还可以判断前提和结果之间的关系,因果关系对比,这些都是用神经网络可以做的事。如下图所示。
图12
基于神经网络的表示学习——词语
基于神经网络的表示学习在词语中的发展状况如下图所示。
图13
2013年之前: 少量研究工作 [Bengio, Hinton]
2013年之后: 大量新工作
2016年之后: 渐渐冷却
这个领域涉及到的算法有:
基于预测的词表示学习-word2vec算法
高效的无监督学习词表示
Code :code.google.com/p/word2vec/
图14
详细内容可参阅文章:Efficient estimation ofword representations in vector space, NIPS 2013
基于计数的词表示学习– GloVe 算法
这个词向量算法是斯坦福做的,它的目标如果一对词对经常在一起那么它们的内积和贡献的概率相似。直接建模词对,的共现频率和它们内积的关系:
基于篇章,它们也提供了很少的预训练的词向量,很多人用,也有一定的代码,现在深度学习这个时代开源是一种趋势。
Code and Pre-trained word vectors: http://nlp.stanford.edu/projects/glove/
详细内容可参阅文章:Glove: Global vectors for wordrepresentation, EMNLP 2014
多义词的表示学习
简单介绍一下复旦在词表示方面的工作,我们做的是多义词的表示。比如说同样一个词“红”,可能表示的是颜色或者是革命。如果用单一一个词项表示可能会有问题,在特定的话题下(比如说我们讲的是政治类、革命),这个时候应该取第二个意思。如果是和颜色、抒情相关很可能指的是红色。这就使得要通过进行轮回学习,我们要学习词语和这个话题的语义向量。那么多义词的研究目的就是要学习多义词的表示向量和利用神经张量模型同时学习词语和话题的语义表示。
图15
详细内容可参阅文章:Learning Context-Sensitive Word Embeddings with Neural TensorSkip-Gram Model, IJCAI 2015
基于神经网络的表示学习——短语和句子
基于神经网络的表示学习在短语和句子的发展状况如下图所示。
图 16
这个领域的工作大致可以分成三期。第一期是2013年以前会用递归神经网络。递归神经网络就是会给出一个句子的成分结构,句子是由主语和谓语组成,谓语是由谓词+宾语等等,主语之间可能还有一些修饰成分。因为工作本身不太好并行化,所以2014年之后比较多的采用卷积神经网络,它具有易并行化的特点,采用比较粗暴的方法产生出所有可能可能的语义组合,最后得到最可能的表示。之后大概2014年、2015年最常见地是用循环神经网络来进行词语的表示,可以从一个句子的头部到句子的尾部,最后得到一个词语的表示向量。
这个领域涉及到的算法内容有:
卷积神经网对句子建模
通过动态pooling,解决句子变长问题。
图 17
详细内容可参阅文章:
A ConvolutionalNeural Network for Modelling Sentences,ACL 2014
循环神经网络对句子建模
循环神经网络涉及到普通循环神经网(Vanilla RNN) 、长短时记忆单元(LongShort-term Memory)和门循环单元(GatedRecurrent Unit)。
循环神经网络是指网络中间的状态,状态是时刻变化的。在每一个时刻我们输出一个词,根据输入的词可以产生下一时刻的状态,最后一个时刻的状态就是句子的表示。另外传统循环神经网络可能会带来梯度离散的问题,我们会引入一些长短时的记忆和循环,并且加以改进。
图 18
详细内容可参阅文章:
EmpiricalEvaluation of Gated Recurrent Neural Networks on Sequence Modeling, NIPSworkshop 2014
基于注意力的序列–序列模型: 文摘和机器翻译
循环神经网络如果加了注意力很容易用到做编码、解码模型,可以进行机器翻译。先读原语言句子,产生一个中间表示,这就要用到神经网络来做。从中间表示生成出来目标语言句子,在生成的时候还会有重点的选取编码信息,采用注意力的机制,回顾到输入句子,然后产生输出。这就是一个现在标准神经网络机器翻译的建模模型。
在解码过程中有重点地选取编码的信息,如下图所示。
图19
详细内容可参阅文章:
1.Neural machinetranslation by jointly learning to align and translate ICLR 2015
2.A Neural Attention Model for Sentence Summarization EMNLP 2015
建模复杂的稠密特征组合—基于门机制的递归神经网络
面对复杂的稠密特征组合,可以用基于门机制的递归神经网络进行表示。比如说“下雨天地面积水”,如何得到这个句子的表示?可以两两组合相邻的两个字,最后发现字和字之间构成了右边的结构树(如下图所示),利用这个树来组合语义,才能得到整个句子的语义。
图20
详细内容可参阅文章:
1.Gated recursive neural network for Chinese word segmentation, ACL2015
2.Sentencemodeling with gated recursive neural network, EMNLP 2015
3.Transition-baseddependency parsing using two heterogeneous gated recursive neural networks,EMNLP 2015
基于门递归神经网络的中文分词
图21
详细内容可参阅文章:
Gated recursive neural network for Chinese word segmentation, ACL2015
递归卷积神经网络
研究它动机有两点:一是递归神经网络支持的拓扑结构有限(二叉树)。二是如何融合递归神经网络以及卷积神经网络。
图22
详细内容可参阅文章:
A Re-Ranking ModelFor Dependency Parser With Recursive Convolutional Neural Network, ACL 2015
多时间周期的记忆神经网络
研究它动机有两点:记忆网络中长周期的记忆更新效率比较低和长周期记忆和短周期记忆的影响机制。
图23
详细内容可参阅文章:
Multi-timescalelong short-term memory neural network for modelling sentences and documents,EMNLP 2015
基于神经网络的表示学习——句对
这一领域涉及到的内容主要有:
建模复杂的稠密特征组合——卷积张量神经网络
研究它动机有两点:自然语言处理中大部分神经模型并不深和主要得益于分布式表示(稠密向量)。
图24
这是自动问答的一个比较好的模型。建模两个句子之间的关系,通常的想法是产生类似于向量相似度来做,可以做的更加复杂一点,比如说用一个向量神经区域枚举,可以捕捉两个向量表之间的相似度,取得了更好的结果。
详细内容可参阅文章:
1.Convolutionalneural tensor network architecture for community-based question answering,IJCAI 2015
2.LearningContext-Sensitive Word Embeddings with Neural Tensor Skip-Gram Model, IJCAI2015
语篇关系表示与检测
研究它动机有两点:一是单词向量表示之差表示了单词间的关系,二是句子之间的关系如何表示?
图25
详细内容可参阅文章:
DiscourseRelations Detection via a Mixed Generative-Discriminative Framework, AAAI 2016
利用GRN进行语篇关系检测
使用句子的隐状态, 而非直接使用词向量。
使用GRN(gated relevance network) 建模隐状态之间的交互关系。
图26
详细内容可参阅文章:
Implicit DiscourseRelation Detection via a Deep Architecture with Gated Relevance Network, ACL2016
微博标签(Hashtag)推荐
研究它动机有三点:一是CNN在自然语言处理任务中取得很多进展,二是将标签推荐建模为标签和微博之间的匹配问题,三是要考虑Attention机制如何与CNN结合。
图27
详细内容可参阅文章:
HashtagRecommendation using Attention-based Convolutional Neural Network, IJCAI 2016
1.真正的“深度”学习
目前NLP的所谓的“深度学习” 多数是浅层学习。在语言处理中经常只有浅层,比如说一层两层,最多像谷歌进行到八层,但是视觉有一千多层网络,怎么样进行真正的深度学习也是一个趋势。它的发展主要受益于“分布式”表示。
2.和计算机视觉相比,缺少标志性的数据以及系统
我们希望有标志性的数据类似于计算机系统中自然语言处理的imageNet,AlexNet,GoogleNet和ResNet出现。
3.新的学习方法
比如把多任务学习,对抗学习和非监督学习加入到自然语言处理中。比如说利用基于对抗网络,进行分词,分词过程中分成两种,一种是和标准相关,一种无关。我们经过对抗学习之后可以使得和标准语料无关的完全无关,这样就可以对这部分特征进行学习,取得比较好的效果。类似的内容可参考“面向多任务学习的循环神经网络共享机制”“基于对抗网络的多标准分词”等工作。
4.生物学启发模型的威力
生物学启发模型现在已经对视觉的卷积神经网络有启发意义,我们期待引入到自然语言处理中。这是一个未来的研究方向。
5.可解释性、可视化
知其然,还要知其所以然。计算机视觉中有大量的相关工作可借鉴。未来我们希望自然语言产生的表示是可看得懂的和为什么是好地。在这个方面我们也做了一定的工作,可参阅“LSTM架构的认知解释”,“神经网络模型编码了哪些语言学特征”和“序列模型编码了哪些语言学特征?”等。
图28 2017新兴技术成熟度曲线(来源:Gartner 2017年7月)
无论是人工智能还是深度学习的探索都还任重道远,总结来说可概括为三句话:
1.深度学习给自然语言处理带来新生命力
2.虽然已经取得诸多成果,依然任重道远
3.有多少人工,就有多少智能