首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

AI帮你打电话订座?无处不在的神奇NLP

前言

本课程将结合应用案例介绍近年来在人工智能领域快速发展的自然语言处理技术。内容包括自然语言处理技术的概念,应用方向,目前的发展方向等等。

一、语言的起源与发展

对于语言的起源,有两种观点/学派:

认为语言产生无先天基础,是后天社会的产物。

认为语言是先天本能(较为普遍)。

“语言是先天本能”学派有以下观点:

参考《语言本能》

每个人都有先天的语法知识(三方面论证)

语言的普遍性:各种语言都能找到相似的语法结构

输入贫乏论证

生理基础论证

基本语法为原则

语言与语言之间细微差别被称为参数,人类学习语言的过程就是在原则上训练出不同的参数。

人类语言和机器语言的对应关系

二、语言模型

语言模型:衡量一个句子是否合理的概率。

具体过程:

将句子的每个字/词建模为从X1到XL的序列(X1,X2,…,XL);

计算序列在语言模型下的概率,概率高则可能是合理的句子。

1. 经典语言模型:N-gram语言模型

例如将中文的两个字为一个单位,定义为一个gram,计算n-gram序列的概率P(X1,X2,…,XL),首先假设这个序列符合马尔科夫假设:

N-gram模型

如图,两个东西的转变过程有一个概率(依赖关系/相关关系)。这种概率依赖关系很普遍:如“一蹴而”的状态后面是“就”的状态的概率很高。

提取n-gram的统计信息

只需要从语料中提取n-gram的统计信息:从能够获得的所有语料(人民日报、书籍、微博……所有渠道可获得的语料信息)中,提取n-gram的统计信息,如统计“一蹴”、“蹴而”、“而就”、“一蹴而”、“蹴而就”、“一蹴而就”出现的次数和概率。

2. N-gram模型局限性

a. 数据稀疏问题:造新词的能力更强了,而新词的语料不足,可能其中某一个gram机器无法认识,因而概率为零,进而导致相关的几个概率都是零。

解决:使用一些平滑的技巧,如加一个微小扰动,使概率不为零。

b. 缺少泛化能力:如太阳和月亮有相似性,若有“明亮的太阳”,也应可说“明亮的月亮”,但机器不知道可以这样推广。

缺少泛化能力

缺少泛化的原因——离散表达/1-hot表达:比如把一万个常用汉字编成字典,每个字用一个一万维向量表示,则每个向量只有一位是1(第序列号的那一位是1),从而相互没有相似性

缺少泛化能力的问题过去一直没有很好的解决方法,直到深度学习的神经网络语言模型出现。

三、语言表达

1.单词表示word representation

a.深度学习的神经网络模型

image.png

由离散型表达(不是0就是1)变为可以连续型实数化的向量表达。如上图三个含C的表达,C是指连续化表达,向量中的每一维可以是(0,1)的实数,而不再是二值向量了——word embedding词嵌入。

将embedding的计算从上述复杂模型中简化,提取出较为简单的两个对称的模型。推出一个用于获取词向量的密集向量表示的开源工具包——Word2Vec,采用两个较为特殊的神经网络结构来进行词向量的构建,分别为:CBOW模型(左)和Skip-gram模型(右)。

Word2Vec

CBOW模型:在已知当前词w上下文的前提下预测当前词。“我要去吃饭”:用“我要”和“吃饭”预测“去”——两边预测中间。

Skip-gram模型:已知当前词w的前提下,预测其上。反之,用“去”预测“我要”和“吃饭”——中间预测两边。

b. 词嵌入的作用

(1) 通过向量的值可以计算词语相似度(word similarity calculation)。比如“求单词A的同义词”,就可以通过“求与单词A在cos距离下最相似的向量”来做到。

计算词语相似度

(2) 获知词汇的语言属性:对词做分类,比如根据形容人/动物/颜色的属性等,通过向量加减可以获得。如下图“中国”减“北京”、“俄罗斯”减“莫斯科”等国家与首都的关系所形成的一系列平行的结构。

词汇的语言属性

(3) 获知词语之间的关系:比如“水果”涵盖“苹果”等词语间包含与被包含/上下位的关系。

(4) 获知多语言之间的映射:多种语言之间语法、复杂度相似,因而能将相似的部分映射到同一个位置

(5) 多模化的“词语”之间的映射:多种媒介,比如把图片和文本/文本和语音放在一起学,也能学出一个映射。

2. 词组表示Phrase Representations

用相似的方法扩展词组的表示

3. 句子表示Sentence Representations

句子表示目前尚不精确。目前比较经典的有以下两种句子表示的模型:

a. RNN循环神经网络模型

把句子看成词组成的序列sequence of words

如图进行循环计算,例如有了the以后cat的概率是多少,有了cat以后is的概率是多少……(符合马尔可夫假设)

RNN循环神经网络

b. CNN卷积神经网络模型

把句子看作自底向上的组成式结构。比如先两两组合,再三三组合,如此一层层组合上去最终成为句子。

重点用到池化操作Pooling:类似于取平均

CNN卷积神经网络

四、机器翻译:视作句子层面的交流

1. 神经网络机器翻译

Neural Machine Translation

将以前复杂的提取特征、分类、输入规则等复杂的方法和过程替换为神经网络模型。条件概率最大代表正确率高

优点:

不用人工特征工程 feature engineering,只用关注神经网络的输入和输出,解放人工。

端到端end-to-end,每一个神经网络的子模块都直接指向最后的输出,直接为最终的翻译质量服务。

2. 编码-解码器框架

encoder-decoder framework

a. 编码器解码器模型介绍

使用encoder-decoder编码器-解码器模型实现端到端/序列到序列的学习。是对输入端的句子进行编码成中间表示(共同理解的东西),然后对之解码得到输出。由此句子中间有个中间表示——语义空间。

encoder-decoder framework

此框架非常火,有以下三个优点:

综合:集合了很多可以干的事情。

灵活:可以做不止文字翻译的工作,只要中间能够找到语义空间的都能应用,比如图片生成文字,文字生成图片。

可扩展:框架没有对编码器、解码器的模型有严格要求,既可以是CNN,也可以是RNN,可以在编码器、解码器上加很多东西。

b. 编码器解码器工作过程

编码过程——下图是一个RNN的结构:(1)输入向量→(2)向量从1-hot转化为连续的→(3)进行循环计算→(4)得到在语义空间中的中间表达。

编码过程

解码过程:(1)依照语义空间中的表达调用模型中的参数→(2)计算下一个词的概率→(3)转化成真正的语言

解码过程

c. 问题和弊端

问题:尤其对于长句子来说,压缩成向量后真的能表示出原意吗?是否损失太多细节信息?

补救措施:基于注意力的神经网络机器翻译模型

3. 注意力机制

让机器在解码某个词的同时明白那个词在原句中处于哪个位置,先集中注意力于词而不是直接整句话。赋予每个词一个权重,根据词的权重(词越重要,权重就越高)来解码

图片翻译:如下例根据图片生成图片标题,明暗代表着注意力的不同,比如生成斑马时更集中地注意斑马,斑马位置比较亮;生成草时集中注意草,草地位置比较明亮。

图片翻译

视频摘要生成:将不同帧更集中地生成不同的词。

视频摘要生成

五、语言生成

1.衡量机器是否理解语言:机器不仅要人给输入而有输出,还要能主动生成语言。

2.无限猴子定理:无数只猴子在打字机上打东西,总能有一个猴子打出莎士比亚的作品。

考虑以下问题:

可以做到的概率是多少?

如果猴子能做到的话,机器能不能可以?

如果机器可以,那么如何驱动机器的行为做到?

能否生成其他类型的自然语言?

终极问题:机器如何自动生成自然语言?

1. 深度学习带来突破

(1) 当前已经可以自动生成的

天气预报:很早就解决了

中国对联:微软亚洲研究院

英文诗歌、中文古诗、宋词:结构有对称性所以好做

(2) 当前效果还不好的

图片视频标题与简介:机器根据图片或视频生成对它的描述。要完成目标识别-理解目标间关系-将关系组合成符合语法规则的句子。相似于机器翻译,使用编码-解码器模型就可以实现。

图片/视频描述

实现过程

生成故事:给定题材自动生成故事;故事接龙;机器补全段落(如小说)

对话生成:微软小冰、而苹果Siri、谷歌Allo

让我们来看一下2018年GoogleAI技术在语言生成方面的进展,以下为谷歌CEO演示使用Duplex打电话订座位的视频:

谷歌Duplex:会“打call”的AI技术

2. 语言生成中的问题

(1) RNN和LSTM模型本身局限性带来的问题(普遍问题):

难以生成长句子/复合句,也生成不出复合句,表现为生成一半后不知该生成什么,从而产生语言漂移,语言跳跃。如“今天天气很好”+“美国换新总统了”

有语法问题(不能完全规避语法问题)

会往词频高的方向漂移,因为词频高的更不容易出错

(2) 生成对话过程中的独特困难(也是RNN问题的结果):

a) 万能回复现象:频繁说百搭/兜底/不容易犯错/最安全的话

debug:semantic drift+highly frequent pattern domination

万能回复现象解决方法:混合回答策略(Google)

知识检索,让它触发知识库与知识图谱,从中抽取内容就能聊很多。

通过定义场景缩小搜索范围,在某一范围内比如【时间】、【地点】、【工作】、【买衣服】、【天气】等场景内搜索,从而排除万能回复。

b) language style语言风格

debug:回复过长、过于学究等问题。(尤其是从知识库中抽取的内容)

人们在聊天中喜欢较短的、口语化的对话,需要对句子摘要来回复,最好还能带一些情绪、性格;人格化;根据不同人设置不同风格的回复。

作者:趙00

编辑:Yiri

本文为集智2018盗火者计划产出的《无处不在的自然语言处理》课程优秀笔记。

以下视频为课程精彩预览,可扫描视频下方二维码对完整课程进行深入学习~

无处不在的自然语言处理》

课程地址:

https://campus.swarma.org/gcou=10093

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190115G1AKM900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券