<p style="text-align: center;"><a href="/misc/goto?guid=4958984127719761301" title="Google"><img alt="谷歌开源T2T模型库,深度学习系统进入模块化时代!" src="https://simg.open-open.com/show/1398f098be05592a1001a5275df0b684.png" /></a></p> <p>6 月 19 日,谷歌发布了 T2T(Tensor2Tensor)深度学习开源系统,这个系统的一大优点是模块化,这也就意味着系统更加灵活,适应性更强。深度学习的研究进度也会因此而加速。以下内容为雷锋网整理编辑。</p> <p>深度学习(DL)让很多技术领域都得以迅速发展,比如机器翻译,语音识别,以及物体检测。在研究社区,人们可以找到研究作者开源的代码,复制他们的结果,帮助自己做进一步深度学习研究。然而,大多数深度学习系统使用了需要耗费大量工程开发的特殊设置,可能只对特定的问题或结构起作用。这使得在新实验中运行以及进行实验结果对比变得比较困难。</p> <p>可喜的是,谷歌终于找到了解决这一问题的办法,发布了 T2T(Tensor2Tensor),一个用于在 TensorFlow 上训练深度学习模型的开源系统。T2T 方便了对各种各样的机器学习应用的模型进行创新,比如翻译,句法分析,图像说明等等。这次发布也包含数据集库和模型库,包括最近几篇论文中提到的最好模型。 </p> <p style="text-align:center"><img alt="谷歌开源T2T模型库,深度学习系统进入模块化时代!" src="https://simg.open-open.com/show/1d536aec5deba25ffd57c897ed9297de.jpg" /><br /> </p> <p style="text-align:center">在标准 WMT 英语-德语翻译任务中,各模型的 BLEU 分数(越高越好)</p> <p>作为举例,谷歌将 T2T 库用于机器翻译。如上表所示,两种不同 T2T 模型,SliceNet 和 Transformer,性能表现胜过之前业界表现最好的模型 GNMT+MoE。其中最好的 T2T 模型 Transformer,高出 GNMT 模型 3.8 分。而 GNMT 本身已经高出 MOSES 4 分(以短语翻译系统 MOSES 为最低标准)。值得注意的是,使用单块 GPU 在一天内训练就可以达到之前最好的结果,一个小型的 Transformer 模型在单 GPU 训练一天后可以得分 24.9(上图表格并没有显示)。可见使用 T2T 效果非常明显。现在所有人都可以自己用一块 GPU 来训练这个翻译模型了。Github 有操作说明。(地址见文末)</p> <p><strong>模块化多任务训练</strong></p> <p>T2T 库是用人们熟悉的 TensorFlow 工具和深度学习系统中所需的定义多个组件:如数据集,模型结构,算法,学习速率衰减方案,超参数等等开发出来的。关键是,它在所有这些组件之间执行了一个标准接口,实现了当前机器学习的最佳效果。所以你可以拿走任何一个数据集,模型,算法,或一组超参数,来执行训练并观察它的性能表现。通过使架构模块化,输入数据和预测输出之间的每一部分都是 T2T 函数。这意味着如果对模型架构有了新的想法,则不需要替换整个设置。你可以保留需要嵌入的部分,损失函数和其他所有部分。</p> <p>这就意味着 T2T 很灵活,训练不再依赖于特定的模型或数据集。甚至连比较有名的 LSTM 序列模型都可以用几十行代码来定义。此外还可以对不同领域的多个任务进行单个模型的训练。甚至还可以在所有数据集上同时运行单个模型。MultiModel 就可以这样训练并包含在 T2T 中,在很多任务上都产生了良好的效果。即使在 ImageNet(图像分类)MS COCO(图像说明)WSJ(语音识别)WMT(翻译)以及 Penn Treebank(解析语料库)联合训练也依然表现良好。这也是第一次证明了单个模型可以同时执行多个任务。</p> <p><strong>内置最佳实践</strong></p> <p>这次的首次发布也提供了脚本,用来生成大量数据集,广泛用于研究社区,一些模型和大量超参数配置。trade 的其他重要技巧在执行中表现良好。把他们全部列出来很难,如果你决定用 T2T 运行你的模型,你将得到序列的正确填充(padding)和相应的交叉熵损失,调试良好的 Adam 优化器参数,自适应批处理,同步的分布式训练,调试良好的图像数据增强,标签平滑和大量的超参数配置。</p> <p>例如,考虑把英语句子解析成语法选区树(grammatical constituency trees)的任务。这个问题已经研究了几十年才找到可靠的方法。它可以表示为一个序列到序列的问题,可以用神经网络求解,但是在过去需要调试很多次。现在运用 T2T,只需要几天就可以添加解析数据集生成器,并且调节注意力转化器模型来训练解决这个问题。令人兴奋的是,只用了一周的时间就得到了非常好的结果。</p> <p style="text-align:center"><img alt="谷歌开源T2T模型库,深度学习系统进入模块化时代!" src="https://simg.open-open.com/show/6c4b9fb9a20a6d496e95c600e6fc2a8c.jpg" /></p> <p style="text-align:center">在 WSJ 23 节的标准数据集上解析 F1 分数。只在 Penn Treebank WSJ 训练集上比较了文本中经过特殊训练过的模型。更多结果详见论文(<a href="/misc/goto?guid=4959009319414367666" rel="nofollow">https://arxiv.org/abs/1706.03762)</a></p> <p><strong>为 T2T 做贡献</strong></p> <p>除了探索现有的模型和数据集,还可以轻松地定义自己的模型,并添加自己的数据集到 T2T。谷歌相信已有的模型将很好的执行诸多 NLP 任务,所以只需添加你的数据集,也许就会得到一个有趣的结果。通过构建 T2T 模块,还可以很容易构建你自己的模型,并观察其如何执行不同任务。通过这样的方式,整个社区都可以从基线库(library of baselines)中受益,并加速深度学习研究。所以,来 Github 库,尝试一些新模型,来为 T2T 做点贡献吧!</p> <p>提及表格内模型的三篇论文(雷锋网(公众号:雷锋网)此前也做过覆盖与报道):</p> <p><a href="/misc/goto?guid=4959009319523311074" rel="nofollow">Attention Is All You Need</a></p> <p><a href="/misc/goto?guid=4959009319621445404" rel="nofollow">Depthwise Separable Convolutions for Neural Machine Translation</a></p> <p><a href="/misc/goto?guid=4959009319707662648" rel="nofollow">One Model To Learn Them All</a></p> <p>Github 操作说明:<a href="/misc/goto?guid=4959009319801201849" rel="nofollow">https://github.com/tensorflow/tensor2tensor</a></p> <p>来自: <a href="/misc/goto?guid=4959009319886540413" id="link_source2">雷锋网</a></p>