什么是涌现现象
即模型在没有被明确训练执行某些任务的情况下,却能够展现出完成这些任务的能力。这是 因为模型在处理大量数据时学习到了复杂的模式和结构,从而能够泛化到未见过的任务上。
LLM的结构是什么样的
大语言模型通常基于Transformer架构,Transformer由以下结构组成
编码器(Encoder):由多个相同的层堆叠而成,每一层包括多头自注意力机制(Multi-Head Self-Attention)和前馈神经网络(Feed Forward Network),以及残差连接和层归一化(Layer Normalization)。
解码器(Decoder):与编码器类似,但是还包括一个额外的多头注意力层,用于将解码器的输出与编码器的输出进行交互,称为“编码器-解码器注意力”(Encoder-Decoder Attention)。
自注意力机制(Self-Attention Mechanism):允许模型在输入序列的不同位置之间建立关联,这对于理解长距离依赖关系至关重要。
位置编码(Positional Encoding):因为Transformer没有内置的位置感知,所以需要添加位置编码以提供序列中单词的位置信息。
嵌入层(Embedding Layer):将词汇表中的每个词映射到一个高维向量空间,以捕捉词义和上下文信息
LLaMA 输入句子长度理论上可以无限长吗?
理论上输入句子的长度是可以无限长的,但是 实际上输入句子的长度受限于计算资源。
什么是复读机现象?
复读机问题指的是大型语言模型在生成文本时倾向于重复先前的输出,缺乏创新性和多样性
导致复读机现象的原因
模型可能过于依赖过去的文本,或者可能是训练数据中存在大量重复的短语词句或模式,模型可能会过度拟合这些模式
怎么解决复读机问题
- 升高温度,提高采样过程中随机性,提高生成文本的多样性。
- 在生成过程中加入惩罚项,减少重复词或短语的生成概率。
- 使用更广泛的训练数据集,减少模型对特定模式的过度依赖。
各专业领域是否需要各自的大模型
需要,不同专业领域的语言特征和知识体系差异很大,专门针对某一领域的模型往往能更好地理解和生成该领域的文本。
SFT指令微调是什么
SFT (Supervised fine-tuning) 的意思是有监督微调,意味着使用有标签的数据来调整一个已预训练好的语言模型(LLM)使其更适应某一特定任务;通常LLM的预训练是无监督的,但微调过程往往是有监督的。
SFT微调的方法有那些
Adapter-Tuning、P-Tuning、LoRA、QLoRA
什么是LoRA
LoRA是一种参数高效的微调技术,LoRA的核心思想是,在微调过程中,仅更新模型中的一小部分权重,而不是整个模型的所有参数,这样既节省了计算资源,又减少了训练时间
LoRA的原理
LoRA通过在模型的线性层插入低秩矩阵来实现。这些低秩矩阵与原始的高秩权重矩阵相乘,从而改变模型的行为。
LoRA的优点
计算效率高,由于只更新少量的低秩矩阵,LoRA可以减少计算资源的需求,提高训练的效率。
性能稳定,LoRA微调可以在不牺牲太多性能的情况下实现参数高效的微调。
什么是QLoRA
QLoRA跟LoRA基本上没什么区别,就是在LoRA的基础上对低秩矩阵进行量化,将低秩矩阵参数的精度降低到Int8,或者Int4。
LoRA的超参数怎么调整
Rank (
r
):
- 含义: LoRA中低秩矩阵的秩,决定了额外参数的数量。
r
越大,LoRA矩阵越接近原矩阵,模型的表达能力越强,但也意味着更多的参数需要训练。- 调整策略: 一般从较小的值开始尝试(如4或8),然后逐渐增加直到性能不再显著提高。太大的
r
可能会导致过拟合。Alpha (
lora_alpha
):
- 含义: 控制LoRA更新的缩放因子,影响LoRA矩阵对原矩阵的影响力。
- 调整策略:
lora_alpha
通常设置为r
的倍数(如32或64),较高的lora_alpha
意味着LoRA矩阵对最终权重的影响更大。可以根据任务的复杂度调整,更复杂的任务可能需要较大的lora_alpha
。Dropout (
lora_dropout
):
- 含义: 在LoRA矩阵中引入的dropout率,用于正则化和减少过拟合。
- 调整策略: 通常设置在0.05到0.1之间。如果模型在验证集上的性能不佳,可以尝试增加
lora_dropout
。Learning Rate (
lr
):
- 含义: 微调过程中LoRA参数的学习速率。
- 调整策略: 一般情况下,LoRA的学习率可以设置得比完整微调模型时更高,因为LoRA只修改了一小部分参数。可以从标准值(如5e-5)开始尝试,根据性能调整。
Target Modules:
- 含义: 指定哪些层的权重将被LoRA修改。
- 调整策略: 根据模型架构和任务需求选择。例如,对于BERT,可能选择关注“query”、“key”和“value”层
为什么SFT之后LLM的表达能力下降
1、过拟合了
2、欠拟合,微调后仍然在专业领域上表现不好
预训练和SFT操作有什么不同?
预训练和SFT操作的主要区别在于目标和数据集。预训练通常是在大规模的无标签数据集上进行的,目的是让模型学习到通用的语言表示和模式。这个过程不需要人工标注数据,而是通过模型自己从数据中学习。SFT则是在有标签的数据集上进行的,目的是让模型适应特定的任务或领域。这个过程需要人工标注数据,以确保模型能够学习到正确的任务特定的模式和知识。
大模型生成时的参数怎么设置?
常见的参数设置有
- 温度(Temperature):控制生成的文本的随机性。较低的温度值将导致生成更保守的文本,而较高的温度值将导致更多样化的文本。
- Top-k采样:仅从概率最高的k个词中采样,以减少生成文本的随机性。
- Top-p采样:从累积概率超过p的词中进行采样,这有助于生成更相关的文本。
- 最大生成长度:指定生成文本的最大长度。