大模型常用微调方法 LoRA 和 Ptuning 的原理
LoRA (Low-Rank Adaptation) 方法的核心是在大型语言模型上对指定参数增加额外的低秩矩阵。具体而言,对于原始权重矩阵 W,LoRA 将其分解为两个低秩矩阵 A 和 B 的乘积 (W + BA)。在模型训练过程中,固定 PLM 的参数,只训练降维矩阵 A 与升维矩阵 B。这种方法大幅减少了可训练参数量,同时保持了模型的生成能力,使得在消费级显卡上进行微调成为可能。
Ptuning 方法的核心是使用可微的 virtual token 替换了原来的 discrete tokens,且仅加入到输入层。它使用 prompt encoder(通常由 BiLSTM+MLP 组成)对 virtual token 进行编码学习。与传统的 hard prompt 不同,Ptuning 通过连续向量表示引导模型,无需人工设计提示词,更适合自动化场景。
Stable Diffusion 原理介绍
Stable Diffusion 总共包含三个主要的组件,其中每个组件都拥有一个独立的神经网络:
- Clip Text:用于文本编码。输入为文本,输出为 77 个 token 嵌入向量,其中每个向量包含 768 个维度。它将自然语言转换为模型可理解的语义空间。
- UNet + Scheduler:在信息(潜)空间中逐步处理 / 扩散信息。输入包括文本嵌入和一个由噪声组成的初始多维数组(张量)。通过去噪过程,输出了一个经过处理的信息阵列。
- 自编码解码器(Autoencoder Decoder):使用处理过的信息矩阵绘制最终图像的解码器。输入处理过的信息矩阵,维度为(4, 64, 64),输出结果图像,各维度为(3,512,512)。
为何现在的大模型大部分是 Decoder-only 结构
大模型从模型架构上主要分为三种:Only-encoder, Only-Decoder, Encoder-Decoder 三种模型架构。
- Only-encoder:例如 BERT,通过在大规模无标签文本上进行预训练,然后在下游任务上进行微调,具有强大的语言理解能力和表征能力,但缺乏生成能力。
- Only-Decoder:例如 GPT,通过在大规模无标签文本上进行预训练,然后在特定任务上进行微调,具有很强的生成能力和语言理解能力。其核心在于使用了因果掩码(Causal Masking),确保预测时只能看到当前时刻之前的信息。
- Encoder-Decoder:例如 T5,可以用于多种自然语言处理任务,如文本分类、机器翻译、问答等。
而 LLM 之所以主要都用 Decoder-only 架构,除了训练效率和工程实现上的优势外,在理论上是因为 Encoder 的双向注意力会存在低秩问题,这可能会削弱模型表达能力。就生成任务而言,引入双向注意力并无实质好处。而 Encoder-Decoder 架构之所以能够在某些场景下表现更好,大概只是因为它多了一倍参数。所以,在同等参数量、同等推理成本下,Decoder-only 架构就是最优选择了。
如何缓解 LLMs 复读机问题
LLMs 复读机问题指模型在生成长文本时出现重复段落或句子的现象。缓解策略包括:
- 多样性训练数据:在训练阶段,尽量使用多样性的语料库来训练模型,避免数据偏差和重复文本的问题。
- 引入噪声:在生成文本时,可以引入一些随机性或噪声,例如通过采样不同的词或短语,或者引入随机的变换操作,以增加生成文本的多样性。
- 温度参数调整:温度参数是用来控制生成文本的多样性的一个参数。通过调整温度参数的值,可以控制生成文本的独创性和多样性,从而减少复读机问题的出现。
- 后处理和过滤:对生成的文本进行后处理和过滤,去除重复的句子或短语,以提高生成文本的质量和多样性。
- Beam 搜索调整:在生成文本时,可以调整 Beam 搜索算法的参数。通过调整 Beam 大小和搜索宽度,可以控制生成文本的多样性和创造性。
- 人工干预和控制:对于关键任务或敏感场景,可以引入人工干预和控制机制,对生成的文本进行审查和筛选,确保生成结果的准确性和多样性。
为什么 Transformer 块使用 LayerNorm 而不是 BatchNorm
Batch Normalization 是对这批样本的同一维度特征做归一化,Layer Normalization 是对这单个样本的所有维度特征做归一化。LN 不依赖于 batch 的大小和输入 sequence 的长度,因此可以用于 batchsize 为 1 和 RNN 中 sequence 的 normalize 操作。


