6

GLM:通用语言模型 - 西西嘛呦

 1 year ago
source link: https://www.cnblogs.com/xiximayou/p/17271911.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

GLM:通用语言模型

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所示:

6dc85f62-1ed5-418d-81f3-f334f43fa799.png

即,将文本中的一段或多段空白进行填充识别。具体细节如图2所示:

d7d960a5-8095-4e9e-80e8-aaf678d5a786.png

说明,对于一个文本:x1,x2,x3,x4,x5x1,x2,x3,x4,x5,空白长度会以λ=3λ=3的泊松分布进行采样。重复采样直到空白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通过可学习嵌入表投影到两个向量,这两个向量都被添加到输入标记嵌入中。该编码方法确保模型在重建时不知道被屏蔽的跨度的长度。这种设计适合下游任务,因为通常生成的文本的长度是事先未知的。

1659e71b-5d59-48a8-b54d-70852964e112.png

对于分类任务,在模板后面预测类别。

  • 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],使用自回归来生成文本。

这样的好处是预训练和微调是保持一致的。

2e3f5a7f-db37-473a-8175-69b3cad17424.png
44f36783-3dec-4416-bc55-48ccdaaf5969.png
a7cd0fd0-e457-4f91-8c0b-187ea4b00672.png

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK