找回密码
 立即注册
查看: 692|回复: 0

清华ChatGLM底层道理详解——ChatGPT国内最强开源平替 ...

[复制链接]

1

主题

0

回帖

26

积分

新手上路

积分
26
发表于 2023-5-24 09:25:55 | 显示全部楼层 |阅读模式
欢迎存眷公众号: 『诗品算法』,禁止一切未经本人@琦琦许可的转载。转载必需注明出处。
引言

之前笔者已经跟大师详细解析过OpenAI的GPT1~GPT3、InstructGPT、ChatGPT,Anthropic的Claude。随着算力的不竭成长,模型容量也越来越大,但这些模型均未开源,走向了Close AI之路。不外即使开源,个体也很难玩转这些模型,计算资源(显卡)、数据集等都是困难。
在这样的布景下,国表里涌现出了一批开源模型,近期影响较大的有:Meta AI的LLama、斯坦福基于LLama的Alpaca、清华大学的GLM和ChatGLM等。笔者比来将对这些模型的细节和论文进行详细解析。
本文将对GLM布局进行深度分解和底层道理解读。
必备常识

在阅读本系列文章之前,建议补充一些相关常识。若你之前未了解过GPT相关道理,可以参考以下的链接:
介绍

ChatGLM-6B 是一个开源的、撑持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。颠末约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答。
为了便利下游开发者针对本身的应用场景定制模型,GLM同时实现了基于 P-Tuning v2 的高效参数微调方式,INT4 量化级别下最低只需 7GB 显存即可启动微调。下面进入正题。
一、布景

前文已经明确阐述了时下主流的预训练框架及其区别。主要有三种:
1、autoregressive自回归模型(AR模型):代表作GPT。本质上是一个left-to-right的语言模型。凡是用于生成式任务,在长文本生成方面取得了巨大的成功,比如自然语言生成(NLG)范围的任务:摘要、翻译或抽象问答。当扩展到十亿级别参数时,表示出了少样本学习能力。错误谬误是单向注意力机制,在NLU任务中,无法完全捕捉上下文的依赖关系。
2、autoencoding自编码模型(AE模型):代表作BERT。是通过某个降噪方针(比如MLM)训练的双向文本编码器。编码器会产出适用于NLU任务的上下文暗示,但无法直接用于文本生成。
3、encoder-decoder(Seq2seq模型):代表作T5。采用双向注意力机制,凡是用于条件生成任务,比如文本摘要、机器翻译等。
三种预训练框架各有利弊,没有一种框架在以下三种范围的表示最佳:自然语言理解(NLU)、无条件生成以及条件生成。T5曾经测验考试使用MTL的方式统一上述框架,然而自编码和自回归方针天然存在差异,简单的融合自然无法担任各个框架的长处。
在这个天下三分的僵持场所排场下,GLM诞生了。
GLM模型基于autoregressive blank infilling方式,结合了上述三种预训练模型的思想。
二、GLM预训练框架

GLM有什么特点?又是如何将其他框架的优势巧妙融合的呢?
1、自编码思想:在输入文本中,随机删除持续的tokens。
2、自回归思想:挨次重建持续tokens。在使用自回归方式预测缺掉tokens时,模型既可以访谒corrupted文本,又可以访谒之前已经被预测的spans。
3、span shuffling  +  二维位置编码技术。
4、通过改变缺掉spans的数量和长度,自回归空格填充方针可以为条件生成以及无条件生成任务预训练语言模型。
2.1 自回归空格填充任务

给定一个输入文本 x=[x_1,...x_n] ,可以采样得到多个文本spans \{s_1,...s_m\} 。为了充实捕捉各spans之间的彼此依赖关系,可以对spans的挨次进行随机摆列,得到所有可能的摆列调集 Z_m ,此中: S_{z<i}=[s_{z_1}, ..., s_{z{_{i-1}}}] 。所以预训练方针很清晰:


GLM自回归空格填充任务的技术细节:
1、输入x可以被分成两部门:Part A是被损坏的文本 x_{corrupt} ,Part B由masked spans组成。假设原始输入文本是[x1, x2, x3, x4, x5, x6],采样的两个文本片段是[x3]以及[x5, x6]。那么mask后的文本序列是:x1, x2, [M], x4, [M],即Part A;同时我们需要对Part B的片段进行shuffle。每个片段使用[S]填充在开头作为输入,使用[E]填充在末尾作为输出。
2、二维位置编码:Transformer使用位置编码来标识表记标帜tokens中的绝对和相对位置。在GLM中,使用二维位置编码,第一个位置id用来标识表记标帜Part A中的位置,第二个位置id用来暗示跨度内部的相对位置。这两个位置id会通过embedding表被投影为两个向量,最终城市被插手到输入token的embedding表达中。
3、不雅察看GLM中自定义attention mask的设计,非常巧妙:
(1)Part A中的tokens彼此可见,但是不成见B中的任意tokens。
(2)Part B tokens可见Part A。
(3)Part B tokens可见B中过去的tokens,不成见B中未来的tokens。
4、采样方式:文本片段的采样遵循泊松分布,反复采样,直到原始tokens中有15%被mask。
5、总结:模型可以自动学习双向encoder(Part A)以及单向decoder(Part B)。


2.2 多方针预训练

上述方式适合于NLU任务。作者但愿可以训练一个既可以解决NLU任务,又具备文本生成能力的模型。因此除了空格填充方针之外,还需要增加一个生成长文本方针的任务。具体包含以下两个方针:
1、文档级别。从文档中采样一个文本片段进行mask,且片段长度为文档长度的50%~100%。这个方针用于长文本生成。
2、句子级别。限制被mask的片段必需是完整句子。多个片段需覆盖原始tokens的15%。这个方针是用于预测完整句子或者段落的seq2seq任务。
2.3 模型布局

GLM在原始single Transformer的基础长进行了一些改削:
1)重组了LN和残差连接的挨次;
2)使用单个线性层对输出token进行预测;
3)激活函数从ReLU换成了GeLUS。
但我感觉这部门的改削斗劲简单常见。核心和亮点还是空格填充任务的设计。
2.4 GLM微调

对于下游NLU任务来说,凡是会将预训练模型产出的序列或tokens表达作为输入,使用线性分类器预测label。所以预训练与微调之间存在天然纷歧致。
作者按照PET的方式,将下游NLU任务从头表述为空白填充的生成任务。具体来说,比如给定一个已标注样本(x, y),将输入的文本x转换成一个包含mask token的完形填空问题。比如,情感分类任务可以表述为:”{SENTENCE}. It’s really [MASK]”。输出label y也同样会被映射到完形填空的答案中。“positive” 和 “negative” 对应的标签就是“good” 和 “bad。
其实,预训练时,对较长的文本片段进行mask,以确保GLM的文本生成能力。但是在微调的时候,相当于将NLU任务也转换成了生成任务,这样其实是为了适应预训练的方针。但不免有一些牵强。


2.5 各主流模型对比

BERTXLNetT5UniLM
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、不才游任务微调时,自编码比自回归更加低效。
三、尝试

预训练数据集:为了与BERT公平对比,使用与BERT不异的数据集训练——BooksCorpus和English Wikipedia
1、GLM-Base和GLM-Large在不异数据集下的表示优于BERT-Base和BERT-Large。


2、评估GLM多方针任务的表示。短片段采样的GLM-Doc和长片段采样的GLM-Sent,评估其在NLU、seq2seq、空格填充以及零样本语言建模任务上的能力。
GLM-Doc和GLM-Sent仅使用一个预训练方针,因此在NLU上的表示均不如GLM-Large,但仍然优于BERT-Large和UniLM-Large。
3、条件生成任务(Seq2seq)。值得注意的是,GLM-Sent比GLM-Large的表示好,GLM-Doc的表示略差于GLM-Large。这表白教模型拓展文本的文档级此外方针,对条件生成任务的辅佐不大,旨在从context中抽取有效信息。


4、消融尝试。


GLM的本身训练范式(完形填空式微调)对于模型成果的提升最有效;shuffle spans也对性能有明显提升。
<hr/>reference

[1] https://arxiv.org/pdf/2103.10360.pdf

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|T9AI - 深度人工智能平台 ( 沪ICP备2023010006号 )

GMT+8, 2024-11-24 10:48 , Processed in 0.059498 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表