专栏名称: 图灵教育
是好书,把我们联系在一起
目录
相关文章推荐
科幻世界SFW  ·  新刊速递 | ... ·  2 天前  
DataEye短剧观察  ·  DataEye短剧热力榜:6部短剧播放超3亿 ... ·  昨天  
DataEye短剧观察  ·  DataEye短剧热力榜:6部短剧播放超3亿 ... ·  昨天  
科幻世界SFW  ·  悼念向际纯:中国科幻绘画的开拓者 ·  3 天前  
河北青年报  ·  抖音、快手、微信同日宣布:下架! ·  3 天前  
51好读  ›  专栏  ›  图灵教育

2024 年值得关注的 AI 研究论文 Part 1

图灵教育  · 公众号  ·  · 2025-01-02 16:21

正文

为了迎接新年的到来,我在 2024 的最后一天终于完成了【2024年AI研究亮点】的文章初稿。这篇文章涵盖了多个主题,从混合专家模型(Mixture-of-Experts)到新的 LLM 精度缩放定律。

全面回顾 2024 年所有的重大研究亮点,恐怕需要写一本书才行。即使对于这样一个发展迅猛的领域来说,也可谓是成果异常丰硕的一年。为了保持文章的简洁,我决定今年只聚焦于 LLM 的研究。但即便如此,在如此多的重要进展中,如何选择其中的一部分呢?我能想到的最简单方法就是每月重点介绍一篇论文。

因此,在这篇文章中,我将分享一些我个人认为既有趣又有影响力的研究论文。当然,这篇文章只是整个系列的第一部分,聚焦于 2024 年上半年(1 月至 6 月)。系列的第二部分将涵盖 7 月至 12 月的内容,预计会在 1 月晚些时候分享。

需要说明的是,这篇文章的选择标准难免带有一定的主观性,基于我 2024 年注意到的那些特别突出的研究。我尽量选择了多样化的内容,因此这篇文章不仅仅是关于 LLM 的发布。

如果你在寻找更全面的 AI 研究论文列表,不妨查看我之前的文章(【 LLM 研究论文:2024年度精选】https://magazine.sebastianraschka.com/p/llm-research-papers-the-2024-list)。

对于读过我之前文章的读者,我很高兴地告诉大家,我的身体状况已经有所好转,正在慢慢但稳步地恢复!同时,我想由衷地感谢大家的关心和支持。这些暖心的鼓励对我来说意义非凡,帮助我度过了一些艰难的日子!

祝大家新年快乐,阅读愉快!

一月 | Mixtral 的混合专家模型 (Mixture of Experts)

2024 年 1 月刚刚开始,Mistral AI 团队便在 1 月 8 日发布了 Mixtral of Experts 论文,该论文介绍了 Mixtral 8x7B,一种稀疏混合专家模型(Sparse Mixture of Experts,简称 SMoE)。

这篇论文和模型在当时都产生了很大的影响,因为 Mixtral 8x7B 是首批开放重量级 MoE LLM(之一),并且性能非常出色:在各种基准测试中都优于 Llama 2 70B 和 GPT-3.5。

1.1 理解混合专家模型(MoE)

MoE,即混合专家模型,是一种集成模型,它在 GPT 类解码器架构中结合了多个较小的“专家”子网络。每个子网络被认为负责处理不同类型的任务,或者更具体地说,处理不同的 token。其核心理念是,通过使用多个较小的子网络替代一个大型网络,MoE 模型能够更高效地分配计算资源。

具体来说,在 Mixtral 8x7B 中,用 8 个专家层替换变换器(Transformer)架构中的每个前馈模块(Feed-Forward Module)。如下图所示,这种设计极大地优化了计算效率。

带注释的转换器架构来自《Attention Is All You Need》 https://arxiv.org/abs/1706.03762

在“稀疏混合专家”(Sparse Mixture of Experts)模型中,“稀疏”(Sparse)指的是在任意时刻,只有专家层的子集(在 Mixtral 8x7B 中通常是 8 个中的 1 到 2 个)被激活,用于处理一个 token。

正如上图所示,这些子网络替代了 LLM 中的前馈模块。前馈模块本质上是一个多层感知器(MLP)。用 类似 PyTorch 的伪代码表示,大致如下:

class FeedForward(torch.nn.Module):   
    def __init__(self, embed_dim, coef):        
        super().__init__()
        self.layers = nn.Sequential(
            torch.nn.Linear(embed_dim, coef*embed_dim),
            torch.nn.ReLU(),
            torch.nn.Linear(coef*n_embed, embed_dim),
            torch.nn.Dropout(dropout)
        )    

    def forward(self, x):
       return self.layers(x)

此外, Mixtral 模型中还包含一个路由模块(Router Module,也称为门控网络,Gating Network),该模块将每个 token 嵌入重定向到 8 个专家前馈模块中的某一个。 这 8 个专家前馈层的输出随后被汇总。

由于这篇文章还需要介绍另外11篇论文,因此我会对 Mixtral 模型的描述尽量简洁。不过,如果你想了解更多细节,可以参考我之前的文章【模型融合、混合专家以及面向小型LLM】https://magazine.sebastianraschka.com/i/141130005/mixtral-of-experts。

1.2 混合专家模型在当今的意义

2024 年年初,我原以为开放权重的 MoE 模型会比现在更加流行和广泛应用。虽然它们并非无关紧要,但许多当前最先进的模型仍然依赖于密集(传统)的LLM架构,而不是 MoE 模型。例如,Llama 3、Qwen 2.5、Gemma 2 等。然而,对于一些专有架构(比如 GPT-4、Gemini 和 Claude)的底层设计,我们无法得知是否使用了 MoE 结构,它们可能在内部采用了 MoE。

无论如何,MoE 架构仍然非常有意义,尤其是它提供了一种高效扩展大语言模型的方法。通过在每次输入时只激活模型参数的一部分,MoE 能够降低计算成本,同时不牺牲模型容量。

顺便一提,在撰写本文后,12月发布了一个令人惊喜的模型——表现非常优异的DeepSeek-V3,它采用了MoE架构。所以可以肯定的是,MoE模型依然非常重要!

二月 | 权重分解的 LoRA(Weight-Decomposed LoRA)

如果你曾对开放权重的 LLM 进行微调,那么很有可能某个时候你使用过低秩适配(LoRA, Low-Rank Adaptation),一种高效的参数微调方法。

如果你是 LoRA 的新手,我之前写过一篇文章《使用LoRA(低秩适配)微调LLM的实用技巧》https://magazine.sebastianraschka.com/p/practical-tips-for-finetuning-llms,可能对你有所帮助。此外,我的书《从零开始构建大模型》(Build A Large Language Model (From Scratch))的附录 D 中还提供了一段从头实现 LoRA 的代码。

我的《从零开始构建大模型》的 中文版 正在紧锣密鼓地准备中,出版社希望能在 3 月与大家见面(比最初预计出版时间提前了许多)。

由于 LoRA 是一种非常流行且广泛使用的方法,而我最近玩了一种新变体时特别有趣,因此我二月份的推荐论文是由 Liu 及其团队在 2024 年 2 月发布的 DoRA: Weight-Decomposed Low-Rank Adaptation(权重分解的低秩适配)。

2.1 LoRA 回顾

在介绍 DoRA 之前,先快速回顾一下 LoRA 的原理:

在完整微调中,我们会通过计算一个大的权重更新矩阵 ΔW 来更新 LLM 中的每个大型权重矩阵 W。而 LoRA 的基本思想是将 ΔW 近似为两个较小矩阵 A 和 B 的乘积。因此,我们得到的不是 W + ΔW,而是 W + A·B。这种方法极大地减少了计算和内存的开销。

下图并排展示了完整微调(左)和 LoRA(右)的公式和原理。

常规微调(左)和 LoRA 微调(右)的图示。

2.2 从 LoRA 到 DoRA

在 《DoRA:权重分解低秩自适应》(2024 年 2 月 https://arxiv.org/abs/2402.09353)中,Liu 等人对 LoRA(低秩适配)方法进行了拓展。他们首先将预训练的权重矩阵分解为两部分:一个是表示大小的向量 m(magnitude vector),另一个是表示方向的矩阵 V(directional matrix)。这种分解方法基于这样一个概念:任何向量都可以通过其长度(大小)和方向来表示。在这里,这一概念被应用于权重矩阵的每一列向量。

完成分解后,DoRA 仅对方向矩阵 V 进行 LoRA 风格的低秩更新,而大小向量 m 则单独进行训练。这种改进方法旨在更灵活地适配权重的更新,同时保留权重的大小信息和方向信息的独立性。留权重的大小信息和方向信息的独立性。

来自 DoRA 论文的注释插图(https://arxiv.org/abs/2402.09353)

这种两步方法使 DoRA 比标准的 LoRA 更具灵活性。与 LoRA 倾向于同时对大小和方向进行统一缩放的方式不同,DoRA 可以在不增加大小(magnitude)的情况下,进行更精细的方向(direction)调整。结果是,DoRA 在性能和稳定性上都有所提升:即使使用更少的参数,它也能超越 LoRA 的表现,并且对秩(rank)的选择不那么敏感。

这里我将这一部分简要说明,因为后面还有 10 个部分需要介绍。如果你对细节感兴趣,我早些时候专门写过一篇文章: 【改进 LoRA:从零实现权重分解的低秩适配(DoRA)】 https://magazine.sebastianraschka.com/p/lora-and-dora-from-scratch,其中详细讲解了这个方法。

2.3 LoRA 及其衍生方法的未来

DoRA 是对原始 LoRA 方法的一次小幅而合理的改进。虽然它还没有被广泛采用,但其引入的复杂性非常有限,因此在下一次微调 LLM 时,值得将其纳入考虑范围。总体而言,我预计 LoRA 及其类似方法将继续受到欢迎。例如,Apple 最近在其 论文 《Apple Intelligence Foundation Language Models》 (https://arxiv.org/abs/2407.21075)中提到,他们使用 LoRA 来实现大语言模型在设备端的任务专用化。

三月 | 持续预训练大语言模型的实用技巧

据我所知,指令微调(instruction-finetuning)是 LLM 从业者中最常见的微调方式。这种方法目标是让公开可用的大语言模型更好地遵循指令,或者让这些模型专注于某些子集或新指令。

然而,如果目标是让模型吸收新知识,持续预训练(有时也称为连续预训练)才是更为有效的路径。

在本节中,我将简要总结 Ibrahim 等人在 2024 年 3 月发表的论文 《简单且可扩展的持续预训练大语言模型的策略》 https://arxiv.org/abs/2403.08763) 中的内容。这篇论文以其清晰直接的思路令人耳目一新。

3.1 简单技巧也有效

这篇关于 《持续预训练大语言模型》 https://arxiv.org/abs/2403.08763)  的论文长达 24 页,报告了大量实验,并配有无数图表,以当今的标准来看极其详尽。

那么,成功应用持续预训练的主要技巧是什么?

  1. 简单的重新热启动(re-warming)并重新衰减(re-decaying)学习率。

  2. 在新数据集中加入一小部分(例如 5%)原始预训练数据,以防止灾难性遗忘 (catastrophic forgetting)。值得注意的是,更小的比例(例如 0.5% 和 1%)也被证明是有效的。

关于第 1 点的“重新热启动和衰减”,具体来说,这意味着我们在持续预训练阶段,采用与 LLM 初始预训练阶段完全相同的学习率调度策略,如下图所示。

持续预训练的时间表。图片基于《从头开始构建大型语言模型》,https://github.com/rasbt/LLMs-from-scratch/blob/main/appendix-D/01_main-chapter-code/appendix-D.ipynb

据我所知,重新热启动与衰减学习率,以及在新数据中加入部分原始预训练数据,这些方法或多或少已经是业内的常识。然而,我非常欣赏这篇论文的作者,他们用如此详尽的 24 页报告对这些方法进行了正式的验证和测试,体现了学术的严谨性。

如果你对更多细节感兴趣,可以参考我之前的文章 【LLM 预训练与奖励模型评估的实用技巧】 https://magazine.sebastianraschka.com/p/tips-for-llm-pretraining-and-evaluating-rms,其中对这篇论文进行了更深入的讨论。

3.2 这些简单技巧会继续有效吗?

我没有理由认为这些方法在未来的 LLM 中不会继续有效。然而,需要注意的是,近年来的预训练流程已经变得更加复杂,通常包含多个阶段,例如短上下文和长上下文的预训练。(关于这一点,我在 【新 LLM 预训练与后训练范式】 一文中有更详细的阐述 https://magazine.sebastianraschka.com/p/new-llm-pre-training-and-post-training 。)

因此,为了获得最佳效果,这篇论文中提出的策略可能需要根据具体情况进行调整和优化。

四月 | 用于 LLM 对齐的 DPO 或 PPO,抑或两者兼用?

四月的选择令人纠结。例如,Kolmogorov-Arnold 网络(https://arxiv.org/abs/2404.19756)在那个月引起了轰动。然而,就目前来看,这种热潮很快就消退了。这可能是因为其理论保证难以在实际中实现,同时缺乏具有竞争力的结果或基准测试,而其他架构则更具可扩展性。

因此,我更倾向于选择一篇更具实用性的论文:Xu 等人人于 2024 年 4 月发表的 《DPO 是否优于 PPO 用于 LLM 对齐?一项综合研究》 (https://arxiv.org/abs/2404.10719)。

4.1 RLHF-PPO 和 DPO:它们是什么?

在总结论文内容之前,先简要介绍一下近端策略优化(Proximal Policy Optimization, PPO)和直接偏好优化(Direct Preference Optimization, DPO)。这两种方法都是通过人类反馈强化学习(Reinforcement Learning with Human Feedback, RLHF)实现 LLM 对齐的热门选择。

RLHF 是一种旨在使 LLM 符合人类偏好的方法,不仅能提升模型响应的质量,还能提高其安全性。

典型的(简化的)LLM 培训生命周期。

传统上,RLHF-PPO 是 InstructGPT 和 ChatGPT 等模型及平台中训练 LLM 的关键步骤。然而,由于其简单性和高效性,DPO 从去年开始逐渐受到关注。与 RLHF-PPO 不同,DPO 不需要单独训练一个奖励模型,而是直接使用类似分类任务的目标来更新 LLM。如今,许多 LLM 已经开始采用 DPO,尽管目前仍缺乏与 PPO 的全面比较。

以下是我今年早些时候制作并分享的两篇关于 RLHF 和 DPO 的资源:

  • 【LLM 训练:RLHF 及其替代方法】 https://magazine.sebastianraschka.com/p/llm-training-rlhf-and-its-alternatives
  • 【用于 LLM 对齐的直接偏好优化(DPO):从零实现】 https://github.com/rasbt/LLMs-from-scratch/blob/main/ch07/04_preference-tuning-with-dpo/dpo-from-scratch.ipynb
4.2 PPO 通常优于 DPO

《DPO 是否优于 PPO 用于 LLM 对齐?一项综合研究》 (https://arxiv.org/abs/2404.10719)是一篇结构清晰、实验详尽的论文。主要结论是: PPO 通常优于 DPO,尤其是在处理分布外数据时,DPO 表现不佳。

这里的“分布外数据”(out-of-distribution data)是指模型之前在指令数据上(通过监督微调)进行训练,而这些数据与 DPO 使用的偏好数据并不一致。例如,一个模型可能在通用的 Alpaca 数据集上完成训练后,再进行 DPO 微调,而此时所用的是另一个带有偏好标注的数据集。

改善 DPO 在分布外数据上的表现的一种方法 是,首先使用偏好数据集进行监督式指令微调,然后再进行 DPO 微调。

论文的主要发现已总结在下图中。

注释表来自《DPO 是否优于 PPO 用于 LLM 对齐?一项综合研究》论文。

4.3 PPO 和 DPO 的现状

在生成的 LLM 模型的原始性能方面,PPO 可能略占优势。然而,DPO 实现起来更加简单,计算效率更高(毕竟无需单独训练和使用奖励模型)。因此,据我所知,DPO 在实际应用中比 RLHF-PPO 更为广泛。

一个有趣的例子是 Meta AI 的 Llama 模型: Llama 2 使用了 RLHF-PPO 进行训练,而更新的 Llama 3 则采用了 DPO。

有意思的是,现在一些最新的模型甚至同时使用 PPO 和 DPO。例如,Apple 的 Foundation 模型和 Allen AI 的 Tulu 3。

五月 | LoRA 学得更少,也忘得更少

我发现另一篇关于 LoRA 的论文特别有趣(我保证这是这 12 篇论文中最后一篇关于 LoRA 的!)。尽管这篇论文并非颠覆性突破,但我很喜欢它,因为它正式化了关于 LLM 微调(包括使用和不使用 LoRA)的某些常识。这篇论文是 Biderman 等人在 2024 年 5 月发表的 《LoRA 学得更少,也忘得更少》 (https://arxiv.org/abs/2405.09673)。

这项研究对比了低秩适配(LoRA)和完整微调在大语言模型(LLM)上的表现,重点关注两个领域(编程和数学)和两种任务(指令微调和持续预训练)。如果你需要回顾 LoRA 的基础知识,可以参考上文 2 月部分的介绍。

5.1 LoRA 学得更少

《LoRA 学得更少,也忘得更少》 的研究表明,LoRA 在学习新知识时比完整微调明显逊色,尤其是在需要获取新知识的任务中(如编程)。当任务仅为指令微调时,这种差距会减小。这表明,与将一个预训练模型转换为一个指令跟随者相比,在新数据上进行预训练(学习新知识)更适合采用完整微调方法。

不过,这其中还有一些细微差别。以数学任务为例,LoRA 和完整微调之间的性能差距会缩小。这可能是因为数学问题对大语言模型(LLM)来说相对熟悉,在预训练期间模型很可能已经接触过类似的问题。而编程任务属于一个更加独特的领域,需要模型学习更多新的知识。因此,任务越偏离模型预训练时的数据分布,完整微调在学习能力上的优势就越明显。
5.2 LoRA 的遗忘更少

在考察模型丢失已有知识的程度时,LoRA 一贯表现出更少的遗忘。这一点在适应与源领域相距较远的数据(例如编程任务)时尤为明显。在编程任务中,完整微调会导致模型显著遗忘之前的能力,而 LoRA 能更好地保留原有的功能。而对于数学任务,由于模型原有的知识与新任务的距离较近,这种差异就不太明显。







请到「今天看啥」查看全文