其他
活动 | 深度学习Meetup演讲速记——基于深度学习的文本语义分析
主要研究方向:深度学习、自然语言处理、自动问答系统以及统计机器学习。其所在团队FNLP也是国内最早从事自然语言处理的课题组之一,学术带头人为吴立德教授和黄萱菁教授,在理论研究和工程实际方面都有非常丰富的成果。不但在相关领域的权威国际会议发表了许多论文外,也和国内外很多单位进行合作,开发了自动问答、舆情分析、车载语音交互等实际应用系统。其带领的团队研发出的一套基于机器学习的中文自然语言文本处理的开发工具包 FNLP,该工具包包含了为实现这些任务的机器学习算法和数据集。
演讲正文
这里有个例子:“我们把香蕉给猴子,因为它们饿了。”“我们把香蕉给猴子,因为它们熟透了。”这两句话中的“它们”就分别指代的不同的实体“猴子”和“香蕉”。这里我们就没办法通过一些简单的规则来辨识出指代的问题。
虽然自然语言处理的问题非常难,但这不妨碍我们已经有一些NLP的技术应用在日常生活中。比如搜索引擎、输入法、文档检索、机器翻译等等。
“我喜欢读书” & “我讨厌读书”
用情感分析分析出哪个是正面的,哪个是负面的。在真实的情况下,我们并不会运用刚才说道的那个理想流程来分析这个句子的情感,而是运用数据驱动的方法,通过分类模型,机器学习的算法来得到。
作为分类模型的输入,我们首先要从数据中抽取特征,这一步是很关键的。因为语言的输入是一个个离散的符号,但是在机器学习里面需要的输入是向量,所以我们需要把离散符号转变成向量,所以怎么找到有效的转换方式是一项重要的工作。有了这一步,我们就可以根据大量的语料信息学习里面的参数,并且做解码。解码也是NLP里面比较关键的算法,NLP里很多问题都是结构化学习问题,所以需要解码算法,解空间也是无限大的。这就是一个端到端的流程,总结来说就是,我们需要把一个任务的输入和输出定义好,准备一个分类模型,运用大量的训练数据来训练这个模型。目前多数的NLP任务运用端到端的方法来解决是最有效的。
现在我们回到刚才那个例子,“我喜欢读书”和“我讨厌读书”。首先我们把这两个句子转化成两个向量,如图
包括我们刚才讲的分词问题,我们也把它转化成分类问题。一个比较简单的做法就是确定每个词中间要不要切分。如果不需要切分,就标注为0,需要切分就标注为1。这样我们就把它转化成了在每两个词中间的分类问题。当然还有更复杂的,比如序列标注,它是基于词标签的,就是我们对每个词打上标签。这也算是目前主流的一个做分词的算法,总之就是把自然语言问题转化成机器学习问题,然后用端到端的方法来解决。
总的来说,自然语言的结构化学习的三个问题就是:第一,怎么用模型表示;第二,解码问题;第三,参数估计。形式化表示的话,其实如图中这个公式就够了。
首先,深度学习是来源与多层的人工神经网络,所谓深度,我们认为大于一层的都叫做深度网络。深度神经网络模型具有自动提取特征的优点,就像刚才说的我们去找出有效的特征来做分类。那运用深度学习之后呢,这些特征的抽取就不需要人来找,只要有大量的数据,当层数比较深的时候,可以把特征自动的选出来,所以深度学习在很多方面也叫作表示学习。那么,现在随着人们对深度学习的认识,它现在逐渐的在想人工智能的方向发展,其中主要又两个机制,是记忆网络和注意力机制,其实熟悉的朋友都知道,现在注意力机制也是比较热门的话题,现在很多模型都离不开这个机制。
接下来我们从另外一个角度来看自然语言处理。在自然语言理解这方面,判断一个句子是否正确是非常困难的,我们基本把它归结为一个概率问题,也就是我去判断一句话它到底是不是属于自然语言的概率是多少,也就是这句话的可能性和合理性的概率是多少。那这里就是一个自然语言处理的概率模型,最终的目标是去判断这个句子是否合理。
“!在报那猫告做只”我们就觉得这个句子不对。重新排序后的第二句话:“把只猫在作报告!”这句话好像对了,但是有不合理。最后第三句话:“那个人在作报告!”这句话的可能性和合理性就比较高了,所以对应的概率就比较高。这里就是我们运用统计学的方法分别给这三个句子一个概率,那肯定是第一个概率最低,第二个稍高,第三个最高了。所以一切都是概率,比较常见的是简化之后的N元语言模型,就是当前的一个词只依赖于它之前的N-1个词,这样就可以大幅的简化模型。
总结来说,引入深度学习之后,最大的变化是底层的表示变了,以前就是用0、1的方法表示,每个词都是一个one-hot向量,但是用这种离散表示方法的一个缺点就是词和词之间没有距离的概念,但在实际生活中每个词之间是有关系的。为了避免这种缺陷,就引入了其他知识模型,比如同义词词典。这里其他的一些词袋模型、N元模型都是离散的表示,都有刚才所说的泛化问题。在加入深度学习之后,单词可以表示成连续的实数向量,就是在低维空间中一些连续的点,点与点之间是有距离概念的,比如同义词的点之间的距离就比较近,可以认为它们的语义也是相近的。这就是深度学习之后的主要的不同。但是,连续表示也不是从这里开始的,早期的时候有一个分布式表示,主要基于分布式假设,运用共现矩阵的矩阵分解等来做分析问题。分散式表示(dustributed)是在深度学习之后出现的,一般也翻译成分布式表示,我这里为了避免歧义翻译成了分散式表示。它的目标是用压缩、低维、稠密的向量去表示一个词,主要是和局部表示相对应的。
我这里有目前的机器学习的研究热点,我们可以大概总结一下事情发展的脉搏。如果我们把传统的神经网络看做既带有控制,又带有计算、记忆的网络,那从输入到输出,这三块是不分的,但是我们在写程序的时候会分开的。所以目前有人就在做这样的工作,一个是增加注意力模型,给你一块外存或者内存,你要进行抽取,而不是把所有内容都读出来。另外就是增加外部记忆,就是把控制计算和存储进行分离,这样我就可以把很多东西放在外部记忆,这就不需要增加很多额外的工作量。还有的就是改变记忆结构,比如原来的记忆都是矩阵形式表示,现在用栈、队列的形式来改变记忆的结构。
除了词的学习模型,当然还有句子和篇章的模型,例如递归组合模型、卷积模型等等,在这里就简单总结一下语言表示模型,不做深究。最后,自然语言处理任务可以大概划分为以下四个类别。类别到序列、序列到类别、同步的(每个位置都要产生输出)序列到序列、异步的序列到序列。如今大部分的自然语言处理任务都可以归结到上面的这几类。
最后的最后,这里是我们目前的工作,大家有兴趣可以去网站了解一下:http://nlp.fudan.edu.cn/xpqiu
(演讲内容到此结束)
回复关键字,获取更多资讯
简介 | 产品 | 技术 | 案例集 | 培训 | 白话大数据评测 投资 | 新手上路 | Holodesk | TED视频金融电力 | 视频监控 | 运营商 |交通 税务 | 电商 | 医疗 | 快递