0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TensorFlow2.0中创建了一个Transformer模型包,可用于重新构建GPT-2、 BERT和XLNet

DPVg_AI_era 来源:lq 2019-09-13 04:55 次阅读

今日Reddit最热帖。博主在TensorFlow2.0中创建了一个Transformer模型包,可用于重新构建GPT-2、 BERT和XLNet。这个项目的目标是创建Transformer模型的所有核心部分,这样就可以重用它们来创建更新的、更多的SOTA模型,比如BERT和XLNet。

Transformer是谷歌在2017年提出的一个革新性的NLP框架,相信大家对那篇经典论文吸睛的标题仍印象深刻:Attention Is All You Need。

自那以来,业内人士表示,在机器翻译领域,Transformer 已经几乎全面取代 RNN。总之 Transformer 确实是一个非常有效且应用广泛的结构,应该可以算是自 seq2seq 之后又一次 “革命”。

如今,谷歌手上握有两个强大的AI战力:TensorFlow 2.0和Transformer。如果能将两大战力合体,就能制造出更强大的AI武器。

想到不如做到。于是Zachary Bloss(就是下图这位带着淡淡忧伤的背影),一位美国最大的非银行贷款机构之一Quicken Loans的数据分析师,花了一点时间,在TF2中构建一个可扩展的transformer模型。

该项目的目标是创建"Attention is all you need"论文中所讨论的transformer模型的所有核心部分,以便可以重复使用它们来创建更前卫、更多像BERT和XLNet一样的SOTA模型,

Zachary已经将做好的模型打包放在了GitHub上,而且这个包抽象度很高,只要是相关的类都可以随意使用。

只要你野心够大,完全可以用这个包来折腾Encoder和Decoder类去创建其他模型,比如BERT,Transformer-XL,GPT,GPT-2甚至XLNet都没问题,你只需要调整masking类即可。

那么我们看看具体应该如何安装和使用。

如何安装

前期准备

进行安装

强烈建议为项目创建一个新的虚拟环境!因为此软件包需要Tensorflow 2.0,你懂的。

接下来通过安装Tensorflow 2.0的gpu版本来使用GPU:

如何使用

Repo里有一个(example.py)文件。这是一个示例文件,可以用来了解此模型的工作原理。该模型以其最基本的形式,以numpy数组作为输入,并返回一个numpy数组作为输出。

此模型的常见用例是语言翻译。一般来说,训练这个模型的时候,功能列是原始语言,目标列是要翻译的语言。

生成输入/输出

这里提供了一些辅助函数,但基本上需要生成两个Tensorflow标记生成器以及一个带有功能和目标列的pandas DataFrame

可以利用DataProcess类中的辅助函数从DataFrame生成TensorDatasets,以及执行train_test_split

学习率/优化器

当设置在具有急剧倾斜然后指数衰减的自定义学习速率时,transformer模型表现优异

这项工作已在CustomSchedule()类中实现。随意玩热身步骤,以完成日程安排!

定义transformer模型

创建HPARAMS,定义模型的大小。

训练

定义Trainer类后,只需要在训练器对象上调用train()方法。

这将返回训练的准确性和损失

Attention is all you need

从实践中学习,才能对理论理解的更加透彻。在通过上述方式实操后,我们回过头再看Transformer的论文,可能就会觉得更加清晰了。

早在2年前,谷歌大脑、谷歌研究院和多伦多大学学者合作的一项新研究称,使用一种完全基于注意力机制(Attention)的简单网络架构 Transformer 用于机器翻译,效果超越了当下所有公开发表的机器翻译模型,包括集成模型。

值得一提的是,该研究没有使用任何循环或卷积神经网络,全部依赖注意力机制。正如文章的标题所说:“注意力机制是你需要的全部(Attention Is All You Need)。

一直以来,在序列建模和序列转导问题中,比如涉及语言建模和机器翻译的任务,循环神经网络(RNN),尤其是长短时记忆(LSTM)及门循环网络,都被视为最先进的方法。研究人员也想方设法拓展循环语言建模和编码器-解码器架构。

其中,注意力机制自提出以来便成为序列建模和转导模型不可或缺的一部分,因为注意力机制能够在不关注输入输出序列之间距离的情况下,对依存(dependence)建模。只有在极少数的案例中,作者将注意力机制与一个循环网络作为整个网络中相等的结构,并行放置。

在谷歌大脑最新公开的一项研究中,研究人员提出了一个全新的架构 Transformer,完全依赖注意力机制从输入和输出中提取全局依赖,不使用任何循环网络。

谷歌大脑的研究人员表示,Transformer 能够显著提高并行效率,仅在 8 颗 P100 GPU 上训练 12 小时就能达到当前最高性能。

论文作者以 Extended Neural GPU、ByteNet 和 ConvS2S 为例,这些结构都使用卷积神经网络(CNN)作为基本的模块,并行计算所有输入和输出位置的隐藏表征,从而减少序列计算的计算量。在这些模型中,将来自两个任意输入或输出位置的信号相关联的运算次数会根据位置之间的距离增加而增加,对于 ConvS2S 这种增加是线性的,而对于 ByteNet 则是呈对数增长的。

这让学习距离较远的位置之间的依赖难度增大。在 Transformer 当中,学习位置之间的依赖被减少了,所需的运算次数数量是固定的。

这需要使用自注意力(Self-attention),或内部注意力(intra-attention),这是一种与单个序列中不同位置有关的注意力机制,可以计算出序列的表征。

以往研究表明,自注意力已被成功用于阅读理解、抽象概括等多种任务。

不过,谷歌大脑的研究人员表示,据他们所知,Transformer 是第一个完全依赖自注意力的转导模型,不使用 RNN 或 CNN 计算输入和输出的表征。

摘要

当前主流的序列转导(transduction)模型都是基于编码器-解码器配置中复杂的循环或卷积神经网络。性能最好的模型还通过注意力机制将编码器和解码器连接起来。

提出了一种简单的网络架构——Transformer,完全基于注意力机制,没有使用任何循环或卷积神经网络。两项机器翻译任务实验表明,这些模型质量更好、可并行化程度更高,并且能大大减少训练时间。

该模型在 WMT 2014 英德翻译任务上实现了 28.4 的 BLEU 得分,在现有最佳成绩上取得了提高,其中使用集成方法,超过了现有最佳成绩 2 个 BLEU 得分。

在 WMT 2014 英法翻译任务中,该模型在单一模型 BLEU 得分上创下了当前最高分 41.0,而训练时间是在 8 颗 GPU 上训练 3.5 天,相比现有文献中的最佳模型,只是其训练成本的很小一部分。

研究还发现,Transformer 泛化性能很好,能够成功应用于其他任务,比如在拥有大规模和有限训练数据的情况下,解析英语成分句法解析(English constituency parsing)。

模型架构

大多数性能较好的神经序列转导模型都使用了编码器-解码器的结构。Transformer 也借鉴了这一点,并且在编码器-解码器上使用了全连接层。

编码器:由 6 个完全相同的层堆叠而成,每个层有 2 个子层。在每个子层后面会跟一个残差连接和层正则化(layer normalization)。第一部分由一个多头(multi-head)自注意力机制,第二部分则是一个位置敏感的全连接前馈网络。

解码器:解码器也由 6 个完全相同的层堆叠而成,不同的是这里每层有 3 个子层,第 3 个子层负责处理编码器输出的多头注意力机制。解码器的子层后面也跟了残差连接和层正则化。解码器的自注意力子层也做了相应修改。

(图1)Transformer的架构示意图

(图2)具体采用的注意力机制。左边是 Scaled Dot-Roduct Attention,右边是多头注意力(Multi-Head Attention),由几个并行的层组成。

在编码器-解码器层当中,query 来自上一个解码层,编码器输出值(value)及 memory key。这样,解码器中所有位置都能照顾到输入序列中的所有位置。

编码器含有自注意力层。在自注意力层中,所有的 key、value 和 query 都来自同一个地方,那就是编码器的上一层输出。编码器中的每一个位置都能照顾到编码器上一层中所有的位置。

同样,解码器中的自注意力层让解码器中所有位置都能被注意到,包括那个位置本身。

创造了BLEU的最高分28.4

在WMT2014 英语到德语的翻译任务中,大型transformer在性能上优于此前在有记录的所有模型(包括集成的模型),并且创造了BLEU的最高分28.4。

模型的配置详情见表3下的清单。训练过程为3.5天,在8颗P100 GPU上运行。即便是最基础的模型,也超越了此前所有发布的和集成的模型,但是训练的成本却只是此前最好的一批模型中的一小部分。

表2:Transformer 在英语到德语和英语到法语新闻测试2014数据集上,比此前最好的模型获得的BLEU分数都要高。

表2 总结了结果,并与其他模型在翻译质量和训练成本上进行对比,评估了被用于训练模型的浮点操作数量,用来乘以训练时间,使用的GPU的数量,并评估了每一颗GPU中,可持续的单精度浮点承载量。

表4 Transformer 在英语成分句法解析任务上也取得了较好的效果。(基于WSJ Section 23 数据库)

为了测试Transformer能否用于完成其他任务,研究人员做了一个在英语成分句法解析上的实验。这一任务的难度在于:输出受到结构限制的强烈支配,并且比输入要长得多得多。另外,RNN序列到序列的模型还没能在小数据领域获得最好的结果。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器翻译
    +关注

    关注

    0

    文章

    138

    浏览量

    14793
  • tensorflow
    +关注

    关注

    13

    文章

    313

    浏览量

    60240

原文标题:通吃BERT、GPT-2,用TF 2.0实现谷歌破世界纪录的机器翻译模型Transformer

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    在ModustoolBox创建了项目,出现了编译错误的原因?

    我在 ModustoolBox 创建了项目,但是出现了编译错误,如图所示,你知道原因吗?
    发表于 01-23 08:13

    如何使用TensorFlow构建机器学习模型

    在这篇文章中,我将逐步讲解如何使用 TensorFlow 创建一个简单的机器学习模型
    的头像 发表于 01-08 09:25 315次阅读
    如何使用<b class='flag-5'>TensorFlow</b><b class='flag-5'>构建</b>机器学习<b class='flag-5'>模型</b>

    大语言模型背后的Transformer,与CNN和RNN有何不同

    for Language Understanding》,BERT模型横空出世,并横扫NLP领域11项任务的最佳成绩。而在BERT中发挥重要作用的结构就是Transformer,之后又
    的头像 发表于 12-25 08:36 1508次阅读
    大语言<b class='flag-5'>模型</b>背后的<b class='flag-5'>Transformer</b>,与CNN和RNN有何不同

    模型数据集:构建、挑战与未来趋势

    随着深度学习技术的快速发展,大型预训练模型GPT-4、BERT等在各个领域取得了显著的成功。这些大模型背后的关键之一是庞大的数据集,为模型
    的头像 发表于 12-06 15:28 598次阅读

    在multisim利用双运放ADA4096-2构建了低通滤波器进行仿真,引脚如何分配?

    我在multisim利用双运放ADA4096-2构建了低通滤波器,并进行了仿真,之后感觉ADA4096的带宽只有500KHZ,因此想换
    发表于 11-27 06:44

    500篇论文!最全代码大模型综述

    经典 Transformer 使用不可学习的余弦编码,加在模型底层的词向量输入上。GPTBERT将其改为可学习的绝对位置编码,并沿用到了RoBERTa、BART、
    的头像 发表于 11-17 17:31 593次阅读

    深度学习模型部署与优化:策略与实践;L40S与A100、H100的对比分析

    深度学习、机器学习、生成式AI、深度神经网络、抽象学习、Seq2Seq、VAE、GAN、GPTBERT、预训练语言模型Transformer、ChatGPT、GenAI、多模态大
    的头像 发表于 09-22 14:13 648次阅读
    深度学习<b class='flag-5'>模型</b>部署与优化:策略与实践;L40S与A100、H100的对比分析

    如何用BMlang搭建Tensorflow模型

    在EVM1684上如何用BMlang搭建Tensorflow模型,求助官方demo。
    发表于 09-18 07:00

    BEV人工智能transformer

    学习语言的模式和规律,能够对文本进行高效、准确的处理和转换。在本文中,我们将对基本的BEV(Bert、ELMo、Transformer-XL、GPT-2)四大人工智能Transformers算法进行
    的头像 发表于 08-22 15:59 601次阅读

    深度学习框架tensorflow介绍

    深度学习框架tensorflow介绍 深度学习框架TensorFlow简介 深度学习框架TensorFlow由Google开发,是一个开放源代码的深度学习框架,可用于
    的头像 发表于 08-17 16:11 1362次阅读

    chatGPT和GPT4有什么区别

    chatGPT和GPT4有什么区别 GPT(Generative Pre-trained Transformer)系列模型由OpenAI公司开发,是一组
    的头像 发表于 08-09 15:18 1749次阅读

    如何计算transformer模型的参数量

    参数规模大,训练数据规模大。以GPT3为例,GPT3的参数量为1750亿,训练数据量达到了570GB。进而,训练大规模语言模型面临两个主要挑战:显存效率和计算效率。 现在业界的大语言模型
    的头像 发表于 07-10 09:13 6898次阅读
    如何计算<b class='flag-5'>transformer</b><b class='flag-5'>模型</b>的参数量

    2D Transformer 可以帮助3D表示学习吗?

    预训练的2D图像或语言Transformer:作为基础Transformer模型,具有丰富的特征表示能力。作者选择了先进的2D Transformer
    的头像 发表于 07-03 10:59 430次阅读
    2D <b class='flag-5'>Transformer</b> 可以帮助3D表示学习吗?

    Transformer结构及其应用详解

    本文首先详细介绍Transformer的基本结构,然后再通过GPTBERT、MT-DNN以及GPT-2等基于Transformer的知名应
    的头像 发表于 06-08 09:56 1431次阅读
    <b class='flag-5'>Transformer</b>结构及其应用详解

    AI大语言模型的原理、演进及算力测算专题报告

    GPT是基于Transformer架构的大语言模型,近年迭代演进迅速。构建语言模型是自然语言处理中最基本和最重要的任务之一。
    的头像 发表于 04-28 10:01 625次阅读
    AI大语言<b class='flag-5'>模型</b>的原理、演进及算力测算专题报告