动态|谷歌开源T2T模型库,深度学习系统进入模块化时代!

AI 科技评论按:6月19日,谷歌发布了T2T(Tensor2Tensor)深度学习开源系统,这个系统的一大优点是模块化,这也就意味着系统更加灵活,适应性更强。深度学习的研究进度也会因此而加速。

深度学习(DL)让很多技术领域都得以迅速发展,比如机器翻译,语音识别,以及物体检测。在研究社区,人们可以找到研究作者开源的代码,复制他们的结果,帮助自己做进一步深度学习研究。然而,大多数深度学习系统使用了需要耗费大量工程开发的特殊设置,可能只对特定的问题或结构起作用。这使得在新实验中运行以及进行实验结果对比变得比较困难。

可喜的是,谷歌终于找到了解决这一问题的办法,发布了T2T(Tensor2Tensor),一个用于在TensorFlow上训练深度学习模型的开源系统。T2T方便了对各种各样的机器学习应用的模型进行创新,比如翻译,句法分析,图像说明等等。这次发布也包含数据集库和模型库,包括最近几篇论文中提到的最好模型。

在标准WMT英语-德语翻译任务中,各模型的BLEU分数(越高越好

作为举例,谷歌将T2T库用于机器翻译。如上表所示,两种不同T2T模型,SliceNet和Transformer,性能表现胜过之前业界表现最好的模型GNMT+MoE。其中最好的T2T模型Transformer,高出GNMT模型3.8分。而GNMT本身已经高出MOSES 4分(以短语翻译系统MOSES为最低标准)。值得注意的是,使用单块GPU在一天内训练就可以达到之前最好的结果,一个小型的Transformer模型在单GPU训练一天后可以得分24.9(上图表格并没有显示)。可见使用T2T效果非常明显。现在所有人都可以自己用一块GPU来训练这个翻译模型了。Github有操作说明。(地址见文末)

模块化多任务训练

T2T库是用人们熟悉的TensorFlow工具和深度学习系统中所需的定义多个组件:如数据集,模型结构,算法,学习速率衰减方案,超参数等等开发出来的。关键是,它在所有这些组件之间执行了一个标准接口,实现了当前机器学习的最佳效果。所以你可以拿走任何一个数据集,模型,算法,或一组超参数,来执行训练并观察它的性能表现。通过使架构模块化,输入数据和预测输出之间的每一部分都是T2T函数。这意味着如果对模型架构有了新的想法,则不需要替换整个设置。你可以保留需要嵌入的部分,损失函数和其他所有部分。

这就意味着T2T很灵活,训练不再依赖于特定的模型或数据集。甚至连比较有名的LSTM序列模型都可以用几十行代码来定义。此外还可以对不同领域的多个任务进行单个模型的训练。甚至还可以在所有数据集上同时运行单个模型。MultiModel就可以这样训练并包含在T2T中,在很多任务上都产生了良好的效果。即使在ImageNet(图像分类)MS COCO(图像说明)WSJ(语音识别)WMT(翻译)以及Penn Treebank(解析语料库)联合训练也依然表现良好。这也是第一次证明了单个模型可以同时执行多个任务。

内置最佳实践

这次的首次发布也提供了脚本,用来生成大量数据集,广泛用于研究社区,一些模型和大量超参数配置。trade的其他重要技巧在执行中表现良好。把他们全部列出来很难,如果你决定用T2T运行你的模型,你将得到序列的正确填充(padding)和相应的交叉熵损失,调试良好的Adam优化器参数,自适应批处理,同步的分布式训练,调试良好的图像数据增强,标签平滑和大量的超参数配置。

例如,考虑把英语句子解析成语法选区树(grammatical constituency trees)的任务。这个问题已经研究了几十年才找到可靠的方法。它可以表示为一个序列到序列的问题,可以用神经网络求解,但是在过去需要调试很多次。现在运用T2T,只需要几天就可以添加解析数据集生成器,并且调节注意力转化器模型来训练解决这个问题。令人兴奋的是,只用了一周的时间就得到了非常好的结果。

在WSJ 23节的标准数据集上解析F1分数。只在Penn Treebank WSJ训练集上比较了文本中经过特殊训练过的模型。更多结果详见论文(https://arxiv.org/abs/1706.03762)

为T2T做贡献

除了探索现有的模型和数据集,还可以轻松地定义自己的模型,并添加自己的数据集到T2T。谷歌相信已有的模型将很好的执行诸多NLP任务,所以只需添加你的数据集,也许就会得到一个有趣的结果。通过构建T2T模块,还可以很容易构建你自己的模型,并观察其如何执行不同任务。通过这样的方式,整个社区都可以从基线库(library of baselines)中受益,并加速深度学习研究。所以,来Github库,尝试一些新模型,来为T2T做点贡献吧!

提及表格内模型的三篇论文(AI科技评论此前也有做过覆盖与报道):

Attention Is All You Need - AI科技评论

Depthwise Separable Convolutions for Neural Machine Translation

One Model To Learn Them All

Github操作说明:https://github.com/tensorflow/tensor2tensor

via Google;AI 科技评论整理编译

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2017-06-20

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏新智元

【实战】利用卷积自编码器实现图片降噪(代码开源)

【新智元导读】本文讲解如何利用一个简单的自编码器实战代码,实现两个Demo。第一部分实现一个简单的input-hidden-output结的自编码器,第二部分将...

3637
来自专栏自然语言处理

谈谈学习模型的评估3

信息检索中的评价经常使用:精确率(precision)和召回率(recall)的概念,而且在自然语言处理模型评价中取得良好的效果。

642
来自专栏机器之心

不同的领域、框架,这是一份超全的深度学习模型GitHub集合

深度学习近来是机器学习最流行的子领域,因为针对高维数据拥有强大的建模能力,它在很多不同的任务与领域都绽放了夺目的光彩,例如计算机视觉、自然语言处理与智能体学习等...

850
来自专栏PPV课数据科学社区

【V课堂】数据挖掘知识脉络与资源整理(五)–缺失值处理

简介: 缺失值是指粗糙数据中由于缺少信息而造成的数据的聚类,分组,删失或截断。它指的是现有数据集中某个或某些属性的值是不完全的。数据挖掘所面对的数据不是特地为某...

2778
来自专栏CreateAMind

Deep Learning Book 中文第十六章 结构化概率模型

非结构化建模的挑战;有向图、无向图、配分函数、基于能量的模型、分离和d-分离、因子图;从图模型中采样;学习依赖性关系;近似推断;结构化概率模型的深度学习方法;

311
来自专栏数据派THU

教你在Python中用Scikit生成测试数据集(附代码、学习资料)

原文标题:How to Generate Test Datasets in Python with Scikit-learn 作者:Jason Brownlee...

3767
来自专栏机器之心

一个模型库学习所有:谷歌开源模块化深度学习系统Tensor2Tensor

选自Google.research 机器之心编译 参与:黄小天、李泽南 在谷歌提交热点论文《Attention Is All You Need》和《One Mo...

3158
来自专栏专知

【干货】Python机器学习机器学习项目实战3——模型解释与结果分析(附代码)

1441
来自专栏技术随笔

[译] A Neural Algorithm of Artistic Style

3457
来自专栏IT派

不同的领域、框架,这是一份超全的深度学习模型GitHub集合

深度学习近来是机器学习最流行的子领域,因为针对高维数据拥有强大的建模能力,它在很多不同的任务与领域都绽放了夺目的光彩,例如计算机视觉、自然语言处理与智能体学习等...

663

扫描关注云+社区