GLM: General Language Model Pretraining with Autoregressive Blank Infilling
ChatGPT已经火了一段时间了,国内也出现了一些平替,其中比较容易使用的是ChatGLM-6B: https://github.com/THUDM/ChatGLM-6B ,主要是能够让我们基于单卡自己部署。ChatGLM的基座是GLM: General Language Model Pretraining with Autoregressive Blank Infilling论文中提出的模型,接下来我们来看看。
论文名称:GLM: General Language Model Pretraining with Autoregressive Blank Infilling
论文地址: https://aclanthology.org/2022.acl-long.26.pdf
代码地址: https://github.com/THUDM/GLM
介绍
预训练语言吗模型大体可以分为三种:自回归(GPT系列)、自编码(BERT系列)、编码-解码(T5、BART),它们每一个都在各自的领域上表现不俗,但是,目前没有一个预训练模型能够很好地完成所有任务。GLM是一个通用的预训练语言模型,它在NLU(自然语言理解)、conditional(条件文本生成) and unconditional generation(非条件文本生成)上都有着不错的表现。
GLM的核心是:Autoregressive Blank Infilling,如下图1所示:
![](https://developer.qcloudimg.com/http-save/yehe-7694870/ba39dba99d29c4a2b7b871160a8e1d8c.png?imageView2/2/w/1200)
即,将文本中的一段或多段空白进行填充识别。具体细节如图2所示:
![](https://developer.qcloudimg.com/http-save/yehe-7694870/77772f7d8b04858ad1b2ba2affbc3643.png?imageView2/2/w/1200)
说明,对于一个文本:
,空白长度会以
的泊松分布进行采样。重复采样直到空白token的总数目占文本token数的15%。将文本分为两部分,A部分由原始token和[MASK]组成,B部分由空白token组成,最终将A部分和B部分进行拼接,同时B部分的每一个空白会被打乱,这样在自回归预测每个token的时候可以看到上下文的信息(具体通过注意力掩码来实现)。需要注意的是位置编码是2D的,位置编码1用于表示token在文本的位置,位置编码2用于表示原始文本和每一个空白中token的顺序。
多任务训练
为了能够兼顾NLU和文本生成,对于文档和句子采用不同的空白填充方式。
- 文档:span的长度从原始长度的50%-100%的均匀分布中抽取。该目标旨在生成长文本。
- 句子:限制masked span必须是完整的句子。多个span(句子)被取样,以覆盖15%的的原始标记。这个目标是针对seq2seq任务,其预测往往是完整的句子或段落。
模型架构
GLM使用单个Transformer,并对架构进行了修改:
(1)调整layer normalization和residual connection的顺序。
(2)使用单一线性层进行输出token预测。
(3)将ReLU激活函数替换为GeLUs。
2D位置编码
两个位置id通过可学习嵌入表投影到两个向量,这两个向量都被添加到输入标记嵌入中。该编码方法确保模型在重建时不知道被屏蔽的跨度的长度。这种设计适合下游任务,因为通常生成的文本的长度是事先未知的。
微调
![](https://developer.qcloudimg.com/http-save/yehe-7694870/a3fb3666b8ad0a2731e03546d502c24b.png?imageView2/2/w/1200)
对于分类任务,在模板后面预测类别。
- It’s a beautiful day, I’m in a great mood. it is [MASK]. [S] good
- I failed in the exam today. I was very depressed. it is [MASK] [S] bad
对于文本生成任务,输入的文本视为A部分,在该部分后面添加[MASK],使用自回归来生成文本。
这样的好处是预训练和微调是保持一致的。
结果
![](https://developer.qcloudimg.com/http-save/yehe-7694870/e2387ff47206ffb62d9bcc9dd1fa322f.png?imageView2/2/w/1200)
![](https://developer.qcloudimg.com/http-save/yehe-7694870/baed9ae4ef9f83f28c80f278bf1fcc90.png?imageView2/2/w/1200)
![](https://developer.qcloudimg.com/http-save/yehe-7694870/2c42e8996a5a4e7284192cba4cf955dd.png?imageView2/2/w/1200)
![](https://developer.qcloudimg.com/http-save/yehe-7694870/2fc7c5250af465d10c9a94bb25ae5290.png?imageView2/2/w/1200)
![](https://developer.qcloudimg.com/http-save/yehe-7694870/80dded0c216aa39b7c46de13facaa25a.png?imageView2/2/w/1200)
原始发表:2023-03-30, 如有侵权请联系 cloudcommunity@tencent.com 删除
社区
活动
资源
关于
腾讯云开发者
扫码关注腾讯云开发者
领取腾讯云代金券
热门产品
热门推荐
更多推荐
Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287