GLM论文精读-自回归填空的通用语言模型

news2024/9/22 15:35:06

GLM作为ChatGLM的前期基础论文,值得精读。本文是对GLM论文的精读笔记,希望对大家有帮助。GLM主要思想概述,利用自回归填空的思想,基于transformer的编码器实现了同时在NLU和有无条件生成任务上较好的表现。

基本信息

原文:GLM: General Language Model Pretraining with Autoregressive Blank Infilling ,ACL2022,

论文地址:https://aclanthology.org/2022.acl-long.26.pdf

代码:GitHub - THUDM/GLM: GLM (General Language Model)

目录

背景

时下主流预训练框架分为3种

Bert、GPT、T5的区别对比

GLM架构

主要思路:

模型具体处理

自回归空格填充任务

模型基本单元

预训练目标的数学逻辑

三类预训练目标

微调

GLM与相关模型的对比

T5和GLM

GLM的总结

参考与致谢


背景

时下主流预训练框架分为3种

  • autoencoding自编码模型

    • 通过去噪目标学习双向上下文编码器,例如掩码语言模型 (MLM) 。 擅长自然语言理解NLU任务,常用于生成句子的上下文表示,但是不能直接用于文本生成。如情感分类、抽取式问答

    • 代表模型如Bert、RoBERTa、ALBERT

  • autoregressive自回归模型

    • 学习从左到右的语言模型,常用于无条件生成任务(unconditional generation),如语言建模,具体形如给定一段context,让生成其下文

    • 代表模型如:GPT、GPT-2、GPT-3

  • encoder-decoder模型

    • 常用于条件生成任务(conditional generation),比如生成摘要、生成式问答、机器翻译

    • 代表模型MASS、BART、PALM

自然语言任务三类

  • 自然语言理解NLU,包括情感分类、抽取式问答、自然语言推理等

  • 无条件生成,如语言建模

  • 条件生成(seq2seq),如摘要、生成式问答、机器翻译

Bert、GPT、T5的区别对比

  • BERT的注意力是双向的,可以同时感知上文和下文,因此在自然语言理解任务上表现很好,但是不适合生成任务。训练目标上,BERT的训练目标是对文本进行随机掩码,然后预测被掩码的词。

  • GPT的注意力是单向的,所以无法利用到下文的信息。训练目标上,GPT的训练目标是从左到右的文本生成。

  • T5的编码器中的注意力是双向,解码器中的注意力是单向的,因此可同时应用于自然语言理解任务和生成任务。但T5为了达到和RoBERTa和DeBERTa相似的性能,往往需要更多的参数量。训练目标上,T5则是接受一段文本,从左到右的生成另一段文本。

GLM要做的事情就是用一个模型来同时完成这三种自然处理任务并且具备较好的表现。

GLM架构

主要思路:

利用自回归填空的思想,基于transformer的编码器实现了同时在NLU和有无条件生成任务上较好的表现。处理思路包括:对于输入文本中随机地空白/删除连续的标记跨度,并按照自回归预训练的思想来训练模型来依次重建这些跨度;不同于T5的空白填充,提出了两项改进,包括跨度打乱和2D位置编码(span shuffling and 2D positional encoding),具体为:不同的跨度的顺序是打乱的;2D位置编码包括了token在原始句子中的位置和token在跨度中的位置。

 【注】此处虽然论文中有写"single Transformer" ,但经过多方确认用的是Transformer的编码器而不是整个Transformer,详细参考了作者在B站的视频中5min左右的讲解。(论文中3.4 Ablation Study的最后一段也有提及“(1) GLM consists of a single encoder”) . 

模型具体处理

自回归空格填充任务

  • 文本原始输入: x1, x2,x3,x4,x5,x6

  • 随机筛选部分跨度的token 进行mask,原句子中的位置用mask表示

    • 筛选跨度长度的方式是使用lambda为3的泊松分布进行抽样

    • PartA 部分:x1,x2,M,x4,M ,其中M表示mask的跨度

  • 对挑选出的跨度token进行随机排序,跨度的起始位置加入tokens

    • PartB 部分: S,x5,x6,S,x3

  • 拼接PartA 和PartB作为输入

    • x1,x2,M,x4,M,S,x5,x6,S,x3

  • 字符的2D位置编码

    • 位置1: 表示token在原始句子中的位置

    • 位置2:表示token在跨度中的位置,0表示不在跨度中,不同的跨度spans中的token会重新计数

模型基本单元

  • self-attention mask

    • PartA部分内的各token可以互相注意到

    • PartB部分内的tokens可以注意到PartA和PartB中已经生成的token

    • single Transformer  ,用的是Transformer的编码器。

      • 重新调整了LN和残差连接的顺序

      • 对于token的预测输出用的是单个的线性层

      • 将激活函数由ReLU调整为了GeLUs

          

  • 自回归的方式生成预测PartB部分的跨度的token

    • x5,x6E,x3,E

    • token E表示跨度结束

预训练目标的数学逻辑

  • 自回归填空Pretaining objective

  • Probability of generating the span Si

         

三类预训练目标

针对三类下游任务设计了三种基于自回归填空的预训练目标,交替进行

  • token-level objective

    • 从一个均值为3的泊松分布中采样片段的长度,直到原始文本中15%的字符被掩盖,然后在文本中随机排布填空片段的位置。这一目标针对的是自然语言理解任务

  • sentence-level objective 句子级

    • 从文档中随机掩码若干文本片段,每个文本片段必须为完整的句子,被掩码的词数量为整个文档长度的15%。这一目标是能针对seq2seq任务,其预测往往是完整的整个句子或者段落。

  • document-level objective文档级

    • 采样一个长度从原始文本长度的50%到100%的均匀分布中采样的片段。这预训练目标针对的是无条件的长文本生成

     三类预训练目标的区别只是跨度(片段)的数量和长度的区别。【注:此处关于预训练目标的类型在GLM解析这边高赞的解析中只讲了后两者,这就容易引起误解,GLM实际是三个预训练目标,而少了一个token level,求证为参考B站一作讲解】

三类预训练目标和掩码语言的对比联系

  • 自回归填充有些类似掩码语言模型,首先采样输入文本中部分片段,将其替换为[MASK]标记,然后预测[MASK]所对应的文本片段。与掩码语言模型不同的是,预测的过程是采用自回归的方式。

  • 当被掩码的片段(跨度span)长度为1的时候,空格填充任务等价于掩码语言建模;

  • 当将文本1和文本2拼接在一起,然后将文本2整体掩码掉,空格填充任务就等价于条件语言生成任务。

  • 当全部的文本都被掩码时,空格填充任务就等价于无条件语言生成任务。

微调

  • 将所有任务都变成GLM填补空白的生成任务

    • 分类任务

      • 给定一个标注样本(x,y),我们将输入文本x通过模板转化为有一个[MASK]字符填空问题c(x)。标签y也映射到了填空问题的答案v(y) 。模型预测不同答案的概率对应了预测不同类别的概率

    • 文本生成任务

      • 针对文本生成任务,直接将GLM作为一个自回归模型的应用。比如: 给定的上下文构成输入的部分的A,在结尾附上一个[MASK]字符,模型用自回归的方式去生成B部分的文本

         

GLM与相关模型的对比

T5和GLM

  • T5提出了一个相似的文本填空目标来预训练一个编码器-解码器 Transformer模型。GLM使用了一个单一的编码器Transformer模型来同时学习单向和双向的注意力机制。(注意GLM只是编码器)

  • T5对编码器和解码器使用了独立的位置编码,并且依赖多个sentinel token来区别不同的填空片段,而GLM使用二维位置编码来表示填空中的位置信息。

  • 当有多个填空片段时,T5总是按照固定的从左到右的顺序来预测,而GLM会随机打乱片段的顺序来完整捕捉片段之间的依赖关系。

GLM的总结

  • GLM是一个针对自然语言理解和生成的通用的预训练框架。

  • GLM将针对不同类型下游任务的预训练目标统一为了自回归填空,结合了混合的注意力机制和新的二维位置编码。自然语言理解任务被表达为了条件生成任务,因此可以用自回归模型来解决。

  • 实验中,表明GLM在自然语言理解任务上超过了已有的方法,并且可以有效的在不同类型的任务中共享预训练的参数。       ​​​

参考与致谢

大语言模型ChatGPT的时代已经来临,作为一个多年前的NLPer,真的被LLM的效果和进展惊艳到了,国内LLM截止当前2023/05做的最好的就是清华的ChatGLM了,而且ChatGLM-6B可以在自己的单卡上就进行部署,也进行了部分开源,原生支持中文,给了大家更多的可能性和想象空间。本文作为LLM笔记的第一篇,论文读了好几遍,前期读的时候很难受也有很多疑问,后面反复的查和问与对比,现在感觉有那么点理解了,后续会努力更新这个系列,真正踏实的读论文看代码。

读论文时参考了大量前辈大佬们的解析,对我理解该文帮助很大,向大佬们致敬!同时感谢七月在线的July和阳哥以及学友的讨论!

 https://aclanthology.org/2022.acl-long.26.pdf

GitHub - THUDM/GLM: GLM (General Language Model)

自然语言大模型 :GLM 通用语言模型的训练与微调_哔哩哔哩_bilibili ACL'22 | GLM: 基于空格填充的通用语言模型 - 知乎

GLM General Language Model Pretraining with Autoregressive Blank Infilling (ACL_哔哩哔哩_bilibili

听听经典老歌 BART_哔哩哔哩_bilibili经典默剧音乐 GLM ACL2022_哔哩哔哩_bilibili

https://zhuanlan.zhihu.com/p/560559133

GLM: General Language Model Pretraining with Autoregressive Blank Infilling-腾讯云开发者社区-腾讯云听听经典老歌 BART_哔哩哔哩_bilibili

【OpenLLM 004】GLM-可能是当前开源ChatGPT复现中中文效果最好的基础模型!支持中英双语! - 知乎

https://blog.csdn.net/weixin_43199832/article/details/125803555

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

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

相关文章

设计模式 -- 备忘录模式

前言 月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂) 央是一片海洋,海乃百川,代表着一块海绵(吸纳万物) 泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出) 月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容 希望大家一起坚持这个过程,也同…

邮件营销自动化:优化营销流程,提升转化率

对于希望与客户联系,并推广其产品或服务的企业来说,电子邮件营销是一个强大的工具。然而,随着电子邮件通信量的持续增长,企业要跟上客户对个性化和及时性消息的需求,可能会面临一定的挑战。而这就是电子邮件营销自动化…

干货满满!破解FP安全收款难题

怎样安全收款是做擦边产品卖家比较忧虑的问题,2023年已经即将来到了年中,跨境卖家们在这一方面做得怎么样了呢? 这期分享破解FP独立站收款难题的方法。 一、商家破解FP收款难题方法 1.第三方信用通道 优点:信用卡在国外使用率比…

强化学习p2-价值学习

基本概念 折扣回报(Discounted Return) 在 MDP 中,通常使用折扣回报 (discounted return),给未来的奖励做折扣。折扣回报的定义如下: U t R t γ R t 1 γ 2 R t 2 γ 3 R t 3 . . . U_t R_t\gamma R_{t1}\gamma ^2R_{t2}\gamma ^3R_{t3}...…

【IoT】<硬件产品经理进阶课> 正式在CSDN学院上线

目录 课程目录 适用人群 课程介绍 课程地址 课程目录 001-产品经理进阶:开课介绍 002-产品经理进阶:产品经理简介 003-产品经理进阶:产品经理所需具备的核心素质 004-产品经理进阶:产品经理的进阶路径 005-产品经理进阶&a…

指定城市|眼科医生入世界名校斯坦福大学访学深造

J医生计划利用一年时间自费到美国进行访学交流。提出的要求是专业匹配,兼顾基础医学研究及眼科临床观摩,并且指定城市,希望在今年3、4月份出国。最终我们确定了世界名校斯坦福大学。邀请函上明示:访学期间除从事基础研究外&#x…

手把手教你学习PyQT5:打造精美、功能强大的桌面应用程序(更新中。。)

目录 前言一、PyQt5介绍&开发环境安装&简单案例分析1-1、PyQt5的介绍1-2、开发环境安装1-3、简单案例分析 二、QT Designer2-1、安装和配置2-2、QT Designer基础入门2-3、ui文件转换为python文件 三、PyQt5基本窗口控件(QMain Window、Qwidget、QDialog、Ql…

C# 利用ffmpeg的image2pipe参数实现USB摄系头本地预览同时推流

本地USB摄像头在使用中时,不支持另一个程序的并发访问,也就是所USB摄像头只能令第一个连接的程序“独享”。 在开发一个软件时,希望实现预览USB摄像头的同时,实现摄像头的推流。 推流要用的ffmpeg,经过资料查找&…

mac m2芯片 安装 brew 和cocoapods

Homebrew的安装 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 这里可能会失败,如 git clone 时候报错 error: RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly before end of the underlyi…

进程(二)

进程二 2.6 调度的概念、层次2.6.1 基本概念2.6.2 三个层次2.6.3 三层调度的联系、对比2.6.4 补充知识2.6.5 本小节总结 2.7 进程调度的时机、切换与过程、方式2.7.1 进程调度的时机2.7.2 切换与过程2.7.3 进程调度的方式2.7.4 总结 2.8 调度器/调度程序/闲逛线程2.9 调度算法的…

HTML5 + JavaScript绘柱状图

之前用HTML5 JavaScript绘柱状图,可以直观显示各类型产品或品牌的所占比例大小。详见: HTML5 JavaScript绘柱状图1 现在需要针对每年获得各类品牌数据进行对比,绘制柱状图会更直观。 首先我们定义二维数组aBrandType,存放品牌…

双指针的基本应用

一、环形链表 I 方法1:哈希表 struct hashTable {struct ListNode* key;UT_hash_handle hh; };struct hashTable* hashtable;struct hashTable* find(struct ListNode* ikey) {struct hashTable* tmp;HASH_FIND_PTR(hashtable, &ikey, tmp);return tmp; }void insert(struc…

页面一打开就有30个重复请求,优化方法

一、写在前面 上周测试同事给我提了个bug。他说在公司运营系统某个编辑页面中,一个post请求调用太多次了,想让我看看怎么回事。我刚听他讲这个事情时心里有点不屑一顾,觉得能有多少次啊,大惊小怪的。然而当我在测试环境中打开那个…

经典文献阅读之--A Lifelong Learning Approach to Mobile Robot Navigation(终生学习轨迹导航)

0. 简介 终生学习作为近年来比较火的一种深度学习方式,导航终身学习(LLfN)旨在解决标准导航问题的一种新变体,在该问题中,智能体在有限的内存预算下,通过学习提高在线经验或跨环境的导航性能。而最近有一篇文章《A Lifelong Lear…

Python数据分析实战【十四】:你知道python中有几种排序方法吗【文末源码地址】

文章目录 一、List.sort()排序案例一:按照列表中的元素进行排序案例二:按照销售额数据进行排列 二、sorted()排序案例一:sorted()对列表进行排序案例二:sorted()对字典进行排序案例三:sorted()对列表中的字典元素排序 …

[工具]Pytorch-lightning的使用

Pytorch-lightning的使用 Pytorch-lightning介绍Pytorch-lightning与Pytorch的区别Pytorch-lightning框架的优势Pytorch-lightning框架 重要资源 Pytorch-lightning介绍 这里介绍Pytorch_lighting框架. Pytorch-lightning与Pytorch的区别 Pytorch-lightning可以简单的看作是…

shiro反序列化[cve_2016_4437]

目录 什么是shiro? 漏洞原理 漏洞复现 修复方案 什么是shiro? Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。 漏洞原理 Apache Shiro 1.2.4及以前版本…

D1. LuoTianyi and the Floating Islands (Easy Version)(树形dp)

Problem - D1 - Codeforces 这是问题的简化版本。唯一的区别在于在该版本中k≤min(n,3)。只有在两个版本的问题都解决后,才能进行黑客攻击。 琴音和漂浮的岛屿。 洛天依现在生活在一个有n个漂浮岛屿的世界里。这些漂浮岛屿由n−1个无向航线连接,任意两个…

【0基础学爬虫】爬虫基础之自动化工具 Pyppeteer 的使用

大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学…

Python学习之Image模块图片滤镜效果操作示例

前言 滤镜效果是图像处理中常用的一种技术,可以用来增强图像的视觉效果,实现不同的效果,比如增强对比度、饱和度、色彩等。滤镜效果可以帮助用户快速地调整图像的特性,从而使图像更加适合用户的需求。 Image模块对于图像处理的…