本文目录导航:
预训练语言模型:GLM
近期,大语言模型(LLMs)引发了全球热议,尤其在国内,开源模型不断涌现。
尽管大多数模型以接口形式提供服务,但清华大学开源的ChatGLM系列令人眼前一亮。
其安装便捷,易于调整以适应个人数据集,成为了我训练自定义大模型的理想选择。
ChatGLM的基础模型是GLM,它的一大创新在于自回归空白填充的自监督训练方法。
通过调整空白区域的大小,GLM既能像encoder-only模型处理NLU(文本分类),又能像decoder-only模型进行NLG(文本生成),还能像seq-to-seq模型进行条件NLG(如对话、机器翻译)。
这种预训练方式实现了编码器、解码器和序列到序列结构的融合,效率非凡。
现有的预训练语言模型大致分为三种:encoder-only(如BERT)、decoder-only(如GPT)和seq-to-seq(如BART)。
GLM的目标是设计一个通用架构,GLM通过自回归空白填充,结合跨度洗牌和2D位置编码,实现了这些模型功能的统一。
空白填充类似于BERT的掩码语言模型,但GLM处理的是句子片段,通过自回归预测内容,相比其他模型,GLM在连续性和长度生成上更具优势。
2D位置编码赋予每个token额外的片段间和片段内位置信息,确保模型在预测时灵活处理不同长度的文本。
GLM采用decoder-only架构,对模型结构做了优化,能够进行多任务训练,如文档级别的长文本生成和句子级别的seq-to-seq任务。
此外,GLM还能通过填空生成的方式适应NLU任务,无需额外的[CLS]标志。
GLM的训练数据集丰富多样,参数量适中,虽未达到大模型的规模,但其开源特性使其成为研究和实践的宝贵资源。
随着ChatGLM系列的后续发展,如ChatGLM2,GLM无疑为预训练语言模型领域开辟了新的可能。
图解N-gram语言模型的原理--以kenlm为例
本文解析基于N-gram的语言模型原理,以KenLM为例深入探讨。
N-gram模型,包括SRILM、IRSTLM、BerkeleyLM和KenLM等,其核心算法思想基本一致,具体实现细节有所差异。
本文聚焦于KenLM,一种在速度与内存使用方面表现卓越的训练工具。
所采用的平滑技术为Modified Kneser-ney smoothing,其在当前属于标准且广泛采用的最佳平滑算法。
为了清晰地阐述训练过程,本文以简单文本为例进行bigram操作,具体文本为:我 你 我 他 我 你。
通过执行特定命令,我们可以生成如图1所示的bigram结果。
让我们逐步解析生成结果的过程。
首先,对文本进行处理,增加表示句子开头和结尾的标记符。
接下来,将每个词映射为唯一的数字id,但本文为直观描述,省略了此步骤。
接着,进行原始计数,即将相同的字合并并排序,形成1-gram和2-gram的原始计数。
调整计数阶段,核心思路关注于lower-gram的计数调整,以反映不同词作为连续词的可能性。
例如,York在语料中出现次数较高,但作为New York的连续词可能性较低,因此需要进行计数调整。
公式(1)详细展示了调整过程,其中涉及原始计数、调整后的计数等关键要素。
对1-gram调整计数进行深入计算,基于特定原则,我们得到调整后计数的结果。
2-gram的调整计数保持不变,遵循公式(1)中的特定条件。
接着是Discounting步骤,旨在将常见N-Gram的概率分配给未出现的N-gram,通过减少常见N-Gram的概率来实现。
公式(2)和(3)提供了不同折扣方法的计算方式,其中涉及k值、n值等变量。
Normalization分为两部分:计算n-gram的概率,称作pseudo probability;计算回退权重,衡量词后面能接不同词的能力。
具体概率计算与回退权重的计算方法,本文以实例进行说明。
Interpolation结合bigram和unigram,以提高概率估计的准确性。
通过公式(4)和(5),我们可以计算每个词的插值概率,实现对未登录词的处理。
通过实例,本文详细解释了N-gram语言模型的训练过程,包括计数、调整计数、Discounting、Normalization和Interpolation等关键步骤,旨在帮助读者深入理解基于N-gram的过程。
参考文献[1]提供了更深入的理论基础,供读者进一步研究。
大语言模型(LLM)训练的方法
自2017年Transformer的问世,语言模型领域迎来爆发式增长,GPT3.5与GPT4.0的出现为智能革命的下一次飞跃带来了希望。
开源大语言模型的涌现,让研究者们得以探索模型训练的内部机制。
训练大语言模型并非易事,近五年来,研究者们探索了多种训练方式以提升效果,包括无监督学习、监督学习与强化学习等。
这些方法各具特点,为模型训练提供了多样化的路径。
1. **无监督预训练**大语言模型训练的开端是进行无监督预训练,利用海量未标记文本数据,使模型捕获语言中的基本特征。
模型参数与预训练数据量间呈现线性关系,参数越多,所需数据量越大,性能越佳。
实践已验证此现象,数据量是模型训练成功的关键。
1. **监督微调 (Supervised Fine Tuning, SFT)**监督微调是通过使用有标注的特定任务数据对预训练模型进行进一步微调,以增强模型对人类指令的响应能力。
此阶段的核心关注点在于高效微调方法、指令数据构造以及如何扩大模型上下文范围。
2. **Lora技术**LoRA技术是一种参数高效适应技术,允许大型预训练模型在微调过程中减少参数学习量,显著节省内存和加速训练。
该技术已被集成到多种训练库中,如PEFT,通过简单配置即可实现。
2. **P-Tuning技术**P-Tuning技术通过优化输入部分提高模型在特定任务上的表现。
此技术可自动调整输入提示以优化模型表现,为模型应用提供了便利。
2. **Prefix-Tuning**Prefix-Tuning技术依赖于模型通过阅读和分析给定上下文生成响应的能力,特别适用于少样本或零样本学习场景,允许模型在不显式训练的情况下适应新任务。
3. **强化学习**强化学习将模型输出文本视为整体,优化目标为生成高质量回复。
此方法不依赖于人工编写的高质量回复,模型根据指令生成回复,并通过奖励机制学习优化。
强化学习尤其适用于生成式任务。
强化学习相较于监督微调的好处在于能够从整体上评估模型输出质量,不依赖于预定义的答案,更适用于生成多样性和敏感性变化的场景。
基于人类反馈的强化学习(RLHF)通过人类调整/评判,确保模型输出与人类意图对齐,实现3H原则:帮助性、真实性与无害性。
通过上述方法,大语言模型训练实现了从无监督预训练到有监督微调、Lora等优化技术的不断进化,以及强化学习在提升模型应用灵活性与质量方面的关键作用。
未来,随着技术的进一步发展,大语言模型将在更多领域展现出其潜力与价值。
评论(0)