ChatGLM
背景
主流的预训练框架主要有三种:
1、AutoRegressive自回归模型(AR模型):代表GPT。本质上是一个Left-to-Right的语言模型。通常用于生成式任务,在长文本生成方面取得了巨大的成功。当扩展到十亿级别参数时,变现出了少样本学习能力。缺点是单向注意力机制,在NLU任务中,无法完全捕捉上下文的依赖关系。
2、Autoencoding自编码模型(AE模型):代表BERT。是通过某个降噪目标(比如MLM)训练的双向文本编码器。编码器会产生适用于NLU任务的上下文表示,但无法直接用于文本生成。
3、Encoder-Decoder(Seq2seq模型):代表作T5。采用双向注意力机制,常用于条件生成任务,比如文本摘要、机器翻译等。
三种预训练框架各有利弊,没有一种框架在以下三种领域表现最佳:自然语言理解(NLU)、无条件生成以及条件生成。T5曾经尝试使用MTL的方式同意上述框架,然而自编码和自回归目标天然存在差异,简单的融合自然无法继承各个框架爱的优点。
GLM预训练框架
GLM特点:
- 自编码思想:在输入文本中,随机删除连续的tokens。
- 自回归细思:顺序重建连续tokens。在使用自回归方式预测缺失tokens时,模型既可以访问corrupted文本,又可以访问之前已经被预测的spans。
- span shuffing+二维位置编码技术
- 通过改变确实spans的数量和长度,自回归空格填充目标可以为条件生成以及无条件生成任务预训练语言模型。
自回归空格填充任务
多目标预训练
上述方法适用于NLU任务。我们希望训练处一个既可以解决NLU任务,又具备文本生成能力的模型。因此除了空格填充目标之外,还需要增加一个生成长文本目标的任务。具体包含以下两个目标:
1、文档级别:从文档中采样一个文本片段进行Mask,且片段长度为文档长度的50%~100%。这个目标用于长文本生成。
2、句子级别:限制被mask的片段必须是完整句子。多个片段覆盖原始tokens的15%。这个目标适用于预测完整句子的或者段落的seq2seq任务。
模型结构
GLM在原始Single Transformer的基础上进行了一些修改:
1、重组了LN和残差连接的顺序;
2、使用了单个线性层对输出tokens进行预测;
3、激活函数ReLU换成了GeLU;
GLM微调
对于下游任务NLU任务来说,通常会将预训练模型产出的序列或者tokens表达最为输入,使用线性分类器预测label。所以预训练和微调之间存在天然不一致。
BERR | XLNet | T5 | UniLM |
---|---|---|---|
1、无法捕捉mask tokens的相互依赖性。2、不能够准确填充多个连续的tokens。为了推断长度为l的答案概率,BERT需要执行l次连续预测。 | 与GLM相同,使用自回归目标预训练。1、使用文本mask之前的原始位置编码,推理过程中,需要事先知晓或枚举答案长度,与BERT的问题相同。2、双流自注意力机制,使预训练时间成本增加了一倍。 | 使用类似的空格填充目标预训练encoder-decoder Transformer。在编码和解码阶段使用独立的位置编码,使用多个哨兵token来区分mask片段。而在下游任务中,仅使用一个token,造成模型能力的浪费以及预训练-微调的不一致。 | 通过改变双向、单向以及交叉注意力之间的注意力mask,统一不同的预训练目标。1、总是使用[mask]token替代mask片段,限制了它对mask片段及其上下文的依赖关系进行建模的能力。2、在下游任务微调时,自编码比自回归更加低效。 |
ChatGLM-2
主要创新
1、更长的上下文:基于FlashAttention技术,将基座模型的上下文长度(context length)由ChatGLM-6B扩展到了32K,并在对话阶段使用8K的上下文长度训练。对于更长的上下文,发不了ChatGLM2-6B-32K模型。LongBench的测评结果表明,在等量级的开源模型中,ChatGLM2-6B-32K有着较为明显的竞争优势。
2、更强大的性能:基于ChatGLM初代模型的开发经验,全面升级了ChatGLM2-6B的基座模型。ChatGLM2-6B使用了GLM的混合目标函数,经过了1.4T中英标识符的预训练与人类偏好对齐训练,测评结果显示、相比于初代模型,ChatGLM2-6B在MMLU等数据集上又有着大幅度的提升,在同尺寸开原模型中有较强的竞争力。
3、更高效的推理:基于Multi-Query Attention技术,ChatGLM2-6B具有更高效的推理速度和更低的显存占用:在官方的模型实现下,推理速度相比初代提升了42%。
4、更开放的协议:ChatGLM2-6B权重对学术研究完全开放。