预训练发展

预训练发展

  • 1.ELMo
  • 2.GPT
  • 3.Bert
    • 3.1Ernie-baidu
    • 3.2Ernie- Tsinghua
  • 4.GPT2
  • 5.UNILM
  • 6.Transformer-XL & XLNet
    • 6.1方案一
    • 6.2方案三
  • 7.Roberta
  • 8.SpanBert
    • 8.1SBO简介:
  • 9.ALBERT
    • 9.1方案一
    • 9.2方案二
    • 9.3方案三
  • 10.T5
  • 11.GPT3
  • 12.从"续写"到"回答"
    • 12.1SFT训练
    • 12.2RLHF
      • 12.2.1RW
      • 12.2.2RL
  • 13.NLP迭代

1.ELMo

简介: 首次提出预训练的模型,采用的是LSTM模型进行训练的, 然后和词向量拼接到一起送入到下游的RNN中,去做具体的工作。

结论: 预训练是一种通用的提升效果的手段

2.GPT

介绍: 早于BERT,启用了Transformer作为核心编码器。开始使用特有token连接不同句子。
在这里插入图片描述
训练简介: 语言模型采取单向,自回归训练,在语言模型预训练的基础上,增加了有监督任务训练。在这之后就很少有使用LSTM来做预训练任务的了。

3.Bert

两个训练任务: 1. MASK LM任务 2. Next Sentence Predict任务

3.1Ernie-baidu

改进点: Mask随机token -> Mask实体或词组;
优劣:

  1. 优: 这种做法在本质上相当于在预训练中加入了先验知识,可以更好的学习该语言
  2. 劣: 但是这也意味着对未知语言可能会无法使用该策略,因为未知语言,没法获取到其中的词或者实体的信息。

3.2Ernie- Tsinghua

改进点: 引入知识图谱,将实体信息融合到预训练任务中,从下图中可以看到,在下游fine-tune修改。对于不同实体分类和关系分类引入了两种token来加强模型对实体信息的认知
在这里插入图片描述

总结: 上面两个的改进思路,都是强调了额外知识的重要性;虽然最后并没有获取到非常好的效果,迁移性不强,但是可以是一种思路。

4.GPT2

简介: 继续使用单向语言模型,继续使用transformer结构(小改);改进: Bigger model,more data

重点: 强调zero-shot;任何一个任务,可以看做生成任务。所有任务都可以简化为输入和输出。就不再需要Fine-tuning

翻译任务为例,希望语言模型输出:

在这里插入图片描述

问题点: 这样将每个任务固定token加入到训练的语料中,对数据的负担其实和采用下游任务微调没有区别。而且不可能穷举所有的任务。
但是: 大规模语言模型可以在不做有监督训练的情况下,完成许多任务。

5.UNILM

简介: 使用Bert的模型结构,同时进行Mask LM,单向LM,和seq2seq训练;使得预训练后模型可以更好的应用在生成式任务上:如机器翻译和机器摘要等。
在这里插入图片描述
释义: 即通过不同的mask,就可以在相同的模型结构上训练出不同模型任务能力;解决了Bert在生成式任务上的短板。

6.Transformer-XL & XLNet

目标: 希望解决Transformer的长度限制问题;
释义: 在Bert的基础版本中,由于位置编码的长度是512;意外着输入的文本长度不能超过512,不然就无法输入模型中计算或者被截断。做了很多改进方案,如下:

6.1方案一

方案: 循环机制 Recurrence Mechanism

思想: 借鉴RNN机制,将隐单元向量不断向后传递。在transformer模型中呢,则是将前一段文本的隐向量与后一段文本印象里拼接之后计算attention。即第一次输入的文本,在每一层模型都有输出,把这个保留,在后面一次输入的计算中加上,就默认是两次文本的了,补充了原来的上下文内容。

下面是公式,不做详细介绍:
在这里插入图片描述## 方案二
方案: 相对位置编码 Relative Positional Encodings;当然当前大语言模型所使用的位置编码和这里的已经有很大不同了。

详细介绍:

  1. 这个方案,从下面这个公式出发:
  2. E、和U可以理解为BERT中的文本向量化和位置编码,这里通过Wq和Wk就是selft-attention的q、k需要过的线性层。
    在这里插入图片描述
  3. 通过上面的是子相乘后,得到下面的公式,即四个式子之和。当前要做的是位置的编码,所以变化的也是带有U的,因为U是位置编码内容

在这里插入图片描述
4. Uj使用一个矩阵Ri-j来表示,这个值是不可训练的,代表的是两个字之间的相对位置。
5. u、v是可训练的参数,代表的是原来的Ui。

6.2方案三

前言:

  1. AR语言模型 auto regressive language model;单向预测下一个字
    缺点:缺少双向信息

  2. AE语言模型 auto encoding language model;双向信息输入,预测中间某个mask的字
    缺点:引入了[mask],但实际任务中不不存在

改进方案: AR语言模型与AE语言模型融合;Permutation Language Model;调整句子顺序,之后进行单向预测
在这里插入图片描述

释义: 将原来的句子:1-2-3-4;位置打乱,变成2-4-3-1;打乱成多种情况,通过2-4;预测3;通过2-4-3预测1;就是顺序是混乱的,使得预测一个字时,既有前面的信息,又有后面的信息.

7.Roberta

简介: 模型结构不变,和BERT相似,但是对训练方式进行了调整。
改进点

  1. 更多的数据,更大的batch size,更久的训练
  2. 去掉next sentence prediction ;Bert有两个训练任务,其中预测上下句之间关系的任务摒弃了。
  3. 使用更长的样本
  4. 动态改变mask位置。在原来的Bert中,同一个样本,每次训练都mask同一个词,动态是指,现在随机改变。相当于有了更多的语料,使得模型能够学习到更多的知识。

结论: 挖掘旧的方法的潜力,有时比创新还要有效;能够最大限度的发挥一种算法的能力,是算法工程师能力的体现。

8.SpanBert

与BERT的主要区别有三个:

1.去掉了next sentence prediction任务
2.随机mask几个连续的token
3.新的预训练任务SBO(Span Boundary Objective)

8.1SBO简介:

释义:

  1. Xs-1代表mask片段之前的第一个token的Embedding
  2. Xe+1代表mask片段之后的第一个token的Embedding
  3. Pi-s+1代表目标token的Position Embedding,这个位置编码是指遮住的mask中的位置编码。
  4. 计算一个token的loss值时,处理mask的任务还要加上SBO任务;SBO任务代表着这个token与前后文的关系和mask中的信息。

在这里插入图片描述
结论: 大模型+更多的数据不是唯一出路,改变训练目标也有很大影响。

9.ALBERT

解决问题: 试图解决Bert模型过大的问题;想办法减少参数量。

9.1方案一

介绍: Factorized embedding parameterization;Embedding层的因式分解
举例:
Factorized embedding parameterization
O(V × H) -> O(V × E + E × H)
V = 词表大小 30000
H = 隐单元个数 1024
E = 指定Embedding大小 512 (原生Bert无此参数)

参数量
V x H = 30720000
V x E + E x H = 15360000 + 524288 = 15884288

释义:

  1. embedding词,如果向量的维度是1024,那么3万个词的参数就是:30720000
  2. 将embedding的维度减小,比如减到512;这里代表着默认512维也能较好的表示词的含义,只是后续的网络训练中,还需要更大的维度才好
    3.在2的基础上,即: 30000 *512;通过矩阵变换,乘以线性层: 512 * 1024即可

9.2方案二

介绍: Cross-layer parameter sharing;跨层参数共享
释义:

  1. 跨层参数共享,有多种共享方式:
    只共享attention部分
    只共享feed-forward部分
    全部共享
  2. 这里指的共享,是指参数的值共享,比如:Bert的层数不变,每层的结构不变,只是他的每层使用的参数与其他层是相同的。

下面是一些效果:
在这里插入图片描述
**结论:**共享参数后,效果其实下降的并不多,可以接受。

9.3方案三

介绍: 直白来讲,就是增加训练的任务,SOP任务替代NSP任务,Sentence order prediction。

改进: 原来Bert的训练任务是判断上下两句话的关系,现在任务改成,两句话,谁是上句谁是下句。

举例:
预测两句话的前后关系,同样是二分类任务
[CLS] 你好啊bert [SEP] 好久不见 [SEP] -> Positive
[CLS] 好久不见 [SEP]你好啊bert [SEP] -> Negative

10.T5

简介: Text-to-Text Transfer Transformer;seq2seq理论上可以解决一切NLP问题。
比如:

分类问题:文本 -> 标签
命名实体识别:文本 -> 实体
摘要、翻译:文本 -> 文本
回归问题:文本 -> 0.1(字符串)

改进: 在训练方式上,比GPT2跟进一步,GPT2是在训练的语料中,添加某些具体的token任务标识;而T5采取更自然一些,通过自定义的token区分任务,共享模型和解码方式。

举例:
翻译
你 好 吗 -> How are you

摘要

原 文 本……. -> 摘 要 文 本…

分类
A 股 市 场…. -> 金 融

11.GPT3

简介: 1750 亿参数量,是GPT-2的116倍;模型结构与GPT-2相同;继续使用单向语言模型预训练。

理念:
Pre-training + fine-tune ×
理由:
1、fine-tune需要的数据,经常是缺失的
2、fine-tune会涉及对模型进行改造,使其变复杂,并失去泛化性
3、人类学习做新任务并不需要很多样本

Pre-training + Zero-, One-, Few-shot √

12.从"续写"到"回答"

简介: 在前面中说的使用各种训练的方式,其实模型最后达到的还是一个续写的能力,基本所有的任务都用生成式来解决的话,更加理想的方式,模型永远生成文本,并且是用文本描述各种各种任务的答案

在完成这个步骤的过程中,OpenAI的公司提供了一些关于chatGPT的训练方式,使得其又续写变为回答,如下:
在这里插入图片描述
在完成预训练后,再进行SFT和RLHF训练。

12.1SFT训练

训练过程 可以用下面示意图表示:
在这里插入图片描述
释义:

  1. 训练和seq2seq很像,权重完全是在预训练的基础进行训练的
  2. 在训练工程中,需要很多问答的数据,问题再< sep >前面,答案在后面,在训练计算loss时,则从< sep >开始预测后面的内容
  3. 在这个过程中,mask的形状和UNILM中Self-attention Masks一样

12.2RLHF

12.2.1RW

简介: Reward model training,有称奖励模型,目的是模型输出结果进行一个打分,评判结果的优劣。

训练数据: 训练的数据是采用一个相同的问题,通过不同的模型、或者相同的模型得到不一样的答案,通过人工标注的方式,对同一个问题下的不同答案进行优劣排序。

模型公式如下:
在这里插入图片描述
训练释义:

  1. 将得到的相同问题下的不同答案,两两一组进行训练,排序在前面(两个一组的答案中相对较好的)答案,即yw;相对较差的答案即为yl
  2. 根据公式中x代表问题,y代表答案,分别经过模型打分后,相减求对数等计算,本质上就是相应训练出一个打分模型,能对优质的答案打分尽量高,较差的答案打分低,去区分。
  3. rθ就是训练得到的一个交互式文本匹配模型,对问题和答案输出为标量(0-1)匹配度

12.2.2RL

简介: RL就是通过RW得到的奖励模型,对SFT微调后的模型,进行强化学习。

公式如下:
在这里插入图片描述
简要释义:

把公式拆分为1、2、3部分;简单来说,把RW奖励模型当作一个模型训练的教练,对模型输出进行打分,并作为loss,去进一步调优模型。

  1. 第一部分,即指的是RW奖励模型,对问题和SFT模型输出结果的打分。
  2. 第二部分,前面半截代表当前进行强化训练的模型,对输入问题x,输出结果为y的概率;后面半截就是SFT模型的概率。比值打,说明强化学习改变很多,比值小,说明只是在SFT上进行小步的优化。
    第一部分和第二部分,就是说明,用奖励模型去调优SFT模型,不希望有巨大的调整,因为SFT后,模型本身就是比较好的状态,不应该有较大的调整。
  3. 第三部分,即将把模型的强化学习当作预训练过程来进行loss计算,调优,针对生成答案的每个字、词的权重进行优化。当然这步可以取消。

13.NLP迭代

简介: 简单来说,在人工智能的发展过程中,是逐渐剥离掉了人的主观因素,将大量的数据交由模型自己去寻找和总结自己的规律的过程。从最开始1,人类去总结规律,通过代码去实现的方式(if -else);到2,人类去标注出规律,设计模型的结构,通过数据让机器去学习规律。到3,人类提供大量的数据,让模型去寻找和获取其中的规律;到4,训练的目标都由模型去对齐,就是强化学习

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

可解释性机器学习中的局部解释

可解释性机器学习可以被分成两大类&#xff0c;第一大类叫做局部的解释&#xff0c;第二大类叫做全局的 解释&#xff0c;如图 1 所示。局部的解释是&#xff0c;比如有一个图像分类器&#xff0c;输入一张图片&#xff0c;它会判断出 是一只猫&#xff0c;机器要回答问题是为什…

浅谈Spring Cloud:认识微服务

SpringCloud就是分布式微服务架构的一站式解决方案&#xff0c;是微服务架构落地的多种技术的集合。 目录 微服务远程调用 Eureka注册中心 搭建Eureka Server 注册组件 服务拉取 当各种各样的服务越来越多&#xff0c;拆分的也越来越细&#xff0c;此时就会出现一个服务集…

速通GPT:《Improving Language Understanding by Generative Pre-Training》全文解读

文章目录 速通GPT系列几个重要概念1、微调的具体做法2、任务感知输入变换3、判别式训练模型 Abstract概括分析和观点1. 自然语言理解中的数据问题2. 生成预训练和监督微调的结合3. 任务感知输入变换4. 模型的强大性能 Introduction概括分析和观点1. 自然语言理解的挑战在于对标…

Android源码导入Android Studio

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 前言 需要先把 Android 源码编译一遍 然后执行下面指令就可以导入android源码了 关于 Android 源码编译可以参考这篇文章【LineageOS源码下载和编译&#xf…

【检索快,IEEE独立出版】2024年第四届电子信息工程与计算机科学国际会议(EIECS 2024)

大会简介&#xff1a; 2024年第四届电子信息工程与计算机科学国际会议&#xff08;EIECS 2024&#xff09;将于2024年9月27日至29日在中国延吉举行。会议由长春理工大学主办&#xff0c;延边大学、长春理工大学电子信息工程学院、长春理工大学计算机科学技术学院、长春理工大学…

蛋白质原子坐标平移、旋转、缩放示例代码

在处理蛋白质结构时,常常需要对原子的坐标进行几何变换,如平移、旋转和缩放。这些变换在模拟、可视化和结构比较中非常有用。 以下是对这些操作的介绍以及示例代码。 1. 平移 (Translation) 平移就是将所有原子的坐标沿着某个方向进行移动。平移可以通过向每个原子的坐标加…

解锁4款专业的中英翻译工具,让你畅行双语世界。

中英翻译工具在国际化交流越来越频繁的今天还是起着巨大的作用的&#xff0c;它能够促进很多知识的传播和共享&#xff0c;也能够便利大家的工作&#xff0c;学习和生活。今天我就要跟大家分享4个我一直都在用的中英翻译工具。 1、福昕中英翻译网站 直达&#xff1a;https://f…

LeetCode 第415场周赛个人题解

目录 Q1. 数字小镇中的捣蛋鬼 原题链接 思路分析 AC代码 Q2. 最高乘法得分 原题链接 思路分析 AC代码 Q3. 形成目标字符串需要的最少字符串数 I 原题链接 思路分析 AC代码 Q4. 形成目标字符串需要的最少字符串数 II 原题链接 思路分析 AC代码 Q1. 数字小镇中的捣…

数据库全攻略:从类型到安全与优化

数据库全攻略&#xff1a;从类型到安全与优化 一、数据库类型大观 &#xff08;一&#xff09;关系型数据库 关系型数据库以表格形式存储数据&#xff0c;通过 SQL 语言进行操作&#xff0c;数据之间存在关联关系&#xff0c;适合复杂查询和事务处理。常见的关系型数据库有 …

springboot瑜伽课约课小程序-计算机毕业设计源码87936

摘要 本文详细阐述了一个基于SpringBoot框架的瑜伽课约课小程序的设计与实现过程。随着现代生活节奏的加快&#xff0c;越来越多的人开始关注身心健康&#xff0c;瑜伽作为一种集健身、放松、减压于一体的运动方式&#xff0c;受到了广泛的欢迎。为满足瑜伽爱好者的课程预约和学…

Ubuntu 22.04.5 LTS 发布下载 - 现代化的企业与开源 Linux

Ubuntu 22.04.5 LTS (Jammy Jellyfish) - 现代化的企业与开源 Linux Ubuntu 22.04.5 发布&#xff0c;配备 Linux 内核 6.8 请访问原文链接&#xff1a;https://sysin.org/blog/ubuntu-2204/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xf…

Recyclerview实现滑动居中缩放菜单

最近项目中需要的一个滑动菜单效果:要求当前居中选项放大、滑动时有缩放效果、点击两边的选项滑动到屏幕中央、停止滑动选项停留在屏幕中间(类似viewPager的效果),为了直观,先上最终实现效果图: 大体思路: Recyclerview item头尾添加空数据,让第一个和最后一个item也能…

c++题目_【模板】最小生成树Prim

题目描述 这是一道最小生成树Prim的模板题&#xff0c;本题与【模板】最小生成树Kruskal&#xff0c;仅仅只有nn和mm的大小不同 给出一个无向图&#xff0c;求出最小生成树&#xff0c;如果该图不连通&#xff0c;则输出orz 输入 第一行输入2个正整数n,mn,m&#xff0c;代表…

数据可视化pyecharts——数据分析(柱状图、折线图、饼图)

安装 首先确保已经安装了pyecharts库&#xff0c;如果没有&#xff0c;可以通过pip install pyecharts进行安装。 柱状图 从pyecharts.charts导入Bar&#xff0c;从pyecharts导入options。准备数据&#xff08;如类别数据x_data和对应的数值数据y_data&#xff09;。创建Bar对…

解决win11 使用wsl工具,不能使用systemctl

使用systemctl命令出现报错&#xff1a; System has not been booted with systemd as init system (PID 1). Can‘t operate. 默认情况下并不启用 systemd&#xff0c;而是使用了其他轻量级的初始化系统&#xff08;SysV init初始化系统&#xff09;。这导致一些需要 system…

力扣最热一百题——螺旋矩阵

目录 题目链接&#xff1a;54. 螺旋矩阵 - 力扣&#xff08;LeetCode&#xff09; 题目描述 示例 提示&#xff1a; 解法一&#xff1a;模拟 1. 边界初始化 2. 循环遍历矩阵 3. 从左到右遍历上边界 4. 从上到下遍历右边界 5. 从右到左遍历下边界 6. 从下到上遍历左边…

【GPU版】Windows下PyTorch入门深度学习环境安装与配置

如果电脑有NVIDIA GPU显卡&#xff0c;看【GPU版本】&#xff1b;否则&#xff0c;看【CPU版本】 聊聊PyTorch和Tensorflow 它们都是python的库/包 pip3是给python3使用的&#xff0c;由于现在用的python基本上都是3以上版本&#xff0c;所以pip和pip3没有区别 聊聊Anacond…

DNC Server 开发

每个工厂里面的机床系统类型各式各样,程序传输DNC 功能可以提高技术人员的工作效率,怎样兼容每种系统是个难题,如果是做工厂信息化的工程师也是比较头疼,下面给出一个解决方案,抛砖引玉 我们可以使用一种框架 满足插件式开发,主程序负责管理插件,具体的上传 下载 删除 查询等具…

第108集《大佛顶首楞严经》

请打开讲义241面。我们讲到嗅报&#xff0c;鼻根当中嗅的功能。 本根发相 发明二相&#xff1a;一者通闻&#xff0c;被诸恶气&#xff0c;熏极心扰。二者塞闻&#xff0c;气掩不通&#xff0c;闷绝于地。 以鼻根造业到无间地狱以后&#xff0c;他有二种受苦的相状&#xf…

Java数据结构——Set和Map

掌握 Map/Set 及实际实现类 HashMap/TreeMap/HashSet/TreeSet 的使用。掌握 TreeMap 和 TreeSet 背后的数据结构搜索树的原理和简单实现。掌握 HashMap 和 HashSet 背后的数据结构哈希表的原理和简单实现。 目录 1.搜索 1.1概念及场景 1.2模型 2. Map的使用 2.1关于Map的说…