(2025,LLM,下一 token 预测,扩散微调,L2D,推理增强,可扩展计算)从大语言模型到扩散微调

Large Language Models to Diffusion Finetuning

目录

1. 概述

2. 研究背景

3. 方法

3.1 用于 LM 微调的高斯扩散

3.2 架构

4. 主要实验结果

5. 结论


1. 概述

本文提出了一种新的微调方法——LM to Diffusion (L2D),旨在赋予预训练的大语言模型(Large Language Models, LLMs)测试时可扩展计算能力。

研究发现,通过在推理过程中增加扩散步数,模型的准确性可以单调增加,从而提高在数学、编程和推理等下游任务中的性能。

此外,该方法可以结合强大的引导技术,优化计算资源的动态分配,同时保持语言模型的单步生成能力。

本文的主要贡献包括:

  • 提出 L2D 微调方法,结合语言模型的自回归能力和扩散模型的多步推理能力,利用语言模型的预测来更新扩散状态。
  • 证明 L2D 可扩展计算能力,通过增加计算资源提高推理质量。
  • 提升 LMs 在数学、编程和推理任务上的表现,同时保留其单步生成能力。
  • 实现高效微调:L2D 不修改模型原始参数,仅需修改少量参数,即可在多个任务上取得显著提升。  

2. 研究背景

当前自回归(autoregressive)大语言模型在推理能力上存在一定的局限性,主要体现在:

  • 无法根据任务的复杂度调整计算资源。
  • 生成结果的质量受限于单步预测,而无法进行多步优化。

扩散模型(Diffusion Models)在视觉领域的成功启发了研究人员尝试将其应用于语言建模,以引入多步推理的能力。然而,由于离散文本数据的特殊性,现有的扩散语言模型在性能上落后于自回归模型。

3. 方法

3.1 用于 LM 微调的高斯扩散

L2D 通过将 LMs 视为单步扩散模型,并在其基础上扩展多步推理能力,从而增强 LLM 的推理能力,而不会影响其原始的单步生成能力。

语言建模在有限词汇表 V 上定义的目标分布 p_1 上运行。给定一个由标签 y 索引的 token x_1,该 token 与来自目标数据分布 p_1 的先前 token c 的上下文一起采样,我们的扩散损失公式如下:

使用公式 3 训练扩散模型可以解释为标准的下一个 token 预测,其中为模型提供了一个额外的扩散 token x_t,包含有关目标 y 的一定程度的知识,范围从无信息(t = 0)到完美信息(t = 1)。

  • 当 t = 0 时,LM 本质上是用与 L2D 相同的预测目标进行训练的,此时 x_0 与目标 y 完全不相关。
  • 遵循算法 1 的推理涉及从模型的 logit 中迭代采样越来越准确的下一个 token ˆx,直到采样预算 T。
  • 传统的 LM 推理可以再次被视为此过程的特例(T = 1),其中仅使用模型的第一个样本来预测 y。

这些设计选择的目的是 L2D 旨在通过微调方法扩展预先训练的 LM,而不是从头开始学习新模型。

虽然从一开始就完全采用扩散训练可能看起来更为普遍,但我们认为这可能会失去传统自回归建模所固有的一些训练可扩展性和强大的归纳偏差。正是这些偏差使传统自回归建模在语言领域得到广泛确立。

3.2 架构

L2D 的实现设计为预训练 transformer 的模块化扩展,以有效利用扩散的多步扩展能力,同时保留其原始的单步生成能力。

L2D 在其架构中引入了一条 并行扩散路径,其中传播扩散 token x_t 的隐藏表示,仅在最后一层影响冻结的主 LM 路径

  • L2D 使用 transformer 架构以及与主路径 f_{θ_l} 相同数量的块来实现扩散路径 f_{θ_d} 。为了充分利用预训练 LM 的知识,扩散路径中的所有层也都使用来自 θ_l 的权重进行初始化。
  • 扩散路径中的 transformer 由一系列残差 MLP 和交叉注意模块组成。虽然 MLP 模块遵循与 f_{θ_l} 中相应模块相同的结构,但交叉注意模块专门参数化 query 和输出线性层。具体而言,在交叉注意期间,目标 token y_k 的扩散 token x^k_t 会关注从 f_{θ_l} 中相应的自注意模块计算出的所有先前的 key 和 value。
  • 最终,只在所有块之后,即 LM 的线性头之前,将 f_θ 中处理的信息整合回主路径。具体来说, 将这两条路径与元素加权和 f_{θ_l} + w_d·f_{θ_d} 合并,其中扩散 token x^k_t 的重新缩放潜变量被添加到前一个 token x^{k−1} 的潜变量中。

4. 主要实验结果

研究者在多个基准测试(benchmark)上对 L2D 进行了实验,包括:数学任务(GSM8K、MATH),编程任务(HumanEval、MBPP),知识推理任务(MMLU、MMLU-Pro)

增加扩散步数(计算量)能显著提高推理能力,但性能提升在一定步数后趋于稳定。 

L2D 在所有测试集上均提升了语言模型的性能,特别是在数学和编程任务上,表现尤为明显。

L2D 兼容现有的微调方法(如 LoRA 和全参数微调),且比传统微调方法更高效。

引导技术(Classifier-Free Guidance) 使 L2D 在特定任务上的表现进一步提升,允许用户在生成过程中指定任务需求。

5. 结论

L2D 通过结合扩散模型的推理增强能力,使大语言模型能够更高效地利用计算资源,提高复杂任务的推理能力。这项研究为未来的大语言模型微调提供了一条新的方向,通过引入扩散计算框架,使模型能够智能调整计算资源,提高推理质量,在多个领域展现出了良好的潜力。

【一个比较关心且重要的问题,新添加的扩散路径导致的额外计算开销是多少?原文并未提及】

论文地址:https://arxiv.org/abs/2501.15781

进 Q 学术交流群:922230617

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/894713.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习threejs,pvr格式图片文件贴图

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️PVR贴图1.2 ☘️THREE.Mesh…

tkvue 入门,像写html一样写tkinter

介绍 没有官网&#xff0c;只有例子 安装 像写vue 一样写tkinter 代码 pip install tkvue作者博客 修改样式 import tkvue import tkinter.ttk as ttktkvue.configure_tk(theme"clam")class RootDialog(tkvue.Component):template """ <Top…

Java—不可变集合

不可变集合&#xff1a;不可以被修改的集合 创建不可变集合的应用场景 如果某个数据不能被修改&#xff0c;把它防御性地拷贝到不可变集合中是个很好的实践。当集合对象被不可信的库调用时&#xff0c;不可变形式是安全的。 简单理解&#xff1a;不想让别人修改集合中的内容…

每日Attention学习18——Grouped Attention Gate

模块出处 [ICLR 25 Submission] [link] UltraLightUNet: Rethinking U-shaped Network with Multi-kernel Lightweight Convolutions for Medical Image Segmentation 模块名称 Grouped Attention Gate (GAG) 模块作用 轻量特征融合 模块结构 模块特点 特征融合前使用Group…

响应式编程_04Spring 5 中的响应式编程技术栈_WebFlux 和 Spring Data Reactive

文章目录 概述响应式Web框架Spring WebFlux响应式数据访问Spring Data Reactive 概述 https://spring.io/reactive 2017 年&#xff0c;Spring 发布了新版本 Spring 5&#xff0c; Spring 5 引入了很多核心功能&#xff0c;这其中重要的就是全面拥抱了响应式编程的设计思想和实…

html中的表格属性以及合并操作

表格用table定义&#xff0c;标签标题用caption标签定义&#xff1b;用tr定义表格的若干行&#xff1b;用td定义若干个单元格&#xff1b;&#xff08;当单元格是表头时&#xff0c;用th标签定义&#xff09;&#xff08;th标签会略粗于td标签&#xff09; table的整体外观取决…

基于Springboot+vue的租车网站系统

基于SpringbootVue的租车网站系统是一个现代化的在线租车平台&#xff0c;它结合了Springboot的后端开发能力和Vue的前端交互优势&#xff0c;为用户和汽车租赁公司提供了一个高效、便捷、易用的租车体验和管理工具。以下是对该系统的详细介绍&#xff1a; 一、系统架构 后…

蓝桥杯之c++入门(二)【输入输出(上)】

目录 前言1&#xff0e;getchar和 putchar1.1 getchar()1.2 putchar() 2&#xff0e;scanf和 printf2.1 printf2.1.1基本用法2.1.2占位符2.1.3格式化输出2.1.3.1 限定宽度2.1.3.2 限定小数位数 2.2 scanf2.2.1基本用法2.2.2 占位符2.2.3 scanf的返回值 2.3练习练习1&#xff1a…

Docker数据卷管理及优化

一、基础概念 1.docker数据卷是一个可供容器使用的特殊目录&#xff0c;它绕过了容器的文件系统&#xff0c;直接将数据存在宿主机上。 2.docker数据卷的作用&#xff1a; 数据持久化&#xff1a;即使容器被删除或重建数据卷中的数据仍然存在 数据共享&#xff1a;多个容器可以…

java:mysql切换达梦数据库(五分钟适配完成)

背景 因为项目需要国产数据库的支持&#xff0c;选择了达梦数据库&#xff0c;由于我们之前使用的是MySQL今天我们就来说一说&#xff0c;如何快速的切换到达梦数据库&#xff0c;原本这一章我打算写VIP章节的后续想想&#xff0c;就纯分享。毕竟是国产数据库迁移数据库 这里…

在游戏本(6G显存)上本地部署Deepseek,运行一个14B大语言模型,并使用API访问

在游戏本6G显存上本地部署Deepseek&#xff0c;运行一个14B大语言模型&#xff0c;并使用API访问 环境说明环境准备下载lmstudio运行lmstudio 下载模型从huggingface.co下载模型 配置模型加载模型测试模型API启动API服务代码测试 deepseek在大语言模型上的进步确实不错&#xf…

[leetcode]两数之和等于target

源代码 #include <iostream> #include <list> #include <iterator> // for std::prev using namespace std; int main() { int target 9; list<int> l{ 2, 3, 4, 6, 8 }; l.sort(); // 确保列表是排序的&#xff0c;因为双指针法要求输入是…

C# OpenCV机器视觉:学生注意力监测

小王是一位充满活力的年轻教师&#xff0c;刚接手了一个新班级。他满心欢喜地准备在课堂上大显身手&#xff0c;把自己的知识毫无保留地传授给学生。可没上几节课&#xff0c;他就发现了一个让人头疼的问题&#xff1a;课堂上总有那么几个学生注意力不集中&#xff0c;要么偷偷…

【嵌入式】C语言多文件编程与内联函数

文章目录 0 前言1 从C语言编译说起2 重复定义错误&#xff08;ODR violation&#xff09;和条件编译3 内联函数inline和static inline4 总结 0 前言 最近在研究ARM内核代码时&#xff0c;看到core_cm3.h中有大量的内联函数&#xff0c;为此查阅了很多资料&#xff0c;也和朋友讨…

10分钟本地部署Deepseek-R1

10分钟本地部署DeepSeek-R1 什么是DeepSeek-R1快速本地部署DeepSeek-R1Ollama下载Ollama安装检查是否安装成功 安装DeepSeek-R1模型模型使用测试 什么是DeepSeek-R1 DeepSeek-R1是中国的深度求索&#xff08;DeepSeek&#xff09;公司开发的智能助手。其具有极佳的语义理解和生…

Office / WPS 公式、Mathtype 公式输入花体字、空心字

注&#xff1a;引文主要看注意事项。 1、Office / WPS 公式中字体转换 花体字 字体选择 “Eulid Math One” 空心字 字体选择 “Eulid Math Two” 2、Mathtype 公式输入花体字、空心字 2.1 直接输入 花体字 在 mathtype 中直接输入 \mathcal{L} L \Large \mathcal{L} L…

【C++】STL——vector底层实现

目录 &#x1f495; 1.vector三个核心 &#x1f495;2.begin函数&#xff0c;end函数的实现&#xff08;简单略讲&#xff09; &#x1f495;3.size函数&#xff0c;capacity函数的实现 &#xff08;简单略讲&#xff09; &#x1f495;4.reserve函数实现 &#xff08;细节…

7、怎么定义一个简单的自动化测试框架?

定义一个简单的自动化测试框架可以从需求理解、框架设计、核心模块实现、测试用例编写和集成执行等方面入手&#xff0c;以下为你详细介绍&#xff1a; 1. 明确框架需求和范围 确定测试类型&#xff1a;明确框架要支持的测试类型&#xff0c;如单元测试、接口测试、UI 测试等…

AI取代人类?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

C语言-----数据结构从门到精通

1.数据结构基本概念 数据结构是计算机中存储、组织数据的方式&#xff0c;旨在提高数据的访问和操作效率。它是实现高效算法和程序设计的基石。 目标:通过思维导图了解数据结构的知识点,并掌握。 1.1逻辑结构 逻辑结构主要四种类型: 集合&#xff1a;结构中的数据元素之…