专栏首页新智元重磅 | 谷歌开源大规模语言建模库,10亿+数据,探索 RNN 极限

重磅 | 谷歌开源大规模语言建模库,10亿+数据,探索 RNN 极限

【新智元导读】谷歌今天宣布开源大规模语言建模模型库,这项名为“探索RNN极限”的研究今年 2 月发表时就引发激论,如今姗姗来迟的开源更加引人瞩目。研究测试取得了极好的成绩,另外开源的数据库含有大约 10 亿英语单词,词汇有 80 万,大部分是新闻数据。这是典型的产业研究,只有在谷歌这样的大公司才做得出来。这次开源也应该会像作者希望的那样,在机器翻译、语音识别等领域起到推进作用。

开源说明

根据谷歌大脑团队在 Github 发布的消息,他们这次发布开源了一个在英语语料库 One Billion Word Benchmark(http://arxiv.org/abs/1312.3005)预先训练过的模型。这个数据库含有大约 10 亿个单词,词汇有 80 万单词,大部分都是新闻数据。由于训练中句子是被打乱了的,模型可以不理会文本,集中句子层面的语言建模。

在此基础上,作者在论文描述了一个模型,混合了字符CNN(character CNN)、大规模深度 LSTM,以及一个专门的 Softmanx 架构,最终得到的结果可以说是迄今最好的。

代码发布

开源部分包括:

  • TensorFlow GraphDef proto buffer 文本文件
  • TensorFlow 预训练 checkpoint shards
  • 评估预训练模型的代码
  • 词汇表
  • LM-1B 评估测试

代码支持 4 种评估模式:

  • 提供数据库,计算模型的 perplexity
  • 提供前缀,预测后面一个单词
  • softmax 嵌入项,字符级别的 CNN 单词嵌入项
  • 输入句子,将转存 LSTM 状态的嵌入项

结果

更多信息请访问:https://github.com/tensorflow/models/tree/master/lm_1b

研究论文:探索语言建模的极限

作者:Rafal Jozefowicz, Oriol Vinyals, Mike Schuster, Noam Shazeer, Yonghui Wu

摘要

本文中,作者探讨了近年来递归神经网络(RNN)在语言理解的核心——大规模语言建模(LM)方面的发展。为了解决语言建模中的两大挑战:语料库和词汇量,以及复杂的、长期的语言结构,作者拓展了现有模型,在 One Billion Word Benchmark 上对 CNN 或 LSTM 做了彻底研究。单一模型最好成绩将结果从 51.3 提高到 30.0(同时将参数数量减少了 20 倍),模型融合的结果创下了历史记录,将混淆度(perplexity)从 41.0 下降到 23.7。我们将这些模型开源,供所有 NLP 和 ML 研究者研究和提高。

论文呈现的模型中一个高层的图表。a指的是一个标志的LSTM 语言建模;b代表一个LM,其中输入和Softmax嵌入被一个字符CNN取代。c中,我们用一下一个单词预测LSTM网络替代Softmax。

语言建模(LM)是自然语言处理和自然理解模型任务的一个核心任务,能对句子结构分步进行展示,它展示的不仅是语言的复杂内容,比如语法结构,还能提取语料库可能包含的一定数量信息。确实,模型能够把较低的概率指派到那些语法上正确的句子上,但是却不太可能帮助完成其他基础的语言理解任务,比如,回答问题、机器翻译或者文本摘要。

LM在传统的NLP任务中扮演着关键的角色,例如,语音识别、机器翻译、文本摘要。通常(但不是一直),训练语言模型会提升下游任务的潜在价值,比如语音识别中的词语错误率,或者翻译中的BLEU 分数),这会让训练更好的LM自身具有更高价值。

进一步说,在大量的数据上进行训练,语言模型会从训练数据中简练地提取解码后的知识。比如,当用电影字幕进行训练时,这些语言模型能够生成关于物体颜色、人物身份等信息的大难。最近提出的序列到序列模型,使用了有条件的语言模型,作为解决多任务难题的一个关键,包括机器翻译和视频生成等 。

深度学习和递归神经网络(RNN)在过去的几年中极大地推动了语言建模研究的发展,让研究者可以在更多的任务上进行探索,在这些任务中,强限制性的独立假设都是不实际的。

虽然事实上,简单的模型,比如N-grams,只使用极少的前词(privious words)来预测接下里会出现的词,它们对于高质量、低混淆的语言建模来说一谈是一个非常关键的组成部分。

确实,最近绝大部分对大型语言建模的研究已经证明了RNN配合N-grams使用效果非常好,因为它们可能有一些不同的优势,能对N-gram模型进行补充。但是,如果单独使用RNN的话,效果就会很差。

我们相信,虽然很多工作都在小型的数据集,比如Penn Tree Bank (PTB)上展开,但是,更大型的任也是很重要的,因为过拟合并不是目前语言建模中的一个主要限制,而只是PTB 任务中的一个主要特点。

大型语料库上的结果通常会更好,这很重要,因为许多在小型数据库上运行得很好的想法在大型数据库上做进一步提升时都失败了。进一步来看,考虑到当下的硬件趋势和网页大量可用的文本数据,进行大型的建模将会比过去更加简单。所以,我们希望我们的工作能给研究者带来启发和帮助,让他们在PTB之外可以使用传统的语言模型。

出于这一目的,我们把自己的模型和训练内容进行开源。

我们聚焦在一个著名的大型LM 基准:One Billion Word Benchmark 数据集。这一数据集比PTB要大很多,同时挑战也多很多。与计算机视觉领域的Imagenet类似,我们认为,在大型数据集上研究,并且在清晰的基准上进行建模将能提上语言建模。

我们工作的贡献主要有以下几个:

  • 我们探索、扩展并尝试在大规模LM上整合当下的一些研究;
  • 具体地,我们设计了一个Softmax loss,基于特性水平的CNN,在训练上效率很高,在准确度上与完整的Softmax一致,而完整版的要求更多维的参数;
  • 我们的研究提升了当下最著名的大规模LM任务:单一模型的 从51.3降到了30.0,同时,参数的系数减少了20;
  • 我们证明了,几个不同模型的组合能把这一任务的 perplexity 降到23.7,这是一个显著的提升。

在论文的第二部分,我们将会对语言建模中的重要概念和前人研究进行综述。第三部分,我们会提出对神经语言建模这一领域的贡献,重点在大规模递归神经网络的训练。第4和第5部分的目的是尽可能地描述我们的经验和对项目的理解,同时把我们的工作与其他相关的研究方法进行对比。

评价及讨论

Reddit、HN 和 Twitter 上的反响都挺好,不过也有人指出了这项研究的一些缺点。根据 shortscience.org 上的留言;

正如我在上文提到的那样,perplexity 从某处程度上来是一个让人困惑的指标,大的混淆(perplexity)并不反映真正的提升,而是带来楼主“夸大”效应。

这篇论文只提供了语言建模的提升,但是,LM 一般都会被嵌入到复杂的使用场景中,比如语音识别或者机器翻译。如果本论文中提供的 LM 可以分享一下与一些端到端的产品融合的结果,那会更有见解性。鉴于论文的作者在谷歌大脑团队工作,这一要求并不过分。

据我所知,本论文使用的数据库来自新闻报道,这种类型的数据比起口语数据更加规范。在实际的应用中,我们面对的通常是非正式化的数据(比如搜索引擎和语音识别)。论文中提到的最好的模型,能否适应更加实际的应用,目前依然是一个问题。再次的,对于谷歌大脑团队来说,把这一模型融合到既有的系统中进行测试,并不是什么难事。

本文分享自微信公众号 - 新智元(AI_era)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-09-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 在这里看懂算法!Google新AI工具解码神秘算法原理及过程

    虽然大多数人每天都会遇到算法,但没有多少人可以说他们真的了解AI的实际工作原理。但是,Google推出了一种新工具,希望能够帮助普通人掌握机器学习的复杂性。

    新智元
  • 【十大诀窍】开发者如何成功使用机器学习

    【作者简介】Alexander Gray,Skytree首席技术官,佐治亚理工学院计算机学院副教授,主要致力于大规模数据集的机器学习算法技术研发,1993年开始...

    新智元
  • CMU:深度学习自然语言处理,神经机器翻译与 seq2seq 模型汇总,6 大类型附部署技巧

    【新智元导读】CMU 语言技术研究所助理教授 Graham Neubig 将有关神经机器翻译和 seq2seq 各种模型的概要、重点以及部署技巧整理为一篇长达6...

    新智元
  • 少有人知的 Python "重试机制"

    为了避免由于一些网络或等其他不可控因素,而引起的功能性问题。比如在发送请求时,会因为网络不稳定,往往会有请求超时的问题。

    Python编程与实战
  • 王者对决:XLNet对比Bert!!

    【磐创AI 导读】:本文将会带大家了解XLNet在语言建模中优于BERT的原因,欢迎大家转发、留言。

    磐创AI
  • CFS调度主要代码分析二

    本节在围绕一个进程的生命周期,继续分析一个进程是如何被抢占? 如果睡眠? 如何被调度出去的?

    DragonKingZhu
  • 最新基于深度学习的语义分割技术讲解(含论文+指标+应用+经验)

    在此,要区别一下实例分割(具体可参考著名的MaskRCNN模型),实例分割常常与目标检测系统相互结合,用于检测和分割场景中同一对象的多个实例。

    于小勇
  • 微信 OCR(2):深度序列学习助力文字识别

    此篇文章属于微信OCR技术介绍系列,着重介绍如何采用深度序列学习(deep sequence learning)方法实现端到端的文本串识别并应用于微信产品。

    麻文华
  • 使用opennlp进行词性标注

    词性(Part of Speech, POS),标注是对一个词汇或一段文字进行描述的过程。这个描述被称为一个标注。

    codecraft
  • 转录组分析 | 使用Stringtie对数据进行下游处理

    StringTie 是用于 RNA-seq 的转录本组装和定量软件,StringTie 可以看做是cufflinks软件的升级版本,其功能和Cufflinks是...

    DoubleHelix

扫码关注云+社区

领取腾讯云代金券