部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >扩散LLM推理用上类GRPO强化学习!优于单独SFT,UCLA、Meta新框架d1开源

扩散LLM推理用上类GRPO强化学习!优于单独SFT,UCLA、Meta新框架d1开源

作者头像
机器之心
发布于 2025-04-22 03:15:26
发布于 2025-04-22 03:15:26
16208
代码可运行
举报
文章被收录于专栏:机器之心机器之心
运行总次数:8
代码可运行

编辑:陈陈、杜伟

大语言模型的推理能力,不再是 AR(自回归)的专属。扩散模型现在也能「动脑子」,新框架 d1 让它们学会了解数学、懂逻辑、会思考。

当前,强化学习(RL)方法在最近模型的推理任务上取得了显著的改进,比如 DeepSeek-R1、Kimi K1.5,显示了将 RL 直接用于基础模型可以取得媲美 OpenAI o1 的性能。

不过,基于 RL 的后训练进展主要受限于自回归的大语言模型(LLM),它们通过从左到右的序列推理来运行。

与此同时,离散扩散大语言模型(dLLM)成为有潜力的语言建模的非自回归替代。不像以因果方式逐 token 生成文本的自回归模型那样,dLLM 通过迭代去噪过程生成文本,在多步骤操作中优化序列的同时并通过双向注意力利用过去和未来的上下文。其中,LLaDA 等开放的掩码 dLLM 实现了媲美同尺寸自回归模型的性能,而 Mercury 等闭源 dLLM 进一步展现了出色的推理延迟。

然而,顶级的开源 dLLM 并没有使用 RL 后训练,使得这一有潜力的研究方向还有很大的挖掘空间。这一范式转变引出了重要的问题:RL 后训练如何在非自回归上下文中高效地实现?

RL 算法适应掩码 dLLM 面临一些独特的挑战,原因在于自回归模型采用的已有方法(如 PPO、GRPO)通过计算生成序列的对数概率来估计和优化策略分布,导致无法直接应用于 dLLM。虽然这种计算在自回归模型中通过序列因式分解很容易实现,但 dLLM 由于它们的迭代、非序列生成过程而缺乏这种自然分解。

为了解决这些问题,来自 UCLA 和 Meta AI 的研究者提出了一个两阶段后训练框架 d1,从而可以在掩码 dLLM 中进行推理。在第一阶段,模型在高质量推理轨迹中进行监督微调;在第二即 RL 阶段,研究者引入了用于掩码 dLLM 的新颖策略梯度方法 diffu-GRPO,它利用提出的高效一步(one-step)对数概率估计在 GRPO 的基础上创建。

研究者表示,他们的估计器利用了随机提示词掩码,作为策略优化的一种正则化,使得可以扩展 per batch 的梯度更新数量并减少 RL 训练所需的在线生成数量。这将极大地降低计算时间。

  • 论文标题:d1: Scaling Reasoning in Diffusion Large Language Models via Reinforcement Learning
  • 论文地址:https://arxiv.org/pdf/2504.12216
  • 项目主页:https://dllm-reasoning.github.io/
  • GitHub 地址:https://github.com/dllm-reasoning/d1

在实验部分,研究者使用 LLaDA-8B-Instruct 作为基础模型实例化 d1。他们将 d1-LLaDA 的性能与基础 LLaDA 模型以及仅使用 SFT 和仅使用 diffu-GRPO 训练的 LLaDA 模型进行比较。结果表明,d1 在四个数学和逻辑推理基准测试中始终优于基础模型,如下图 1 所示。d1-LLaDA 同样优于仅使用 SFT 方法和仅使用 diffu-GRPO 方法的模型。

方法概览

d1 是一个两阶段框架,通过依次结合监督微调(SFT)和在线强化学习(RL)来增强预训练掩码 dLLMs 的推理性能。

其中,在线强化学习(特别是 GRPO 算法)已被证明能有效提升离线训练语言模型的性能。然而,GRPO 的学习策略并不能直接泛化到 dLLMs。

GRPO 的目标函数(如公式 3 所示)需要同时计算当前策略 π_θ 和旧策略 π_θold 在以下两个层面的(对数)似然比:

  1. token 层面(用于优势权重计算);
  2. 序列层面(用于反向 KL 散度项)。

核心问题在于:研究者需要高效计算 dLLMs 生成内容的逐 token 对数概率和序列对数概率。

自回归(AR)模型,如 Transformer,直接对每个 token 的对数概率进行建模,并且可以通过链式法则使用一次前向传递轻松计算出序列级别的对数概率

image.png
image.png

。同样,KL 项可以分解为

image.png
image.png

与 AR 模型不同,dLLMs 不遵循序列对数概率的顺序分解。同时,每个 token 的对数概率计算成本也很高,因为解码过程中需要多次调用掩码预测器 f_θ。基于此,该研究提出了一个高效的对数概率估计器。

对于序列对数概率,该研究使用均场近似方法,将其分解为独立的每个 token 对数概率的乘积。

对于每个 token 的对数概率,该研究引入了一种估计方法,该方法仅调用一次 f_θ。

基于新引入的对数概率估计器,该研究将 GRPO 扩展到掩码 dLLMs,推导出 diffu-GRPO 的损失函数。

算法如下图所示。

实验结果

表 1 报告了基线模型 LLaDA-8B-Instruct 与采用不同后训练优化方案的模型,在四项任务上的零样本性能对比。

图 3 绘制了有效 token 的平均数量:

基于实验,该研究得出以下主要发现:

diffu-GRPO 在所有 12 种设置中都一致优于基础的 LLaDA 和 SFT(监督式微调)。diffu-GRPO 和 SFT 都相较于 LLaDA-8B-Instruct 基线有所提升,但 diffu-GRPO 显示出更持续且幅度更大的增益。具体来说,diffu-GRPO 在所有 12 种设置中都优于 LLaDA-8B-Instruct 和 SFT,而 SFT 仅在其中的 7 种设置中优于 LLaDA-8B-Instruct,这表明 diffu-GRPO 相比于单独的 SFT 实现了更强的整体性能提升

LLaDA+diffu-GRPO 在所有设置中都优于基础的 LLaDA-8B-Instruct 模型,而 d1-LLaDA 在每种情况下都超过了 LLaDA+SFT。这表明,无论初始化是来自预训练模型还是经过 SFT 调整的检查点,diffu-GRPO 都能提供可靠的性能提升

d1 训练方案实现了最显著的性能提升。通过先进行监督微调(SFT)、再结合 diffu-GRPO 训练所形成的 d1-LLaDA 模型,产生了超越单一方法的叠加增益。这种组合式方法在 12 个实验设置中有 11 项优于纯 diffu-GRPO 方案,表明两个训练阶段存在协同效应。

定性结果表明,在 SFT 和 d1-LLaDA 生成中出现了顿悟时刻。尽管与 LLaDA-8B-Instruct 相比,生成序列长度为 128 和 256 的性能随着 SFT、diffu-GRPO 和 d1 有所提高,但从质的方面看,在生成的推理轨迹中并未观察到显著差异。然而当序列长度达到 512 时,该研究开始观察到 SFT 和 d1-LLaDA 模型展现出两种关键能力:自我修正机制和回溯行为。

© THE END

转载请联系本公众号获得授权

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器之心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
一日一技:如何捅穿Cloud Flare的5秒盾
经常写爬虫的同学,肯定知道 Cloud Flare 的五秒盾。当你没有使用正常的浏览器访问网站的时候,它会返回如下这段文字:
青南
2021/05/14
6.5K0
一日一技:如何捅穿Cloud Flare的5秒盾
反反爬 | 如何巧过 CloudFlare 5秒盾?
当我们第一次访问使用 CloudFlare 加速的网站时,网站就会出现让我们等待 5 秒种的提示,当我们需要的通过爬虫爬取这类网站的时候,应该如何爬取呢?
咸鱼学Python
2019/09/24
15.2K0
反反爬 | 如何巧过 CloudFlare 5秒盾?
Scrapy对抗Cloudflare反爬5秒盾
再到 setting.py 中找到DOWNLOADER_MIDDLEWARES启用中间件就好了:
HomeboyC
2022/09/19
9760
绕过TLS/akamai指纹护盾
在之前的项目中,发现一些网站使用不同的客户端会得到不同的结果,比如使用浏览器访问正常没问题,但使用python写脚本或者curl请求就会被拦截,当时也尝试数据包1:1还原,但还是不能解决。
用户1709153
2023/05/06
3.7K0
爬虫浏览器的Cloudflare五秒盾处理
近期业务有不少涉及到国外的网站,本以为经受了和国内大量卷王公司对抗的考验之后,处理国外业务应该是降维打击才对。结果本地测试的时候的确很OK,但是一上线就发现全面飘红,多个不同业务同时出了 Cloudflare 著名的五秒盾:
mythsman
2022/12/13
5.9K0
爬虫浏览器的Cloudflare五秒盾处理
python爬虫-selenium破解封IP+TensorFlow机器人AI技术破解网页加密
python爬虫-selenium破解封IP+pytesseract破解验证码+AI破解网页加密
孔雀
2018/11/22
5K0
python爬虫-selenium破解封IP+TensorFlow机器人AI技术破解网页加密
Cloudflare中firewall的编写方法
​ 这篇文章中说到坏男孩博客一直在使用CloudFlare提供SSL服务和防火墙服务。SSL并没有什么好说的,今天简单介绍一下我是如何写Cloudflare中的防火墙规则。
yumusb
2020/08/28
2.5K0
Cloudflare中firewall的编写方法
Cloudflare(5秒盾)分析!!
大家可以看下, XMLHttpRequest 和 onreadystatechange事件
懒py夏洛
2022/06/02
10.3K2
Cloudflare(5秒盾)分析!!
在Scrapy中如何使用aiohttp?
当我们从一些代理IP供应商购买代理IP时,他们可能是提供一个网址供我们查询当前可用的代理IP。我们周期性访问这个网址,拿到最新的IP,再分给爬虫使用。
青南
2020/07/16
7.4K0
渗透测试中,如何绕过烦人的cloudflare
Cloudflare作为全球领先的网络安全和性能优化服务提供商,其防护机制(如WAF、DDoS防护、Bot管理等)常成为渗透测试中的一大障碍,本文从实战角度出发,针对Cloudflare的防护体系,分享几个绕过cloudflare的小Tips。
星尘安全
2025/04/08
9400
渗透测试中,如何绕过烦人的cloudflare
无头浏览器与请求签名技术-Cloudflare防护
在实际数据采集实践中,许多目标网站(例如 Amazon)都会采用 Cloudflare 等防护措施,防止机器人和非正常流量。本文将分享一个故障场景下的排查与改进方案,讲述如何利用无头浏览器、请求签名技术以及爬虫代理 IP来实现数据采集。
jackcode
2025/03/11
2261
无头浏览器与请求签名技术-Cloudflare防护
一日一技:在Golang下如何相对简单地开发爬虫?
我之前一直用 Python 来写爬虫,现在,尝试用 Golang 来实现一个简单的爬虫,请求网址,然后使用 XPath 提取数据。
青南
2020/09/30
1.8K0
为什么爬虫工程师应该有一些基本的后端常识?
今天在粉丝交流群里面,有个同学说他发现了Requests的一个 bug,并修复了它:
青南
2021/06/23
4930
为什么爬虫工程师应该有一些基本的后端常识?
用 Python 写你的第一个爬虫:小白也能轻松搞定数据抓取(超详细包含最新所有Python爬虫库的教程)
用 Python 写你的第一个爬虫:小白也能轻松搞定数据抓取(超详细包含最新所有Python爬虫库的教程)
猫头虎
2025/06/02
2.2K0
用 Python 写你的第一个爬虫:小白也能轻松搞定数据抓取(超详细包含最新所有Python爬虫库的教程)
聊聊逆向爬取数据
最好的挣钱方式是钱生钱,怎样钱生钱呢,钱生钱可以通过投资,例如买股票、基金等方式,有人可能说买股票基金发财,我没这样的命和运气。买股票基金靠的不只有命运和运气,更多靠的是长期的经验和对股票基金数据的分析,今天我们使用scrapy框架来js逆向爬取某证信数据平台的国内指数成分股行情数据。
我被狗咬了
2021/11/16
1.2K0
聊聊逆向爬取数据
Python爬虫:10行代码真正实现“可见即可爬”
因为关于爬虫知识的学习起源于想要获得《机器学习》预测模型的数据集; 从这个层面上说,本文将是后续大量数据预测文章等的开篇之作。 感兴趣的小伙伴们点个关注,一起学习交流吖 ~ ~ ~
荣仔_最靓的仔
2021/02/02
1.3K0
Python爬虫:10行代码真正实现“可见即可爬”
GNE v0.1正式发布:4行代码开发新闻网站通用爬虫
GNE(GeneralNewsExtractor)是一个通用新闻网站正文抽取模块,输入一篇新闻网页的 HTML, 输出正文内容、标题、作者、发布时间、正文中的图片地址和正文所在的标签源代码。GNE在提取今日头条、网易新闻、游民星空、 观察者网、凤凰网、腾讯新闻、ReadHub、新浪新闻等数百个中文新闻网站上效果非常出色,几乎能够达到100%的准确率。
青南
2020/02/11
1.5K0
50行Python代码,教你获取公众号全部文章
小詹说:我们平时阅读公众号的文章会遇到一个问题——阅读历史文章体验不好。的确如此,小詹自己也这么认为。所以今天分享的是好朋友 Python3X 的一篇干货分享,原文如下:
小小詹同学
2019/07/12
2.6K0
50行Python代码,教你获取公众号全部文章
三行代码,轻松实现 Scrapy 对接新兴爬虫神器 Playwright!
前段时间发布了一篇文章介绍一个新兴的类似 Selenium、Pyppeteer 的自动化爬取工具,叫做 Playwright,文章见:强大易用!新一代爬虫利器 Playwright 的介绍
崔庆才
2022/01/05
2.9K0
三行代码,轻松实现 Scrapy 对接新兴爬虫神器 Playwright!
【Python自动化】定时自动采集,并发送微信告警通知,全流程案例讲解!
如果您现在苦于每天繁琐、重复的数据采集工作,可尝试套用该自动化方案,节省人力,降本增效!
马哥python说
2024/03/22
6580
推荐阅读
相关推荐
一日一技:如何捅穿Cloud Flare的5秒盾
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验