大语言模型(Large Language Models,LLMs)是指通过大规模数据预训练并具有强大自然语言处理能力的模型。它们通常基于Transformer架构,并在各种任务上表现出色,包括文本生成、翻译、摘要、对话系统等。以下是关于LLMs的详细介绍:
大语言模型的主要架构类型
- Prefix Decoder
-
- 介绍:输入采用双向注意力,输出采用单向注意力。这种架构能充分利用上下文信息,同时保证生成文本的连贯性。
- 代表模型:ChatGLM(清华大学)、ChatGLM2、U-PaLM
- 特点:适用于对话系统和生成任务,通过双向注意力机制捕捉输入的全局上下文信息,然后通过单向注意力机制生成连贯的输出。
- Casual Decoder
-
- 介绍:完全采用单向注意力机制,从左到右依次生成文本。
- 代表模型:GPT系列(GPT-1、GPT-2、GPT-3、GPT-4)、LLaMA-7B、LLaMA衍生系列
- 特点:适用于语言建模和生成任务,生成的每个单词只依赖于前面已生成的内容,确保生成过程的连贯性和一致性。
- Encoder-Decoder
-
- 介绍:编码器使用双向注意力,解码器使用单向注意力,适用于序列到序列的任务。
- 代表模型:T5、Flan-T5、BART、Transformer
- 特点:编码器捕捉输入序列的全局信息,解码器逐步生成输出,广泛应用于机器翻译、文本摘要等任务。
大语言模型的主要特点
- 大规模数据预训练:LLMs通常在大规模文本数据上进行预训练,从而学习到丰富的语言知识和上下文信息。
- 微调适应多任务:预训练后的LLMs可以通过少量的任务特定数据进行微调,从而适应具体的应用场景和任务需求。
- 强大的生成能力:LLMs在文本生成、对话系统等任务中表现出色,能够生成连贯且有意义的文本。
- 广泛应用:LLMs在自然语言处理的多个领域中得到了广泛应用,包括内容创作、信息检索、对话系统、机器翻译等。
代表性大语言模型
- GPT(Generative Pre-trained Transformer)系列
-
- 架构:Casual Decoder
- 特点:通过单向注意力机制从左到右生成文本,适用于语言模型和生成任务。
- 代表模型:GPT-1、GPT-2、GPT-3、GPT-4
- BERT(Bidirectional Encoder Representations from Transformers)
-
- 架构:Encoder-only
- 特点:使用双向注意力机制,适用于理解类任务,如分类、问答、命名实体识别等。
- 代表模型:BERT、RoBERTa
- T5(Text-To-Text Transfer Transformer)
-
- 架构:Encoder-Decoder
- 特点:将所有任务转换为文本到文本的形式,广泛应用于多种自然语言处理任务。
- 代表模型:T5、Flan-T5
- ChatGLM系列
-
- 架构:Prefix Decoder
- 特点:输入采用双向注意力,输出采用单向注意力,适用于对话生成任务。
- 代表模型:ChatGLM(清华大学)、ChatGLM2
大语言模型的优势和挑战
优势:
- 强大的理解和生成能力:LLMs在自然语言理解和生成任务中表现出色,能够处理复杂的语言任务。
- 广泛的适应性:通过微调,LLMs可以适应各种具体任务,具有很高的灵活性和通用性。
- 丰富的知识库:由于在大规模数据上进行预训练,LLMs具有丰富的语言知识和上下文信息。
挑战:
- 计算资源需求高:训练和推理大语言模型需要大量的计算资源和存储空间。
- 偏见和伦理问题:LLMs可能会反映训练数据中的偏见和伦理问题,需要在应用中进行谨慎处理。
- 解释性和可控性:LLMs的内部机制较为复杂,难以解释和控制其生成的内容。‘
LLMs基础
1 介绍一下大模型
大模型:一般指1亿以上参数的模型,但是这个标准一直在升级,目前已有万亿参数以上的模型。
2 目前主流的开源模型体系
- prefix Decoder
- 介绍:输入双向注意力,输出单向注意力
- 代表模型:ChatGLM(清华)、ChatGLM2、U-PaLM
- casual Decoder
- 介绍:从左到右的单向注意力
- 代表模型:LLaMA-7B、LLaMA衍生系列
- Encoder-Decoder
- 介绍:输入双向注意力,输出单向注意力
- 代表模型:T5、Flan-T5、BART、Transformer
- 三者的区别
3 LLM的训练目标
- 语言模型训练目标
LLMs的训练通常采用自回归或自编码的方式,主要目标是最大化模型生成目标文本的概率。
- 预训练目标
LLMs通常通过预训练和微调两个阶段进行训练。预训练阶段的目标是通过大规模的无标签数据进行自监督学习,以获得广泛的语言理解能力。具体的预训练目标包括:
- 微调目标
微调阶段的目标是使模型适应特定任务。微调时,模型在较小规模的带标签数据上进行训练,以优化特定任务的性能。常见的微调目标包括:
- 多任务学习目标
有些LLMs在预训练和微调阶段同时进行多个任务的学习,称为多任务学习。其目标是通过共享参数和联合训练,增强模型的通用性和泛化能力。比如同时优化文本分类、序列标注、生成等多个任务的损失函数。
4 Decoder only结构
Decoder-only结构是一种仅包含解码器的神经网络架构,没有编码器。在该结构中,输入序列的处理通常是通过将特定的起始标记(如CLS)作为解码器的输入,然后通过逐步生成输出序列来对输入进行处理。
为什么现在大型语言模型大部分采用Decoder-only结构?
- 生成任务的需求增加:随着对生成式任务(如文本生成、语言翻译等)需求增加,Decoder-only结构更适合于这类任务,更擅长生成连贯的自然语言文本序列。
- 参数效率高:Decoder-only通常比Encoder-Decoder结构具有更高的参数效率,只需要单向解码器。
- 训练和推理速度快:因为不需要进行编码器-解码器的信息传递。
- 模型设计简单
- 更好的语言模型能力:Decoder-only结构通过自回归方式训练,能够捕捉输入序列的信息,生成符合语法的语义规则的输出序列。
Encoder-only结构
Encoder-only架构的LLMs更擅长对文本内容进行分析、分类,包括情感分析、命名实体识别。BERT训练是基于next-sentence prediction task和mask language modeling,next-sentence prediction task是将原句子打乱成不同顺序的句子,让BERT找出正确语序的原句。[CLS] token是一个占位符标记,它提示模型返回True或False的标签,如果句子的顺序是正确的,模型返回True,如果句子顺序被打乱,返回False。[SEP] token用来分割2个句子,mask language modeling则是在大量的文本语料库中将数据中的某部分遮住mask,让BERT来预测mask的内容。
5 分词器
在NLP领域中,负责转换token的组件是tokenizer。每个模型都有特定的tokenizer,但处理过程类似。
from modelscope import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("qwen/Qwen-1_8B-Chat", trust_remote_code=True)
print(tokenizer('杭州是个好地方'))
#{'input_ids': [104130, 104104, 52801, 100371], 'token_type_ids': [0, 0, 0, 0], 'attention_mask': [1, 1, 1, 1]}
# 有可能部分词语变为一个token
LLMs进阶
1 生成式大模型
生成式大模型是指能用于创作新内容,例如文本、图片、音频以及视频的一类深度学习模型。其模型参数量都在Billion级别,可通过条件或上下文引导,产生生成式的内容。
大模型是怎么让生成的文本丰富而不单调?
- 从训练角度来看:基于Transformer的模型参数量巨大,有助于模型学习到多样化的语言模式与结构。随着各种模型微调技术的出现,如P-Tuning、Lora,让大模型微调成本更低,也可以让大模型在垂直领域由更强的生成能力。在训练过程中加入一些设计好的Loss,可以更好地抑制模型生成单调内容。
- 从推理角度来看:基于Transformer的模型可以通过引入各种参数与策略,如Tempetature来改变每次生成的内容。
2 复读机问题
- 什么是LLMs复读机问题?
- 字符级别重复,指大模型针对一个字或一个词重复不断地生成。
- 语句级别重复,大模型针对一句话重复不断地生成。
- 章节级别重复,多次相同的prompt输出完全相同或十分近似的内容,没有一点创新性的内容。比如让大模型写一篇关于春天的作文,结果发现大模型的生成结果千篇一律。
- 大模型针对不同的prompt也可能生成类似的内容,且有效信息很少、信息熵偏低。
- 为什么会出现?
- 数据偏差:LLMs通常是通过预训练阶段使用大规模无标签数据进行训练的。如果训练数据中存在大量的重复文本或者某些特定的句子或短语出现频率较高,模型在生成文本时倾向于复制这些模型。
- 训练目标的限制:LLMs的训练通常是基于自监督学习的方法,通过预测下一个词或掩盖词学习语言模型。这样的训练目标可能使得模型更倾向于生成与输入相似的文本。
- 缺乏多样性的训练数据:虽然LLMs可以处理大规模的数据,但如果训练数据中缺乏多样性的语言表达和语境,模型可能无法学习到足够多的多样性和创造性。
- 模型结构和参数设置:LLMs的结构和参数设置也可能对复读机问题产生影响。
- 从induction head机制的影响角度:也就是模型会倾向于从前面已经预测的word中挑选最匹配的词。
- 从信息熵的角度分析:比如电商标题,作为一种语句连贯性很弱、基本是词序堆叠的文本,它的信息熵是很高的,下一个词预测时,概率后验基本上很难预测出来,Softmax的分布也倾向于平稳,也就是说模型也预测不出来下一个词应该是什么。因此,模型会倾向于从前面的word里面挑选。无论是专业翻译大模型M2M、NLLB还是通用语言模型ChatGPT、LLaMA等,<HJIKL, HJIKLL, HJIKLLL...>的二维分布基本一致,也就是添加LLLL后,文本语义基本没有变化。
为什么会一直是一个词L的反复重复?因为当前面t-1个词的分布趋于稳定,t以及t+1后面重复出现的L词的分布基本会沿着前面t-1个词的二维分布展开,也就是常说的各项异性,虽然生成数量变长了,但<HJIKL, HJIKLL, HJIKLLL...>的分布几乎不影响。
LLMs强化
1 Transformer、Bert、GPT结构
1. Transformer
Transformer是 Vaswani et al. 在2017年提出的一种用于自然语言处理和其他序列到序列任务的深度学习模型。Transformer结构摒弃了传统的RNN和CNN,主要依赖于自注意力机制。其主要组件如下:
- 自注意力机制(Self-Attention):能够在处理当前单词时考虑输入序列中所有其他单词的信息。通过计算query、key、value三者的加权和来实现注意力分配。允许模型根据输入序列中的不同部分来赋予不同的注意权重,从而更好地捕捉语义关系。
- 多头注意力机制(Multi-Head Attention):通过使用多个独立的自注意力机制,模型能够捕捉到更多的特征信息。假设有一个输入序列"The cat sat on the mat",每个注意力头可能会关注不同的词之间的关系,如:一个头关注"cat"和"sat"之间的关系,另一个头关注"on"和"mat"之间的关系。每个头输出被连接并通过线性变换得到最终输出,更全面细致理解和表示输出序列的语义和结构。
- 堆叠层:Transformer通常由多个相同的编码器和解码器层堆叠而成,利于模型学习复杂的特征表示。
- 前馈神经网络:每个注意力层后面接一个前馈神经网络,对特征进行非线性变换和映射。
- 位置编码:引入位置编码来给序列中的每个位置添加位置信息。
- 残差连接和层归一化:使模型训练深度模型更加稳定和高效,有助于减轻训练过程中梯度消失和爆炸。
Transformer核心思想是通过自注意力机制和位置编码来捕捉输入序列中的长距离依赖关系。自注意力机制让模型在处理每个输入元素时能够关注到所有其他元素,从而学习到输入序列中的全局依赖关系。位置编码用于解决传统RNN等模型在处理序列数据时对位置信息忽略的问题。
Transformer模型主要由两部分组成:编码器和解码器。编码器由多个相同的层堆叠而成,每个层包含了一个自注意力子层和一个简单的全连接层。解码器同样由多个相同的层组成,但在每个解码层中还包含一个跨注意力子层,用于捕捉编码器的输出。
2. BERT
BERT由Google在2018年提出,是一种基于Transformer的预训练语言模型,旨在通过双向训练来捕捉文本中的上下文信息。与GPT等模型不同,BERT在训练时同时考虑了文本的左信息和右信息,从而能更好地理解上下文含义。这一特定使得BERT在许多NLP任务中取得了显著的性能提升。
BERT基本结构与Transformer类似,由多个相同的编码器层堆叠而成。每个编码器都包含一个双向的自注意力子层和一个前馈神经网络子层。BERT的训练过程涉及了两个阶段:预训练和微调。在预训练阶段,BERT使用了大规模无标注文本数据来学习词向量表示;微调阶段,BERT针对特定任务进行训练,以适应下游任务的需求。
BERT缺点:1. 计算资源需求高 2. 推理速度慢:由于模型的双向性和复杂性。
3. GPT
GPT由OpenAI提出,是一种基于互联网的、可用数据来训练的、文本生成的深度学习模型。GPT强调文本生成能力,并采用了一种自回归语言模型的技术来实现。在自回归语言模型中,模型逐个生成文本中的每个单词,并使用生成的单词来预测下一个单词。
GPT的结构与BERT类似,主要由一系列相同的编码器层组成。每个编码器层包含一个自注意力子层和一个前馈神经网络子层。GPT的训练过程也分为预训练和微调两个阶段。在预训练阶段,GPT使用大量文本数据来学习词向量表示;在微调阶段,GPT针对特定任务进行训练,以适应下游任务的需求。
- 优点:
-
- 强大的生成能力:GPT在文本生成任务中表现出色,能够生成连贯的长文本。
- 简单且高效:由于单向性,GPT训练和推理相对简单和快速。
- 缺点:
-
- 上下文理解有限:由于单向结构,GPT不能像BERT一样理解上下文的所有信息。
- 预训练数据需求高:GPT需要大量的数据来预训练。
BERT和GPT虽然都是基于Transformer的预训练语言模型,但在应用场景和生成方式存在一些差异。BERT更适用于理解型任务,如情感分析、问答和语义匹配等,而GPT更适用于生成型任务,比如机器翻译、文本摘要和对话系统等。此外,BERT采用双向训练方式,能够更好地理解上下文含义;而GPT采用了自回归生成方式,能够更好地生成连贯的文本内容。
2 梯度消失和梯度爆炸
- 梯度消失
梯度消失问题指的是在反向传播过程中,梯度值逐渐减小,最终变得非常小甚至为0,导致权重无法更新。
- 激活函数的选择:某些激活函数(如sigmoid和tanh)在输入较大或较小时,其梯度会变得非常小。
- 链式法则:在反向传播中,梯度通过链式法则传播。若网络层数很多,梯度是多个小于1的数值相乘,最终结果为趋近于0。
- 梯度爆炸
梯度爆炸指的是在反向传播过程中,梯度值逐渐增大,导致权重更新异常大,模型不稳定或无法收敛。
- 初始化不当:如果网络权重初始化得过大,经过多层反向传播后,梯度可能会指数级增大。
- 链式法则:与梯度消失类似,在多层网络中梯度是多个大于1得数值相乘,最终结果会变得非常大。
解决方法:
- 梯度消失
- 权重初始化:使用合适的权重初始化方法。
- 激活函数:选择不会导致梯度消失的激活函数,如ReLU、GELU等。
- 批归一化:在每层输出后使用批归一化可以稳定梯度的分布。
- 梯度爆炸
- 权重初始化
- 梯度裁剪:在反向传播过程中,对梯度进行裁剪,将梯度限制在某个范围内。
- 学习率调整:避免学习率过大导致梯度爆炸。
部分参照网络资料,仅供学习参考。