LLM原理与实践(总结汇总)
https://www.datawhale.cn/learn/summary/48
1:引言
【语言模型】
- 语言模型是序列 x 1 : L x_{1:L} x1:L 的概率分布 p。
- 直观上,一个好的语言模型应具有语言能力和世界知识。
- 自回归语言模型允许有效地生成给定提示 x 1 : i x_{1:i} x1:i 的补全 x i + 1 : L x_{i+1:L} xi+1:L。
- 温度可以用来控制生成中的变异量。
【信息理论、英语的熵、n-gram模型】
- 语言模型最初是在信息理论的背景下研究的,可以用来估计英语的熵。
- N-gram模型在计算上极其高效,但在统计上效率低下。
- N-gram模型在短上下文长度中与另一个模型(用于语音识别的声学模型或用于机器翻译的翻译模型)联合使用是有用的。
- 神经语言模型在统计上是高效的,但在计算上是低效的。
- 随着时间的推移,训练大型神经网络已经变得足够可行,神经语言模型已经成为主导的模型范式。
【LLM】
- 单一的大型语言模型是一个万事通(也是一无所长)。它可以执行广泛的任务,并且能够具备上下文学习等新出现的行为。
- 它们在现实世界中得到广泛部署。
- 大型语言模型仍然存在许多重要的风险,这些风险是开放的研究问题。
- 成本是广泛获取的一大障碍。
2:大模型的能力
- GPT-3在广泛的标准NLP基准测试和一次性任务上进行了评估。
- GPT-3可以表现得极好或者非常普通。
- 增加模型的大小和示例的数量都有助于提高性能。
- 有一些启发式的方法可以将语言模型适应到感兴趣的任务。
3:模型架构
【transformer】
- Illustrated Transformer和Illustrated GPT-2:对Transformer的视觉描述非常好。
- Annotated Transformer:Transformer的Pytorch实现。
4:新的模型架构
【平衡专家】
- 只有所有专家都参与进来,混合专家才有效。
- 如果只有一个专家处于活跃状态(例如, g(x)=[0,1,0,0]g(x)=[0,1,0,0] ),那么这就是浪费。
- 此外,如果我们一直处于这种状态,那么未使用的专家的梯度将为零,因此他们将不会收到任何梯度并得到改善。
- 因此,使用混合专家的主要考虑因素之一是确保所有专家都能被输入使用。
【并行】
- 混合专家非常有利于并行。
- 每个专家都可以放置在不同的机器上。
- 我们可以在中心节点计算近似门控函数 g ( x ) g~(x) g (x) 。
- 然后,我们只要求包含激活专家的机器(稀疏)来处理 x x x 。
【MoE】
- 混合专家:起源于将不同专家应用于不同输入的经典理念
- 允许训练更大的语言模型(1.1万亿个参数)
- 与稠密Transformer模型相比,每个输入的效率高得多(FLOP更少)
- 效果难以比较:在相同规模上,直接比较仍然具有挑战性(GPT-3与GLaM与FacebookMoE)
- 对权力下放的重大影响
【RAG】
- 基于检索的模型高度适合知识密集型的问答任务。
- 除了可扩展性之外,基于检索的模型还提供了可解释性和更新存储库的能力。
- 目前尚不清楚这些模型是否具有与稠密Transformer相同的通用能力。
【2种新架构】
- 为了扩大模型规模,需要改进稠密Transformer。
- 混合专家和基于检索的方法相结合更有效。
- 如何设计更好的、可扩展的体系结构仍然是一个悬而未决的问题。
5:大模型的数据
- 在机器学习中,训练数据和测试(评估)数据是相似的,或者至少是同一类型的。
- 在大型语言模型中,训练数据就是“原始文本”。
6:模型训练
【初始化】
- 给定矩阵 W ∈ R m × n W∈Rm×n W∈Rm×n,标准初始化(即,xavier初始化)为 W i j ∼ N ( 0 , 1 / n ) Wij∼N(0,1/n) Wij∼N(0,1/n)。
- GPT-2和GPT-3通过额外的 1/N 缩放权重,其中 N 是残差层的数量。
- T5将注意力矩阵增加一个 1/d (代码)。
7:大模型之Adaptation
【Probing】
- 探测通过冻结语言模型表示编码器和优化特定任务的探针来工作。
- 这些模型可以是线性的或浅前馈预测头,提供了一种灵活的方法来理解和解释深度学习模型的内部工作机制。
- 固定长度表示的策略提供了灵活而有效的解决方案。
【Fine-tuning】
- 微调可以使预先训练的语言模型更好地符合人类的期望和需求。
- 通过监督学习、人类反馈和强化学习等手段,可以显著提高模型在特定任务和场景下的性能。
- 需关注并解决某些方面的挑战,如偏见和虚构信息的产生,以确保语言模型的安全和可靠使用。
【Lightweight Fine-tuning】
【下游任务】
- 探测法(Probing):探测法在冻结的语言模型之上训练一个特定任务的预测头,将语言模型视为良好的表示提取器。冻结语言模型倾向于限制该方法的表现能力。
- 微调(Fine-tuning):微调将大型语言模型参数视为下游任务的进一步训练的初始化,这比探测更具表现力,但也更昂贵,因为我们必须为每个下游任务保存整个模型。
- 轻量级微调(Lightweight fine-tuning):轻量级微调在微调和探测之间取得了平衡,只优化少量参数(模型的<1%),但它优化了模型的高杠杆部分,因此仍然非常具有表现力。 通过上述方法,可以更灵活地应对各种不同的下游任务,既实现了对特定任务的精确适配,又在一定程度上控制了计算和存储的成本,从而在实际应用中取得更好的性能和效率。