一文纵览自然语言生成的发展

人们对人工智能的兴趣随着科幻电影的诞生和发展变得愈发浓厚。每当我们听到“人工智能”这个词,便会联想到《终结者》、《黑客帝国》、《我,机器人》等电影。

1

机器人具有独立思考的能力在目前看来还比较遥远,但机器学习和自然语言理解领域已经在过去几年取得了重大进展。个人助理(Siri/Alexa)、聊天机器人及问答机器人等应用程序正悄无声息地改变着人们的生活方式。

人们需要理解大量有歧义且结构多变的语言并从中获取意义,这促使自然语言理解(Natural Language Understanding,NLU)和自然语言生成(Natural Language Generation, NLG)成为人工智能中发展最快的应用。Gartner预测,“到2019年,自然语言生成将是90%的现代BI和分析平台的标准特征”。本文将回顾NLG的历史,并展望其未来。

什么是NLG?
NLG通过预测句子中的下一个单词传达信息。使用语言模型能够预测下一个可能出现的单词,也就是找到单词在序列中的概率分布。举个例子,预测“I need to learn how to __”的下一个单词,语言模型会计算下一个单词,如“write”,“drive”可能出现的概率。RNNs及LSTMs等高级神经网络能够处理较长的句子,提高了语言模型预测的准确性。

马尔可夫链(Markov Chains)
马尔可夫链是最早用于语言生成的算法。它通过当前单词预测句子中的下一个单词。举个例子,模型通过下面两个句子进行训练,“I drink coffee in the morning”和“I eat sandwiches with tea”。“drink”后面出现“coffee”的概率是100%,“I”后面出现“eat”和“drink”的概率分别为50%。马尔可夫链在计算下一个单词出现概率的时候,会把每个单词之间的关系考虑进去。该模型最早用于为智能手机输入句子提供下一个单词生成建议。

但由于仅注意当前单词,马尔可夫模型无法探测当前单词与句子中其它单词的关系以及句子的结构,使得预测结果不够准确,在许多应用场景中受限。

1

循环神经网络(Recurrent Neural Network, RNN)
神经网络启发于人类大脑的工作原理,通过对输入和输出数据之间的非线性关系进行建模,为计算提供了一种新的方法,用于语言建模即称为神经语言建模。

RNN是神经网络的一种,它能够捕捉输入数据的序列特征。通过前馈网络处理序列中的每一个item,并将模型的输出作为序列的next item,此过程能够帮助存储前面每步的信息。这样的“记忆”使得RNN在语言生成中有着出色的表现,因为记住过去的信息能够帮助更好的预测未来。与马尔可夫链不同的是,在进行预测时,RNN不仅关注当前单词,还关注已经处理过的单词。

利用RNN进行语言生成
在RNN的每一次迭代中,模型都能在其“记忆”单元中存储出现过的单词,以及计算下一个单词出现的概率。举个例子,有“We need to rent a __”,此时要预测句子中的下一个单词。模型能够记住在词典中每个单词随前面单词出现的概率。在上述例子中,“house”或者“car”比“river”和“dinner”有着更高的出现概率。“记忆”单元选择概率更高的单词,并对其进行排序,然后进行下一次迭代。

但RNN有一个很大的问题——梯度消失。随着序列长度的增加,RNNs不能存储那些很久前遇到的单词,便只能根据最近的单词进行预测。这使得RNNs无法应用于生成连贯的长句子。

长短期记忆网络(Long Short-Term Memory, LSTM)

长短期记忆网络是RNNs的变体,比vanilla RNNs更适合处理长序列。LSTM应用广泛,其与RNNs的结构类似。不同的是,RNNs只有一个简单的层结构,而LSTM内部有4个层结构。一个LSTM由4部分组成:cell,输入门,输出门以及遗忘门。

利用LSTM进行语言生成

示例,输入句子为“I am from Spain. I am fluent in ___”。为了正确预测出下一个单词“Spanish”,LSTM会更加关注上一句中的“Spain”并且利用cell对其进行记忆。在处理序列时cell会对获取的信息进行存储,这些信息会用于预测下一个单词。当遇到句号时,遗忘门会意识到句子中的上下文发生了改变,并忽略当前cell中存储的状态信息,换句话说,遗忘门的作用是让循环神经网络“忘记”之前没有用到的信息。

LSTM及其变体能够解决梯度消失问题并生成连贯的句子。但是,LSTM也有其局限性:计算要求高,难以训练。

Transformer

1

Transformer在2017年,由Google团队在论文《Attention Is All You Need》中首次提出,并涉及到一种名为“self-attention mechanism”的新方法。Transformers目前广泛用于解决NLP问题,例如语言建模,机器翻译以及文本生成等。Transformer模型由一组编码器和一组解码器组成,前者负责处理任意长度的输入,后者负责输出生成的句子。

在上述示例中,编码器处理输入句子,并为其生成表示。解码器利用表示生成用于输出的句子。每个单词最初的表示或嵌入由空心圆表示。接下来,Transformer模型利用self-attention机制获取所有其他单词之间的关系,生成每个单词的新表示,如图中的实心圆。对每个单词重复该步骤,连续生成新的表示,类似地,解码器从左往右依次生成单词。

与LSTMs不同的是,Transformer需要的步骤少,应用self-attention机制能够在不考虑单词位置的情况下,直接捕捉句子中所有单词之间的关系。

最近,许多研究学者对vanilla transformer模型进行了改进,提升了速度与精度。在2018年,谷歌提出BERT模型,此模型在各种NLP任务中均取得了最先进的结果。在2019年,OpenAI发布了一个基于transformer的语言模型,只需要输入几行文本就可以生成长篇文章。

利用Transformers进行语言生成
Transformer模型同样可以用于语言生成,最著名的要数OpenAI提出的GPT-2语言模型。该模型通过将注意力集中在与预测下一个单词相关的单词上,更好的学习并预测句子中的下一个单词。

使用Transformer进行文本生成与机器翻译所遵循的结构类似。举个例子,“Her gown with the dots that are pink, white and ____”。通过利用self-attention机制对前面所出现的颜色(白色和粉色)进行分析,理解需要预测的单词也是一种颜色,此时模型的输出为“blue”。Self-attention能够帮助模型选择性地关注每一个单词在句子中担任的角色,而不仅仅是通过循坏记住些许特征。

1

语言生成的未来
本文带我们纵览了语言生成的发展,从利用马尔可夫链预测下一个单词,到使用self-attention生成连贯的文章。但是,我们仍处于生成语言建模的初期,今后还会往自主生成文本的方向迈进。生成模型也将用于图像、视频、音频等内容的开发。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java生成html表格数据_使用Java将表格数据导出成Excel格式

前言:本文使用后台处理的办法导出前端表格中显示的数据。引入依赖org.apache.poipoi3.17书写PoiUtilspublic classPoiUtils {public static ResponseEntity exportExcel(List marketList) throwsIOException {HttpHeaders headersnull;//创建文档HSSFWorkbook workb…

基于机器学习场景,如何搭建特征数据管理中台?

「免费学习 60 节公开课:投票页面,点击讲师头像」作者 | 陈迪豪,第四范式资深架构师编辑 | Jane来源 | AI科技大本营(ID:rgznai100)一、机器学习场景与高性能特征管理中台理想的机器学习场景是给到数据&…

十年再出发!阿里云智能总裁张建锋演讲全记录

3月21日,“十年再出发”阿里云峰会于国家会议中心正式召开。阿里云智能总裁张建锋(行癫)携核心管理团队首次悉数亮相,并对阿里云做了全面的战略解读。以下是演讲全文。 张建锋:今天是我们阿里云智能升级之后第一次和大…

java简单题目_Java考点知识简单练习题

Java考点知识简单练习题Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。下面是小编为大家搜索整理的java考试强化训练题&#xff0c…

抗疫进展:多家科研机构联合筛选出五种可能有效的抗病毒药物

2月3日,华中科技大学同济医学院基础医学院、华中科技大学同济医学院附属武汉儿童医院、西安交通大学第一附属医院、中科院北京基因组研究所、华为云联合科研团队宣布,筛选出五种可能对2019新型冠状病毒(2019-nCoV)有效的抗病毒药物…

GAN的一些很酷的应用

在GAN发展的最初几年里,我们取得了令人瞩目的进展。当然,现在不会是像恐怖电影里那样有邮票大小的面部照片了。2017年,Gan制作了10241024张能愚弄人才童子军的照片。在未来几年,我们可能会看到GAN生成的高质量视频,由此…

java项目短信群发接口_JAVA实现第三方短信发送过程详解

想使代码生效需要注册:在muven项目里面导入jar包commons-codeccommons-codec1.4commons-httpclientcommons-httpclient3.1commons-loggingcommons-logging1.1.1org.apache.httpcomponentshttpclient4.3.1com.alibabadruid1.0.8com.alibabadruid1.0.8创建一个测试类&…

两亿人在家开会!钉钉紧急扩容1万台云服务器

2月3日是一个特殊的开工日,为防范疫情,在阿里巴巴钉钉上有超过1000万家企业组织的2亿上班族在线开工。为支持此次史无前例的办公需求,钉钉在阿里云上紧急扩容1万台云服务器来保障钉钉视频会议、群直播、办公协同等功能,保障用户流…

这些数据科学家必备的技能,你拥有哪些?

1.教育背景 88%的数据科学家受过高等教育且拥有硕士学位,其中46%拥有博士学位。虽然有些人是例外,但通常需要非常强大的教育背景才能拥有成为数据科学家所必需的知识深度。要想成为数据科学家,你可以先获得计算机科学、…

阿里敏捷教练:多团队开发一个产品的组织设计和思考

Scrum等敏捷开发框架,最初都是为5到9人的小团队设计的。通过保持专注和合理利用新技术,在相当长的时间里小团队仍然可以支撑业务发展。 随着业务成长,小团队的产出可能跟不上业务需要,团队就会面临规模化的问题。从1个团队拓展到…

10个你应该了解的Git命令(以及Git省时小窍门)

在本文中,我们将讨论那些作为开发人员、数据科学家或产品经理应该知道的各种各样的Git命令。并且将使用Git查看、删除和整理。此外,我们还将介绍如何使用Bash别名和Git编辑器配置转义Vim和节省时间的方法。 如果你不熟悉基本的git命令,那么在…

阿里工程师开发了一款免费工具,提升Kubernetes应用开发效率

对于使用了Kubernetes作为应用运行环境的开发者而言,在同一个集群中我们可以使用命名空间(Namespace)快速创建多套隔离环境,在相同命名空间下,服务间使用Service的内部DNS域名进行相互访问。 基于Kubernetes强大的隔离…

mongodb java spring_[Java教程]Spring 与 mongoDB 整合

[Java教程]Spring 与 mongoDB 整合02017-02-07 00:00:39首先需要引入jar包1 2 org.mongodb 3 mongodb-driver 4 3.3.0 5 6 7 org.springframework.data 8 spring-data-mongodb 9 1.9.4.RELEASE10 View Codespring中注入对象org.springframework.data.mongodb.core.MongoTemplat…

魔幻!过年在家,Java和Python程序员比工资打起来了...

Python真的野蛮生长到不行了?最近,笔者在某网站刷到一条信息,两个程序员在家比工资,竟然打起来了!原因就是从事5年开发的Java程序员竟然工资输给了工作仅2年的Python程序员!从上图招聘情况来了,…

Jmeter常用插件——梯度加压、响应时间、TPS_老版本

一、Jmeter梯度加压的jar Stepping Thread Group,下载方法如下: 1.访问网网站 https://jmeter-plugins.org/downloads/old/ 2.下载插件: 2.3.下载后需要解压 然后将JMeterPlugins-Standard.jar包放在jmeter安装目录的jmeter-3.0\lib\ext…

图解梯度下降背后的数学原理

敏捷在软件开发过程中是一个非常著名的术语,它背后的基本思想很简单:快速构建一些东西,然后得到一些反馈,根据反馈做出改变,重复此过程。目标是让产品更贴合用,让用户做出反馈,以获得设计开发出…

mysql数据迁移neo4j_neo4j数据库迁移---------Neo4j数据库导入导出的方法

Neo4j数据进行备份、还原、迁移的操作时,首先要关闭neo4j;/usr/share/neo4j/binneo4j stop如果出现Neo4j not running出现这种情况, Neo4j没有运行, 但是浏览器仍然可以访问neo4j数据库的情况, 直接执行导入数据后,是无法看到导入的数据库,其实这种情况下Neo4j仍在运…

rabbitmq配置文件字段spring.rabbitmq.publisher-confirms过时

spring.rabbitmq.publisher-confirms过时解决 在properties文件中确认消息报红 因为源码中过时配置级别设置了Error 新版本jar包配置换了就可以了 spring.rabbitmq.publisher-confirm-typecorrelated

如何利用 Webshell 诊断 EDAS Serverless 应用

本文主要介绍 Serverless 应用的网络环境以及 Serverless 应用容器内的环境,了解背景知识以及基本的运维知识后可以利用 Webshell 完成基本的运维需求。 Webshell 简介 用户可以通过阿里云控制台直接获取 ECS 的 Shell,从而完成自己的运维需求。如果 E…

刚刚,阿里云上线六大“战疫情”项目

作者 | Just出品 | CSDN云计算(CSDNcloud)抗击新冠肺炎,一线互联网大厂在行动。疫情发生以来,诸多科技公司都在思考如何利用技术来帮助抗击疫情,其中,阿里巴巴也是首当其冲。今天,阿里云上线了“…