001:一位研究生在读的”reward hacker“关于学习的困惑

【来访者个人档案】

身份: 研究生在读,大模型方向实习生

自述: “我是个 Reward Hacker,为了面试通过,我刷题、背八股,但我心里慌。


2025 年 1 月 2 日,昨天发完小红书后,今天迎来了第一位小伙伴。

第一位小伙伴(我们后面称他为 F 同学)就和我想象中的不一样,我本来以为他会问关于大模型和相关工作的问题,没想到他更加关注的居然是 ”学习“ 问题。他看的博客是《Hybrid LLM 之 Gated DeltaNet | 长琴》。

关于学习的困惑

F 同学目前正在实习,应该是还不错的机构。我们的对话从他最近的一个困惑开始。F 同学的组长让他去调研一个框架,但组长自己也不知道这个框架,F 同学感到没有人手把手指引,和自己想象的不太一样,压力很大,不知道从何做起。

顺便就引出了他关于学习的第一个问题:面对一个知识点,如何进一步深入学习?他发现自己现在习惯阅读别人解读的文章、视频,或者把论文丢给 AI 让 AI 输出结果,要自己看却有点看不下去。

紧接着是第二个问题:如何学习一个框架,他发现看了 README 的基本用法后就不知道后面怎么去学了,好像也没有地方去找更多其他用法或者高级用法。

面向工作学习

这里有个背景,F 同学也是中间转行到大模型方向,之前本来是要做后端的,但大模型实在太火爆了。虽然谈不上多喜欢,但给的多啊。他为找工作做了很多准备(包括代码、知识点等),取得了很好的成绩,不过他谦虚地称自己是 reward hacker——面向面试和找工作的学习。

虽然我还没有聊过很多人,但据已经了解到的信息,像 F 同学这样冲着 ”大模型工资高“ + ”面向找工作学习“ 的同学应该不在少数。

听到他这么说,其实我本想聊聊类似 ”要找到自己喜欢做的、热爱的事业“ 之类的话题,但转念一想,再丰满的理想也得面对现实啊。况且,理想这东西又岂是一时半会能想出来的。如果本来就有坚定的理想,那还找我聊什么,还能有什么困惑。再说,理想也不是一下就明朗的,还不得随着经历和阅历的增加逐步清晰的?

所以,我非常赞同他目前的这种选择,这是当下对他来说理性的最优选择,除非真的是非常讨厌这个方向。F 同学可能也并不一定喜欢这个方向,但他至少不讨厌、不厌恶,这已经很好了。

进入职场与长期主义

心态调整

回复问题之前,我首先提示了一个心态问题——即便老师都未必能手把手教你,又怎么能期待同事呢?其实 F 同学的这种感受我在刚入行时也经历过。后来才慢慢意识到,在职场上,能遇到这样的那是运气,遇不到才是正常现象。大家都很忙,metor 也有大量自己的工作要做,他能在方向和关键点上指点一下就已经相当不错了。及早把心态调整到位,反而能把主动权抓回自己手里。

关于知识点学习

其实,怎么说,我虽然也有一定的自学能力(经济学工作几年后转行),但肯定比不上清北的同学,智商也就中等水平,也给不出什么建议。我只是跟他分享了我当时并保持至今的一些做法,看看是否能对他有所启发。

  • 首先是读第一手资料。这是我保持至今的习惯,几乎不读任何别人写的解读类文章。只有当自己阅读完一手资料(一般是论文)之后,才会看情况是否要去阅读其他资料。另外,我也很少读中文社区的资料,不过大模型时代中文社区感觉比英文社区要好。
  • 其次是一开始要有耐心,去积攒自己的“点”。F 同学谈到自己看到一个知识点可能没有很多想法,只是把别人的解读读完感觉好像就没了。这是正常的,刚开始的知识都是零散的,只有你不断地积累,才能慢慢连点成线,以线扩面,形成体系。这是一个逐步构建自己知识体系的过程。其实,这个认知我早就有了,但前几年真的是无奈,盲点太多了,根本连不起线。大家看我前几年的博客就知道了。
  • 最后是谨慎接受碎片化输入、标题党(几分钟搞懂 XX)教程或小白教程。我自己是不刷抖音的,也很少刷社交媒体,刚刚说了,二手资料都很少看。如果确实要系统学习某个东西,我会找卡内基梅隆、MIT、斯坦福等学校的相关课程(比如陈天奇的《深度学习系统》)。这可能是我个人的一个“笨办法”——只啃一手资料。我也知道短视频和通俗解读有时候很诱人,但对于构建知识体系来说,它们像是零食,好吃但不管饱。

关于框架使用学习

我的回复比较简单,直接去用。我自己是这样,除了写相关教程或者系统研究,从没有专门学习过某个框架。一般的做法是看一下基本用法,然后就开始用了,遇到问题再去查,查不到就去看源码(这个是我最喜欢的方式,比任何文档和答案都清晰,一目了然)。包括编程也是,大部分语言都是找本书大概看下语法后就直接上手写了。

其实就是第一门语言比较磕磕碰碰,第二种以后就比较快了。这和工具一样,你脑子是清晰的,只是不知道怎么用这个框架或语言表达而已,用一下就会了。我举了骑自行车、游泳和学开车的例子,你不需要知道摩擦力、前后轮驱动原理这些知识,你只是在“用”它,去用就可以了。

不过如果是学习一个框架或语言本身,那是不一样的。以框架为例,我的建议是:首先把一个例子跑起来,然后研究输入输出、每一个指标的意义、每一个参数的用法和含义、关键模块背后的设计思想等等。这能极大提升自己对框架和相关算法的理解,这远比跑完一组实验、跑出一个结果更重要。

尾声

聊完问题,我们还聊了一些其他的,比如为什么现在年轻人精神压力这么大,比如如何更好地面对越来越浮躁的社会等等,我也向他说明了我做这件事的初衷(这个后面会专门写一篇聊一下)。我们大概是五五开吧,可能他比我说的稍微多一点点,其实我应该更克制一点。

总之,祝福 F 同学,希望他能健康、快乐,走出自己精彩的人生!


💡 共鸣时刻

学习是手段,其背后的目的是我们都渴望成长,
但首当其冲的现实是我们得找到一个好工作。

F 同学不是一个人,我们很多人都是那个 “Reward Hacker”。

其实无论是沉不下心也好、急功近利也罢,
都是我们面对压力时的自我救赎啊。

以 AI Coding 之管窥探世界之变

TL;DR

  • 过去三周,我用 AI Coding 在零碎时间完成了 7 个真实项目,其中多个已开源并投入实际使用。
  • AI 已经不再只是“辅助写代码”,而是在架构清晰、决策明确的前提下,实质性替代了大量中级开发工作
  • AI Coding 的上限不在模型,而在使用者:是否会设计、会 review、会做关键决策。
  • 由 AI Coding 的跃迁可以窥见更大的变化:世界正在进入“超级个体”时代,个人能力被放大,但分化会更剧烈。
  • 算法层面,基础模型、RL、多模态会继续变得更强大、更智能。
  • 产品层面,具身智能、虚拟世界不再遥远,AIGC 将攻占互联网。
  • 面对不可逆的技术浪潮,我选择“批判地接受”:积极参与,同时保留理性与属于自己的私有空间。

2025 年最后一天,2026 年第一天,之际,很想聊聊 AI 编程。我记得 2024 年底的时候,AI 编程还不怎么好用,当时用 MetaGPT 写了一个贪吃蛇,结果有个 bug 半天怎么都没弄好,最后还是我自己手动改了两处代码。

万万没想到啊,这才一年不到的时间,AI 编程居然到了如斯地步。年初的时候听说 cursor 比较好用,下载后随便玩了一下感觉没有想象中那么强。也尝试过 VSCode 的插件 Cline,用它做了个 Code review,怎么说呢,感觉没有达到自己的预期。

其实,我一直是重度 AI 使用者,Code 也在用,只是没有在一个 IDE 里用,大部分时候都是在 ChatGPT 的对话框里完成。常见的任务包括:完成某个功能的脚本、对已有代码进行改造(比如改多线程、异步等)、写单元测试等。

直到最近,突然看到 Trae 发布了 Solo 模式,想着试一试,于是在 2025 年 12 月初一下子开启了全面的 AI Coding。

More

站在 30-40 岁的档口

人都说 30 而立,40 知天命。以前也懂,但毕竟不如亲自体验来的真实。这不,在快要进入“知天命”的路上,这种感觉愈发的真实。根据平时网上看到的一些文字,我知道,这种体会和感受应该是普遍的。


我不知道这是关键时间点还是就是一个普普通通的成长过程,但现实就是如此:

慢慢地越来越不愿取悦他人,任何人。

很多事情上比较随意,感觉怎么样都行。

越来越讨厌虚伪的人和事,厌恶明明很假还看着一派和谐的样子。

懒,朋友圈懒得看、懒得发,自己的公众号懒得宣传,微信都经常懒得看。对所有社交失去耐心,连解释自己都觉得多余。

越来越回归家庭,发自内心觉得家庭最重要。

比原来更加注重身体健康。

老人肉眼可见的一天天变老、腿脚不太灵活、脑子不太好使,看着莫名发堵。

孩子尚小,每天吃睡玩是主题,好在不甚调皮,也能沟通。

孩子比什么都重要。

工作谁知道呢,谁也不知道能干到啥时候。对确定性已不再抱有幻想,只求可持续。

心中依然有理想,但上面好像打了一层蒙版。

不是对生活的妥协,而是自然而然就到了这么一种状态。

更加渴望稳定,但又想拥抱变化。

有时候想逃避某些事情。

变得越来越沉默。


我一直以为人可以在某些方面一辈子保持不变,比如自己的性格。但随着年纪的增长,慢慢发现性格有没有改变不知道,但心态绝对在发生变化。

你依然可能不服输,但却少了许多锋芒;你依然可能有热爱,但却多了许多考量;你依然可能有渴望,但却多了许多克制。

以前看网上说 45 岁的男人怎样怎样,只觉得难以想象,无法理解。现在还没到这年龄呢,风向已经开始变了。噢噢,还有,变得越来越信玄学,以前虽说也信但其实没那么信,现在看起来没那么信,但内心深处貌似比较信。

其实,我都不知道为什么会这样。可能是性格本来就比较顺其自然,也可能经历过太多事和人,也有可能是真的因为年纪增长。


难道这就是所谓“中年男人”?不知不觉、消无声息就这么变成了一个中年大叔……

固然成熟沉稳、技能精湛、心态稳定,但为啥总感觉不太一样呢?是缺了那股无知无畏的冲劲?还是什么其他东西?我不知道答案。

“人到中年”这个主题可能有很多聊不完的话题,但话到嘴边又想,说些啥呢,要说啥呢,要怎么开始说呢。最后化为三个字:“算了吧”。有啥好说的呢,懂得人他本来就懂,不需要多说;不懂的人你说再多他也体会不来,又有什么好说的。

嗯啊,就这样,“算了吧”。


30-40,人生才过了一小截,想想退休年龄,还要工作将近 30 年呢。

有没有什么不一样的走法呢?

RL究竟能不能突破Base边界——关于推理能力外推、稳定性与训练条件的系统分析

在 DeepSeek R1 之后,GRPO 几乎成了后训练的默认选项。它确实“好用”——在很多任务上,模型的 pass@1 明显提高了。但一个更根本的问题始终没有被真正回答:我们是在把模型“教得更会想”,还是只是在把它“已有的正确想法更容易采出来”?

如果答案只是后者,那么强化学习更像是一种采样精炼器;而如果答案是前者,那就意味着模型的推理能力可以被系统性地“向外推”。

这两种理解对应着不同的训练目标,也自然导向了不同的训练策略。与之相关的研究结论之所以看似分化,往往源于训练设定与任务分布的差异:在某些工作中,RL 被观察到伴随能力跃迁;而在另一些设定下,其作用则始终未超出 Base 模型的能力边界。

本文并不试图在“RL 是否能够突破 Base”这一争论中选边站队,而是系统梳理已有工作的结论与假设,试图澄清一个更关键的问题:

在什么条件下,RL 才可能表现为能力外推?而在什么情况下,它更合理地被理解为一种采样与抛光机制?

More

所爱隔山海,山海亦可平

前段时间空闲时间偶尔会想一个问题:“当历史的积累超越了人类学习的极限时会发生什么?”

其实不说以后,就现在已然出现知识爆炸的情况,研究方向越来越细,都不是“隔行如何山”了,稍微跨个方向可能都相差极大。是不是可以认为已经差不多到了“穷尽一生也学不完某个方向”的地步?

庄子曾说:“吾生也有涯,而知也无涯。以有涯随无涯,殆矣”。学无止境,古希腊哲学家芝诺也曾讲过一个“知识圆圈说”的故事。大概意思是,一个人的知识就好像一个圆圈,知识越多,圆圈越大,接触到的未知也越大。通俗来说就是:“知道的越多,不知道的越多”。

大哲学家尚且如此,我们普通人,怎么说呢,就是你越是热爱学习,越是努力学习,越发现知识的深不可测,以及自己的无知。我将之称为“知识黑洞”——当我们对一个方向钻研深入时,就好像误入黑洞——渺小、无助、但被吸引。

我是一名 AI 工程师,说到AI领域,那更是黑洞中的黑洞。文本、图像、视频、音频等不同模态算法,大模型、多模态、强化学习、推理部署等不同方向,这些还不算细分风向,比如大模型下的预训练、文本下的搜索、推理部署下的量化等等。另外,AI还属于计算机的分支,作为工程师你不能不懂编程、数据结构、计算机原理、网络、数据库等等。虽然很多方面可能并不需要掌握精深,但学习探索的时候也很容易扎下去,学到恍惚、迷惘。我时常会有这种无力感,不光是因为知识的无限,更是因为——我已经无法再像过去那样,相信“只要足够努力,就能覆盖足够多的世界”。很多时候我都会自问:努力之后呢?努力到什么时候呢?

面对这种情况,大概只有两种选择:不学和去学。

不学,很简单——维持现状,在现有位置上躺着即可。这种选择其实不见得不好。年轻的时候总觉得人就是得干出一番事业来,随着年纪的增长,逐渐认识到,平凡也是一种生活方式。幸福如人饮水,冷暖自知。很多时候“我”觉得人应该怎样其实只是“我”自己的观点,万不能强加到他人头上。

那去学呢?这就要考虑学什么、怎么学的问题。诚然,我们可以漫无目的地去学,这本身也是一种学习方式。但显然我们更看重有选择地去学,倒不一定有目的。这关键是机会成本,随着年纪增长,时间和精力越来越成为我们最宝贵的资源,我们当然希望能更有效力利用这些资源。这里的“有效”其实隐含了一个假设:我们需要有一个主线,说是理想也好、长期目标也罢,它的作用就是防止我们随波逐流,被这日益浮躁的社会冲跑。长期以往,即便速度慢,整体效率也不会低。在我看来,这个主线简单来说就是“所爱”——你所热爱的、挚爱的、永远为之着迷、为之充满热情的事物。找到它,一点一滴构建属于自己的体系,一砖一瓦筑造属于自己的框架。

“路虽远,行则将至”,心有所属,“不断前进,不断走向下一个目标”便是自然之事。这趟旅途可能永无终点,旅途路上可能日渐孤单,但我相信,“心之所向,身之所往”——“永远在路上”就是最好的修行。我不知道这样做是否能够获得世俗意义的成功,但它一定会让我们的心更加平静、祥和,这难道不也是一种成功?也许,人生本就没有所谓完美和圆满吧?

Reward建模新范式:无验证RL——当模型只能相信自己,会发生什么?

随着 GRPO 在后训练的不断应用和成熟,越来越多的任务都开始采用 RL 作为进一步提升效果的方案。但是对于那些缺乏明确标准答案的场景,除了人工标注外,还有没有其他比较高效、低成本的方案呢?

R1 之后出现了一种比较激进的方案:无验证 RL,模型不再依赖外部验证器,而是仅利用自身内部信号,如一致性、置信度或分布特征等来构造学习信号。

从最早的多数投票(TTRL、SRT),到基于熵与自确定性的强化学习,再到引入语义多样性与进化机制的最新方法,这个方向看似在不断取得进展,但其实这一类方法有个很严重的问题:“绝大多数内部反馈机制,本质上都在推动策略熵持续下降。”

这既解释了它们在训练初期或部分任务的有效性,同时也揭示了很多时候性能退化和探索崩塌的缘由。最新的工作从各个角度提出改进策略,如优势重塑、多样性奖励到进化式选择等等,但归根结底也都是在增加模型的探索能力,或者说平衡探索-利用。那么,对这种新的 RL 范式,你怎么看?


TL;DR

  • TTRL / SRT、EM / RENT、Intuitor、EMPO 等方法都在显式或隐式地最小化策略熵。
  • 内部反馈奖励几乎必然导致策略熵单调下降,最终引发探索不足与性能退化。
  • ETTRL 通过高熵 token 分支 rollout 与基于熵的 advantage 重塑,缓解早期过度自信。
  • Darling 将语义多样性显式并入奖励,增加探索。
  • EVOL-RL 以“多数选择 + 新颖性变异”模拟进化过程,在稳定与探索之间取得更优平衡。
  • RESTRAIN 利用全部 rollout 信号,对低一致性与过度自信样本进行系统性惩罚。

方案 具体做法 特点
TTRL 250422[1] / SRT 250527[2] 多数投票答案 部分领域(数学)使用
EM 250521[3] FT 直接最小化 token 级别熵(类似 SFT) 数学和编码任务中强
EM 250521[3] RL / RENT 250528[4] 熵作为奖励 能在大型数据集上收敛
EM 250521[3] INF 将 LLM 输出的 logits 视为可自由优化的参数 最小化输出分布的熵
EMPO 250408[5] 将输出按语义聚类,语义簇熵作为奖励 增加一点多样性
Intuitor 250526[6] 自确定性(输出分布与均匀分布的平均 KL 散度)作为奖励 对“更长文本偏好”偏差不敏感
ETTRL 250815[7] 树状分支 rollout + Advantage clip 降低成本、缓解早期估计偏差
Darling 250902[8] 奖励×多样性 增加回复的语义多样性
EVOL-RL 250918[9] 模拟生物进化增加新颖性奖励 防止熵崩塌
RESTRAIN 251002[10] 惩罚低一致性样本同时保留高潜力推理链 无监督自我改进

More

DeepSeekV3.2后训练:稳定压倒一切

DeepSeek-V3.2 发布后,外界讨论大多集中在“新增了工具使用”、“是不是比某某更强”之类的话题。但如果你真正关心模型训练,会发现它最值得研究的地方根本不在模型能力,而是在 后训练(post-training)阶段的一系列稳定性工程。V3.2 不像 V3 带来结构性突破,更像是一次“工程师版本的 V3.2”:没什么光鲜亮丽的大新闻,但每一个小改动都在解决真实训练痛点。

TL;DR

DeepSeek-V3.2 的后训练重点不是“更强”,而是“更稳”。大量技巧围绕 GRPO 稳定性 展开。

  • 数据部分:多个领域专用专家 → 生成数据 → 蒸馏到统一模型。
  • GRPO 稳定性优化:
    • Advantage 去标准差:消除难度偏差,提高样本权重的公平性。
    • KL 的无偏修正:基于 K3 + 重要性采样,使 KL 梯度更稳定可靠。
    • 序列级 off-policy 掩码:屏蔽高偏差且优势为负的序列,显著提升稳定性。
    • MoE 路由保持:固定专家路由,避免 off-policy 和训推框架不同导致的路由漂移。
    • 采样保持:保持 π_oldπ_θ 的动作空间一致,避免采样截断可能带来的稳定性问题。
  • 工具使用部分提出更高效的思维轨迹管理方式:只有新用户消息进来才清空工具调用推理轨迹,工具调用历史则始终保留。

More

DeepSeekMath-V2自我验证:搞数据的风吹到了奖励模型

在开放性问题上,仅靠生成答案很容易出错。如何让模型不仅能写出证明,还能识别自身错误,从而形成闭环优化?答案是——自我验证。来看一下 DeepSeek 最新的论文:DeepSeekMath-V2: Towards Self-Verifiable Mathematical Reasoning[1],看自我验证如何让 LLM 生成与评估协同来提升数学定理证明能力。

TL; DR

  • 训练验证器:验证器不仅打分,还识别证明中的问题。
  • 引入元验证:通过二次评分机制防止验证器虚构问题,使验证分析更可靠。
  • 训练生成器:生成器在生成证明后进行自我分析,并根据验证器和元验证器的反馈优化输出。
  • 验证生成协同:生成器与验证器形成闭环,生成新的证明挑战验证器能力,同时扩大自动标注数据,提高整体系统可靠性。

核心启示是:奖励模型不仅要给分数,更要建模评估分析过程,让生成与验证形成协同闭环,显著提升开放性问题的推理能力。

More

两处容易踩的坑:LLM 消息数组与字典工具的隐藏副作用

在 LLM 应用开发里,我们经常需要处理多轮消息、对话历史等结构化内容。理论上,这些对象应该是简单、透明、可控的——但在 NumPy 和特定字典工具(如 addict.Dict)参与后,一些微妙的行为会悄悄改变数据结构,让输出变得诡异甚至完全不对。本篇记录我在实际开发(尤其是 verl 与 transformers)中遇到的两个“小问题”:一个来自 NumPy 的自动维度推断,另一个来自字典工具的默认属性行为。它们不是 bug,却可能让你花一阵子 debug。

TL;DR

  • NumPy 变长消息问题:当使用 np.array(..., dtype=object) 处理长度不一致的消息列表时,NumPy 可能返回不同维度的数组,导致后续处理出错。改用 np.fromiter 或预分配 object 数组并赋值,可确保输出结构统一。
  • 字典赋值工具干扰问题:使用 addict.Dict 等动态字典工具包装消息数据时,其默认行为会干扰 transformers 对消息结构的正确判断,导致模板生成错误。可换用 OmegaConf 或修改 addict 源码禁用自动建键功能以修复问题。

More