TR1 - Transformer起源与发展

  • 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
  • 🍖 原作者:K同学啊 | 接辅导、项目定制

1. Transformer的起源与发展

2017年Google在《Attention Is All You Need》中提出了Transformer结构用于序列标注,在翻译任务上超过了之前最优秀的循环神经网络模型。

Fast AI 在《Universal Language Model Fine-tuning for Text Classification》中提出了名库ULMFiT的迁移学习方法,将在大规模数据上预训练好的LSTM模型迁移到文本分类,只用很少标注就达到了最佳性能。

在Transformer结构发布后,出现了两个使用Transformer结构的著名模型:

  • GPT(the Generative Pretrained Transformer)
  • BERT (Bidirectional Encoder Representations from Tranformers)

通过Transformer结构与无监督学习的相合,不用在人头开始训练模型,几乎所有的NLP任务都远超先前的最强基准。

使用Transformer结构的模型三到处分为三类:

  • 纯Encoder模型:例如BERT,又称自编码(auto-encoding)Transformer模型
  • 纯Decoder模型:例如GPT,又称自回归(auto-regressive)Transformer模型
  • Encoder-Decoder模型:例如BART、T5,又称Seq2Seq(sequence-to-sequece)Transformer模型

2. 什么是Transformer

什么是自监督学习

自监督学习(Self-supervised Learning)是一种机器学习方法,其特点在于从数据本身自动生成标签或监督信号,无需人工标注。简单来说就是让机器利用数据本身的结构或特征来进行学习,从而不依赖于外部标签或监督信号。

自监督学习的优点

  • 数据利用率高:由于不需要人工标注标签,可以充分利用未标记数据,从而大大扩展了可用于训练的数据集
  • 泛化能力强:自监督学习训练出的模型通常具有良好的泛化能力,因为它们学习到了数据中的一般性特征,而不是依赖于特定的标签
  • 无监督表示学习:自监督学习可以作为无监督表示学习的一种方法,通过学习数据的表示,可以为后续的监督学习任务提供更好的初始化或者特征提取器

语言建模

常见的Transformer模型一般通过两种常用的预训练方法来预训练

  • 因果语言建模(Causal Language Modeling):基于句子的前N个词来预测下一个词,因为输出依赖于过去和当前的输入
  • 遮盖语言建模(Masked Language Modeling):基于上下文(周围的词语)来预测句子中被遮盖掉的词语(Masked Word)
    这些语言模型虽然 可以对训练过的语言产生统计意义上的理解,但是完成特定任务的效果往往不好,因此通常还会采用迁移学习(Transfer Learning)方法,使用特定任务的标注语料以有监督学习的方法对预训练模型参数进行微调,以取得更好的效果。

大语言模型

通常来说,目前的Transformer模型的参数量和预训练数据都非常大,而且呈现出不断增长的趋势

迁移学习

预训练:从头开始训练模型,所有的模型权重都被随机初始化,在没有任何先验知识的情况下训练
预训练
因此预训练需要海量的数据和高昂的时间与经济成本,大部分情况下我们不会选择预训练,而是将别人预训练好的模型权重 通过迁移学习应用到自己的模型中,对自己的任务数据集进行“二次训练”,通过微调参数使模型适用于新任务。

迁移学习的好处:

  • 减少数据需求:少量的数据集就可以对预训练模型进行微调
  • 加速训练过程:使用预训练模型参数做初始化权重 ,可以加速训练,因为模型已经学习到一些通用的特征或者表示
  • 提高模型性能:在预训练时学习到的一些通用特征,对目标任务可能也是有用的,因此可以通过迁移学习提高目标任务性能
  • 解决特定领域问题:有些特定领域数据获取非常困难,迁移学习可以帮助知识从易于获取数据的领域迁移到特定领域
  • 模型泛化能力提升:通过在不同任务中学习的出的通用特征,会具有更好的泛化能力

因此在绝大多数情况下,我们都应该找一个接近我们任务的预训练模型,然后微调它

3. Transformer结构

标准的Transformer模型主要是由两个模块组成:

  • Encoder:负责理解输入文本,为每个输入构造对应的语义表示(语义特征)
  • Decoder:负责生成输出,使用Encoder输出的语义表示结合其他输入来生成目标序列

两个模块可以根据任务需要单独使用:

  • 纯Encode模型:适用于只需要理解输入语义的任务,如句子分类、命名实体识别
  • 纯Decoder模型:适用于生成式任务,如文本生成
  • Encoder-Decoder模型或Seq2Seq模型:适用于需要基于输入的生成式任务,如翻译和摘要

注意力层

在Transformer中,注意力层(Attention Layer)是其核心组件之一。注意力机制允许模型在处理输入序列的每个元素时,对其他元素分配不同的注意力权重,从而能够更灵活地捕捉序列中的关联信息。

主要作用有:

  • 建立全局联系:注意力机制允许模型在处理序列中的每个位置时,关注整个输入序列的不同部分。使模型在预测或生成输出时考虑整个上下文,而不仅仅时当前位置的信息
  • 捕捉长距离依赖关系:传统的循环神经网络(RNN)在处理长序列时可能会面临梯度消失或梯度爆炸问题。通过引入注意力机制,Transformer可以更好的捕捉序列中的长距离依赖关系,无需受限于时间步的大小或固定的窗口大小
  • 并行计算:注意力机制允许模型并行计算每个位置的注意力权重,提高了计算效率。使Transformer模型在训练和推理时能够更快地处理大规模的序列数据
  • 自适应权重:注意力权重是通过学习得到的,它会自动调整以反映输入序列中不同位置的重要性,这种自适应性使模型能够更好地适应不同任务和输入分布

2. 原始结构

原始结构如下,左侧为Encoder,右侧为Decoder
原始结构

3. 分支流派

Encoder分支

纯Encoder模型只使用Transformer模型中的Encoder模块,也被称为自编码(self-encoding)模型。在每个阶段,注意力层都可以访问到原始输入句子中的所有词语,即具有“双向(Bi-directional)”注意力

纯Encoder模型通常使用遮盖语言建模来破坏给定的句子,然后让模型进行重构来进行预训练,最适合处理那些需要理解整个句子主义的任务,如:分类、命名实体识别、抽取式问答等。

纯Encoder有:

  • BERT:是第一个基于Transformer结构的纯Encoder模型,在提出时横扫了整个NLP界,在流行的GLUE基准上超过了当时所有的最强模型。通过预测文本中被遮盖的词语和判断一个文本是否跟随着另一个来进行预训练,前一个任务被称为遮盖语言建模(Masked Language Modeling,MLM)后一个任务被称为下句预测(Next Sentence Prediction, NSP)
  • DistilBERT:通过预训练期间使用知识蒸馏( knowledge distillation)技术,DistilBERT在内存占用减少40%,计算速度提高60%的情况下,依然可以保持原模型97%的性能
  • RoBERTa:在BERT之后一项研究表明,修改预训练方案可以进一步提高模型的性能。RoBERT在更多的数据集上,以更大批次训练了更长时间,并且放弃了NSP任务。与BERT模型相比,显著地提高了模型的性能
  • XLM:跨语言语言模型(XLM)探索了构建多语言模型的多个预训练目标,包括来自GPT的自回归语言建模和来自BERT的MLM,还将MLM拓展到多语言输入,提出了翻译语言建模(Translation Language Modeling,TLM)。XLM在多个语言NLU基准和翻译任务上都取得了最好的性能
  • XLM-RoBERTa:跟随XLM和RoBERTa,XLM-R通过升级训练数据来改进多语言预训练。其基于Common Crawl创建了一个2.5TB的语料,然后运用MLM训练编码器,由于没有平行对照文本,它移除了XLM的TLM建模方式。最终,该模型大幅超越了XLM和多语言BERT变体
  • ALBERT:通过三处变化使Encoder架构更高效。首先将词嵌入维度与隐藏维度解耦以减少模型参数;其次所有模型层共享参数;最后将NSP任务替换为句子排序预测(判断句子顺序是否被交换)。这些变换使可以用更少的参数训练更大的模型,并在NLU任务上取得了优异的性能
  • ELECTRA:MLM在每个训练步骤中只有被遮盖掉的词语表示会得到更新。ELECTRA使用了一种双模型方法来解决这个问题:第一个模型继续按标准的MLM工作;第二个模型(鉴别器)则预测第一个模型的输出中哪些词语是被遮盖的,这使得训练的效率提高了30倍。下游任务使用时,鉴别器也要参与微调。
  • DeBERTa:DeBERTa模型引入了两处架构变化 。首先将词语内容与相对位置分离,使自注意层可以更好地建模邻近词语对的依赖关系;此外在解码头的softmax层之前添加了绝对位置嵌入。DeBERT是第一个在SuperGLUE基准上击败人类的模型

Decoder分支

纯Decoder模型只使用了Transformer模型中的Decoder模块。在每个阶段,对于给定的词语,注意力只能访问句子中位于它之前的词语,即只能能迭代地基于已经生成的词语来逐个预测后面的词语,因此也被称为自回归(auto-agressive)模型

纯Decoder模型预训练的任务通常是预测下一个词语。适合处理那些涉及文本生成的任务。纯Decoder模型的探索很大程序上是由OpenAI带头进行的。通过不断使用更大的数据集进行预训练,以及将模型的规模扩大,纯Decoder模型的性能也在不断提高

纯Decoder模型有:

  • GPT:结合了Transformer Decoder架构和迁移,通过根据上下文预测下一个单词的预训练任务,在BookCorpus数据集上进行了预训练。GPT模型在分类等下游任务上取得了很好的效果
  • GPT-2:受简单且可扩展的预训练方法的启发,OpenAI通过扩大原始模型和训练集创造了GPT-2,它能够生成篇幅较长且语义连贯的文本
  • CTRL:GPT-2虽然可以根据模板(prompt)续写文本,但是几乎无法控制生成序列的风格。条件Transformer语言模型(Conditional Transformer Language,CTRL)通过在序列开头添加特殊的“控制符”以控制生成文本的风格,这样只需要调整控制符就可以生成多样化的文本
  • GPT-3:将GPT-2进一步放大100倍,GPT-3具有1750亿个参数,除了能生成令人印象深刻的真实篇章外,还展示了小样本学习(few-shot learning)的能力。该模型目前没有开源
  • GPT-Neo/GPT-J-6B:由于GPT-3没有开源,一些旨在重新创建和发布GPT-3规模模型的研究人员组成了EleutherAI,训练出了类似GPT的GPT-Neo和GPT-J-6B。当前公布的模型具有1.3,2.7,60亿个参数,在性能上可以媲美较小版本的GPT-3模型

Encoder-Decoder分支

Encoder-Decoder模型也叫Seq2Seq模型。同时使用了Transformer架构的两个模块。在每个阶段,Encoder注意层都可以访问初始输入句子中的所有单词,而Decoder的注意力层只能访问输入中给定词语之前的词语

Encoder-Decoder模型可以使用纯Encoder模型和纯Decoder模型的目的来完成训练,但是通常会包含一些更复杂的任务。如:T5通过随机遮盖掉输入中的文本片段进行预训练,训练目标则是预测出被遮盖掉的文本。Encoder-Decoder模型适合处理那些需要给定输入来生成新文本的任务,例如:自动摘要、翻译、生成式问答

Encoder-Decoder模型有:

  • T5:将所有的NLU和NLG任务都转换为Seq2Seq形式统一解决(如:文本分类就是将文本送入Encoder,然后Decoder生成文本形式的标签)。T5通过MLM及将所有的SuperGLUE任务转换为Seq2Seq任务来进行预训练。最终具有110亿参数的大版本T5在多个基准上取得了最优性能
  • BART:同时结合了BERT和GPT的预训练过程。将输入句子通过遮盖词语、打乱句子顺序、删除词语、文档旋转等方式破坏后传给Encoder编码,然后要求Decoder能够重构出原始文本。这使得模型可以灵活地用于NLU或NLG任务,并且在两者上都实现了最优性能
  • M2M-100:语言对之间可能存在共享知识可以用来处理小众语言之间的翻译。M2M-100是第一个可以在100种语言之间进行翻译的模型,并且对小众的语言也能生成高质量翻译。该模型使用特殊的前缀标记来指示源语言和目标语言
  • BigBird:由于注意力机制的内存要求,Transformer模型只能处理一定长度的文本。BigBird通过使用线性扩展的稀疏注意力形式,将可处理的文本长度从大多数据模型的512扩展到4096,这对于处理文本摘要等需要捕捉长距离依赖的任务特别有用

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

simulink里枚举量的使用--在m文件中创建枚举量实践操作(推荐)

本文将介绍一种非常重要的概念,枚举量,以及它在simulink状态机中的使用,并且给出模型,方便大家学习。 枚举量:实际上是用一个名字表示了一个变量,能够比较方便的表示标志信息 A.简单举例: 1&a…

“低代码+平台”:驱动企业数字化转型与创新的新引擎

“低代码平台”作为一种新兴的软件开发范式,正逐渐成为企业快速响应市场变化、优化业务流程、提升数字化水平的重要手段。它的价值在于,将传统软件开发的复杂性大大降低,赋予了非技术人员或轻量级开发者快速构建应用的能力,并能灵…

docker 哲学 - 网络桥接器、容器网络接口 、容器间的通信方式

1、解释 docker0 veth eth 2、vethXX 和 ethXX 是肯定一一对应吗 比如 eth1 对应 veth1 3、如果 A容器使用 默认创建方式 。定义他内部网络为 eth0,容器B使用 --network 连上 已创建的网络 172.89.2.1 。此时假设 B的 ip是 172.89.2.2 ,容器网络接口是 e…

【蓝桥杯嵌入式】四、各种外设驱动(十一)ADC(1):软件触发与定时器触发

温馨提示:本文不会重复之前提到的内容,如需查看,请参考附录 【蓝桥杯嵌入式】附录 目录 重点提炼: 一、需求分析 1、需要的外设资源分析: 2、外设具体分析: 比赛时ADC可能需要配置的部分:…

视频批量爬虫下载工具|可导出视频分享链接|抖音视频提取软件

便捷的视频批量爬虫软件操作指南 抖音视频下载界面图解 主要功能: 关键词批量提取视频和单独视频提取,提取后下载功能。 功能解析: 1. 关键词批量采集视频的解析 对特定关键词进行搜索和视频提取,例如输入“汽车配件”&#x…

JVM面试篇

面试篇就是复习前面学的 什么是JVM 1.定义:JVM指的是Java虚拟机,本质是一个运行在计算机上的程序 2.作用:为了支持Java中Write Once ,Run Anywhere 编写一次 到处运行的跨平台特性 功能: 1.解释和运行 2.内存管理…

XSKY 智能存储,助力“数据要素 X”先进制造

3 月 21-22 日,主题为“突破 智行”的 IMC2024 第七届中国智造数字科技峰会在重庆召开。作为在先进制造领域拥有领先存储解决方案以及众多应用实践的企业,星辰天合受邀参加了此次峰会并荣获大会颁发的“最佳存储解决方案奖”。同时,星辰天合先…

Django日志(三)

内置TimedRotatingFileHandler 按时间自动切分的log文件,文件后缀 %Y-%m-%d_%H-%M-%S , 初始化参数: 注意 发送邮件的邮箱,开启SMTP服务 filename when=h 时间间隔类型,不区分大小写 S:秒 M:分钟 H:小时 D:天 W0-W6:星期几(0 = 星期一) midnight:如果atTime未指定,…

Swift知识点(二)

17. 字面量协议、模式匹配、条件编译 字面量(Literal) var age 10 var isRed false var name "Jack"上面代码中:10、false、"Jack"就是字面量 可以看到,初始化过程很简单,直接赋值即可 Swif…

Java微服务分布式事务框架seata的TCC模式

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 往期热门专栏回顾 专栏…

蓝桥杯 EDA 组 2023模拟+真题原理图解析

本文解析了标题内的原理图蓝桥杯EDA组真题,2021-2022 省赛真题/模拟题在上一篇文中。本文中重复或者是简单的电路节约篇幅不在赘述。 其中需要补充和计算原理图的题目解析都放在最下面 一、2023 年第十四届省赛模拟题1 1.1 Type-C 接口电路 通过 CH340N 将数据转化为…

List系列集合:ArrayList、LinkedList --java学习笔记

List系列集合 特点:有序、可重复、有索引 ArrayList:有序、可重复、有索引LinkedList:有序、可重复、有索引 List集合的特有方法 List集合因为支持索引,所以多了很多与索引相关的方法,当然,Collection的…

Visual Studio 插件 AnAPI++ for VS 2022

Anmial API abbreviation AnAPIis an automatically generated WebAPI project that has encapsulated Jwt Oauth2 token authentication, SqlSugar, Swagger, Nlog, Cross domain technologies, and supports Net6 and above versions Anmial API缩写AnAPI是一个自动生成的Web…

pytest简介以及命令行执行

pytest简介以及安装 pytest简介导入第三方库修改工具类 pytest命令方式执行函数执行pytest中的参数详解 pytest简介 pytest有很多强大的插件 pytest-html (生成html格式的自动化测试报告) pytest-xdist (测试用例分布式执行,多cpu…

如何在 Odoo 17 中创建进度条

Odoo 提供各种字段小部件,例如单选按钮、浮点数、百分比、颜色选择器、复选框、状态栏和 URL。通过使用不同的渲染模板,我们可以使用小部件修改视图。它还帮助我们根据自己的需求进行设计,从而简化、加速、扩展和提高开发效率。在本博客中&am…

三分钟教会你水果音乐编曲软件 FL Studio v21.2.3 中文免费版安装方法

随着数字音乐制作的发展,音乐编曲软件已经成为音乐制作人和爱好者不可或缺的工具。FL Studio v21.2.3是一款功能强大的水果音乐编曲软件,它具有直观的界面,易于学习和使用。本文将介绍FL Studio v21.2.3的特点和优势,以及它在音乐…

cloudflare 应用例子几则

Cloudflare(以下简称 CF) 堪称互联网活菩萨,造就一大批高质量的互联网基础技术服务,更难得的是,几乎所有的服务都有对应的免费的套餐,而且出手大方,基本上有足够的容量或请求次数。 CDN CF 最…

Amazon Aurora Limitless Database :数据库管理的全新境界

在当今数亿用户、PB 级数据和数百万交易的业务环境中,数据库管理面临着巨大的挑战。传统数据库扩展的繁琐性和耗时性使得许多组织需要花费数月甚至数年的时间来构建自定义软件以满足其极端的工在当今数亿用户、PB 级数据和数百万交易的业务环境中,数据库…

美易官方:美股维持涨势,三大股指再创新高

在今日的早盘交易中,美股市场继续维持其涨势,三大股指再次刷新历史纪录。市场信心受到一系列积极经济数据的支撑,投资者对未来的经济增长和企业盈利保持乐观态度。 首先,让我们来看一下道琼斯工业平均指数的表现。该指数在早盘交易…

思科无线控制器配置学习

文章目录 简单拓扑WLC配置 简单拓扑 WLC配置 WLC#show running-config Building configuration...Current configuration : 11943 bytes ! ! Last configuration change at 16:22:44 UTC Thu Mar 14 2024 by admin ! version 17.9 service timestamps debug datetime msec se…