精讲(但绝对讲明白)Deepseek的新论文SPCT

论文全名:Inference-Time Scaling for Generalist Reward Modeling

地址:https://arxiv.org/pdf/2504.02495?

这论文多少离经叛道

Image

,以至于我本来一天最多写一篇公众号,今天写了2篇

Self-Principled Critique Tuning (SPCT)这其实是一个训练方式,但是我们得一会讲

咱们这个博客一般来讲都是尽量给同学们讲明白为主,但是论文写的多少有点复杂,如果你没做过强化学习尤其没设计过reward容易一头雾水,所以我尽量多举例子让大家看明白是咋回事

好了废话说完了,进入正题

首先看一幅图,我认为是论文里值得说的一张图,我也就引用这一张

这图啥意思呢?

我们先把它分为上中下两部分

上部分:

Image

 Reward Generation Paradigms 和 Scoring Patterns

这俩是啥呢?

奖励生成范式 (Reward Generation Paradigms) 主要有三种:

(a) 标量 (Scalar):这种方法直接为给定的查询和回复分配一个标量值作为奖励。这个标量值代表了模型对回复质量的评估。

(b) 半标量 (Semi-Scalar):这种方法不仅生成一个标量奖励值,还会生成一段文本形式的判断或评论 (Critique)。评论可以解释模型给出该标量奖励的原因。

(c) 生成式 (Generative):这种方法只生成文本形式的评论 (Critique) 作为奖励。奖励值可以从生成的文本中提取出来(例如,评论中直接包含分数,或者通过分析评论内容来判断偏好)。

评分模式 (Scoring Patterns) 主要有两种:

(i) 点式 (Pointwise):这种方法独立地为每一个给定的回复分配一个分数。它可以接受单个或多个回复作为输入,并为每个回复都给出一个评估。

(ii) 成对 (Pairwise):这种方法主要考虑两个回复之间的相对偏好。模型通常会判断在给定的两个回复中,哪一个更好。虽然这种方法可以扩展到处理多个回复,但通常需要额外的技术。

这最上层的5个概念都解释完了,你是不是还时比较懵圈?

我建议你看结合图一起看,然后?

可能你还时懵

没事,也正常

现在我们要把这3种奖励生成范式和评分标准做5种组合形成RM也就是reward model,奖励模型工作的范式

这就要说图中间的 5个模式

Image

为了让大伙更具像化地理解图 2 中不同的奖励生成范式和评分模式,我门将分别用一些具体的例子来解释:

1. (a) 标量 (Scalar) + (i) 点式 (Pointwise) - 代表方法:Bradley-Terry

  • 类似问题场景:

     假设你正在训练一个模型来生成电影推荐的理由。你收集了大量用户对于两部不同电影的推荐理由的偏好数据(例如,用户更喜欢理由 A 还是理由 B)。

  • Bradley-Terry 的运作方式:

     Bradley-Terry 模型会基于这些成对的偏好数据进行训练,学习一个潜在的“质量”得分。  当你给模型一个新的电影推荐的理由时,训练好的 Bradley-Terry 模型会直接输出一个标量分数,这个分数代表了模型根据其学习到的偏好,对这个推荐理由的质量的估计。

  • 具体例子:
    • 问题:

       推荐电影《星际穿越》,并给出理由。

    • 回复 1 的理由:

       “这部电影的视觉效果非常震撼,剧情也引人入胜。”

    • 回复 2 的理由:

       “影片深入探讨了时间、空间和人类情感的复杂关系,演员的表演也十分出色。”

    • Bradley-Terry 模型可能会给回复 1 打一个分数 0.7,给回复 2 打一个分数 0.9。

       这表明模型学习到,通常用户更偏向于更深入、更具分析性的推荐理由。注意,这里是针对每个回复独立给出一个标量分数。

2. (a) 标量 (Scalar) + (ii) 成对 (Pairwise) - 代表方法:PairRM

  • 类似问题场景:

     仍然是电影推荐理由的场景。你希望模型能够判断在两个给定的推荐理由中,哪一个更好。

  • PairRM 的运作方式:

     PairRM 模型在训练时会接收一对回复,并输出一个标量值。这个标量值的符号表示偏好方向(正数表示喜欢第一个回复,负数表示喜欢第二个回复),大小可能表示偏好的强度。

  • 具体例子:
    • 问题:

       推荐电影《盗梦空间》,并比较以下两个理由哪个更好?

    • 回复 1 的理由:

       “剧情很烧脑,结尾反转令人意想不到。”

    • 回复 2 的理由:

       “诺兰导演的经典之作,多层梦境的设计非常巧妙。”

    • PairRM 模型可能会输出一个值 -0.5。

       负号表明模型认为回复 2 比回复 1 更好,0.5 的绝对值表示偏好程度中等。这里输出的是一个标量值,其符号直接指示了两个回复的相对偏好。

3. (b) 半标量 (Semi-Scalar) + (i) 点式 (Pointwise) - 代表方法:CLoud

  • 类似问题场景:

     假设你希望模型不仅给出一个代码回复的质量评分,还能提供一些关于代码的反馈意见。

  • CLoud 的运作方式:

     CLoud 模型会首先生成一个文本形式的评论 (Critique),指出代码的优点和缺点。然后,基于这个生成的评论,模型会输出一个标量奖励 (Scalar),作为对代码质量的最终评估。

  • 具体例子:
    • 问题:

       请评价以下 Python 函数的质量:

    • def factorial(n): 

           if n == 0: 

              return 1 

           else:

              return n * factorial(n-1)

    • CLoud 模型可能会生成以下评论:

       “这段代码实现了计算阶乘的递归函数。代码简洁明了,逻辑正确地处理了基本情况 (n=0)。然而,对于较大的输入,递归可能导致堆栈溢出。”

    • 然后,模型会基于这个评论,给出一个标量分数,例如 0.8。

       这个分数是基于评论中提到的优点(简洁、正确处理基本情况)和缺点(可能发生堆栈溢出)综合得出的。这里既有文本评论,也有最终的标量分数。

4. (b)/(c) 生成式 (Generative) + (ii) 成对 (Pairwise) - 代表方法:LLM-as-a-Judge / TokenProb

  • 类似问题场景:

     你希望使用一个大型语言模型直接判断两个文章摘要哪个写得更好,并且能够给出判断的理由。

  • LLM-as-a-Judge 的运作方式:

     LLM-as-a-Judge 模型会接收一对回复,并生成一个文本形式的判断 (Critique),这个判断会明确指出哪个回复更好,并解释原因。

  • TokenProb 的运作方式:

     类似地,模型可能生成一段文本,但关键在于某个特定标记 (Token) 的生成概率,这个标记预先被定义为代表某种偏好(例如,标记 "[]" 表示第一个回复更好)。这个标记的生成概率就被用作标量奖励

  • 具体例子 (LLM-as-a-Judge):
    • 问题:

       对于一篇新闻报道,以下哪个摘要更好?

    • 摘要 1:

       “昨日发生一起交通事故,两人受伤。”

    • 摘要 2:

       “昨日下午三点,在市中心路口发生一起涉及两辆汽车的交通事故,导致两人轻伤,交通一度受阻。”

    • LLM-as-a-Judge 可能会生成以下评论:

       “摘要 2 比摘要 1 更好,因为它提供了更详细的信息,包括具体的时间、地点和事故的严重程度,更全面地概括了新闻报道的内容。” 这里的“评论”本身就指出了偏好。

  • 具体例子 (TokenProb):
    • 模型接收同样的两个摘要,可能会生成类似:“摘要 [2] 更好,因为它…” 这样的文本。如果 "[]" 这个标记的生成概率很高,就表示模型认为第二个摘要更好,这个概率可以被视为一个标量奖励。

5. (c) 生成式 (Generative) + (i) 点式 (Pointwise) - 代表方法:GRM

  • 类似问题场景:

     你希望模型能够详细地评估一个学生提交的编程作业,给出多个维度的评价和每个维度的得分。

  • GRM 的运作方式:

     GRM 模型会接收一个或多个回复,并生成一个文本形式的评论 (Critique)。这个评论会包含对每个回复的详细分析,并且通常会直接在文本中给出每个回复在不同评估维度上的得分

  • 具体例子:
     
    • 问题:

       评价以下两段 Python 代码的质量:

    • GRM 模型可能会生成以下评论:
      • 代码 1:

         (与之前阶乘函数相同)

        def factorial(n): 

             if n == 0: 

                return 1 

             else:

                return n * factorial(n-1)

      • 代码 2:

        def factorial(n):

            result = 1

            for i in range(1, n + 1):

                result *= i

            return result

        • 代码 1 分析:

           “这段代码使用递归方法计算阶乘。正确性得分:9/10。代码简洁,易于理解。可读性得分:8/10。但对于大输入可能导致堆栈溢出。效率得分:7/10。”

        • 代码 2 分析:

           “这段代码使用循环迭代方法计算阶乘。正确性得分:10/10。代码逻辑清晰,避免了递归的潜在问题。可读性得分:9/10。对于大输入更稳定。效率得分:9/10。”

      • 整体而言,代码 2 在效率和稳定性方面更优。最终得分:代码 1就不如 代码 2呗。

      注意,这里的评论直接包含了每个回复的多个维度的得分,并且最终给出了一个或多个整体的综合得分。

      所以现在大家基本理解了RM 打分的组合工作方式

      那这些哪个更好一点呢?

      我们刚才讲了这个图的上部分,和中部分,现在讲下部分

      Image

      这个从两个维度inference time scalable 和 input flexible 也就是推理scaling law通过算力增强模型的能力和输入灵活性的维度来判断这几个哪个更牛比。

      OK,那我们就来分析一下这五种奖励方式在 图中关于 “Inference-Time Scalable”(推理时可扩展性)和 “Input Flexible”(输入灵活性)的打勾和打叉的依据:

      首先,我们回顾一下 图中列出的几种代表性方法与奖励生成范式和评分模式的对应关系:

      • (a) + (i) 标量 (Scalar) + 点式 (Pointwise)

        : Bradley-Terry 模型 (PairRM 在某种程度上也属于,但 图里面将其归为 a+ii)

      • (a) + (ii) 标量 (Scalar) + 成对 (Pairwise)

        : PairRM

      • (b) + (i) 半标量 (Semi-Scalar) + 点式 (Pointwise)

        : CLoud

      • (b)/(c) + (ii) 半标量/生成式 (Semi-Scalar/Generative) + 成对 (Pairwise)

        : LLM-as-a-Judge, TokenProb

      • (c) + (i) 生成式 (Generative) + 点式 (Pointwise)

        : Pointwise GRM (例如 DeepSeek-GRM)

      接下来,我们逐一分析每种组合的推理时可扩展性和输入灵活性:

      1. (a) + (i) 标量 + 点式 (Bradley-Terry 模型):

        • Inference-Time Scalable

          打叉。标量奖励模型通常直接输出一个数值,难以通过多次采样获得不同的奖励信号,因此无法通过基于采样的推理时扩展来提高性能。虽然可以对同一输入多次运行模型,但输出的标量值往往是不变的,无法进行有效的聚合。

          这块我详细解释一下为啥?

            标量奖励模型通常直接输出一个数值,难以通过多次采样获得不同的奖励信号,因此无法通过基于采样的推理时扩展来提高性能。虽然可以对同一输入多次运行模型,但输出的标量值往往是不变的,无法进行有效的聚合。” 这句话解释了为什么标量奖励模型通常不具备推理时可扩展性,尤其是在基于采样的方法中。

          标量奖励模型 (Scalar Reward Models) 通常直接输出一个数值 (a single numerical score)。 这意味着对于给定的一个问题(query)和一个或多个回答(responses),模型最终会给出一个或多个对应的单一数值作为奖励分数。例如,对于一个电影评论,模型可能会给出 4.5 分;对于两个不同的回答,模型可能会分别给出 3 分和 4 分。

           难以通过多次采样获得不同的奖励信号 。  采样 在语言模型中指的是多次运行同一个输入,希望模型能够产生不同的输出。对于生成式模型 ,由于其输出是基于概率分布的,多次采样通常会得到不同的文本、不同的判断或不同的打分依据(例如,不同的原则和评论)。然而,标量奖励模型的设计目标是对于相同的输入产生一个确定的或非常接近的数值作为奖励。即使我们多次运行同一个标量奖励模型,它很可能会给出相同的或几乎相同的数值结果,因为其输出空间非常有限,只是一个或几个数字。

          因此无法通过基于采样的推理时扩展来提高性能 。 推理时扩展 (inference-time scaling) 指的是在不重新训练模型的情况下,通过增加计算资源(例如,进行多次采样)来提升模型在推理阶段的性能。对于那些可以通过多次采样获得不同结果的模型,我们可以通过聚合 (aggregation) 这些不同的结果(例如,通过投票、平均或其他更复杂的策略)来得到一个更稳定和更准确的最终判断。但是,如果标量奖励模型多次采样都给出几乎相同的结果,那么聚合这些重复的结果就无法提供额外的信息或提高性能

          虽然可以对同一输入多次运行模型,但输出的标量值往往是不变的,无法进行有效的聚合 。 这进一步强调了即使我们增加了推理计算次数,但由于标量奖励模型的输出缺乏多样性,我们无法利用这些额外的计算来改进最终的奖励评估。有效的聚合需要我们有多个不同的、有价值的信号可以进行组合,而标量模型在多次推理时往往无法提供这样的多样性。

      简单来说,标量奖励模型就像一个总是给出相同答案的计算器。无论你问它多少次同一个问题,它都会给出相同的答案。因此,多次询问并不能帮助你得到更准确或更细致的评估。

      至于 Input Flexible

      这里可以打勾。因为点式评分模型可以独立地为每个给定的回复生成一个分数,因此天然支持对单个、成对或多个回复进行评分。

      2.(a) + (ii) 标量 + 成对 (PairRM):

        • Inference-Time Scalable

          打叉。类似于标量点式模型,标量成对模型输出一个标量值来表示两个回复之间的偏好,缺乏通过采样获得多样化奖励的能力,难以进行有效的推理时扩展。

        • Input Flexible

          打叉。成对评分模型的核心是比较两个回复以确定相对偏好,因此不直接支持对单个回复进行评分。虽然可以扩展到处理多个回复,但通常需要额外的技术。

      3.(b) + (i) 半标量 + 点式 (CLoud):

        • Inference-Time Scalable

          打勾。但是其实它也有点问题,一会咱们单解释

        • Input Flexible

          打勾。点式评分模式意味着可以独立地为每个回复生成标量奖励和评论,因此支持对单个、成对或多个回复进行评分.

      4.(b)/(c) + (ii) 半标量/生成式 + 成对 (LLM-as-a-Judge, TokenProb):

        • Inference-Time Scalable

          打勾。这些方法通过生成文本来判断两个回复的偏好,或者利用特定 token 的生成概率作为偏好。通过多次采样,模型可以生成不同的判断或概率分布,然后可以通过投票(例如,选择被认为更好的回复次数最多的那个)等方式进行聚合,从而提高判断的可靠性。LLM-as-a-Judge 通过投票可以获得一定的性能提升.

        • Input Flexible

          打叉。成对评分是这些方法的核心,它们主要关注两个回复之间的相对偏好,不直接适用于对单个回复进行评分

      5.(c) + (i) 生成式 + 点式 (Pointwise GRM, DeepSeek-GRM):

        • Inference-Time Scalable

          打勾。生成式点式奖励模型(例如 DeepSeek-GRM)通过生成详细的文本评论,并从中提取每个回复的奖励分数。通过多次采样,模型可以生成不同的原则和评论,从而产生不同的奖励分数。然后,可以对这些采样的奖励进行投票或使用元奖励模型进行更精细的聚合,显著提高奖励的质量和细致程度。图 1 和图 6 清晰地展示了 DeepSeek-GRM 通过增加采样次数可以持续提升性能。

        • Input Flexible

          打勾。点式评分模式允许模型独立地为每个输入的回复生成评论和奖励分数,因此天然支持对单个、成对或多个回复进行评分。附录 E.1 提供了经验证据,表明 pointwise GRM 可以灵活地处理不同数量的回复。

             

               看着好像第五个最行是吧,因为本文就是基于它

      Image

      下面单说一下第三种 (b) + (i) 半标量 + 点式 (CLoud)的inference-time scaling的问题

      Image

      CLoud一上真章是真的拉呀,绿色的那个

      为什么呢?

      图1中 "(b) + (i) 半标量 + 点式 (CLoud)" 在 "Inference-Time Scalable" 这一项下被标记为对号 。这似乎表明这种类型的模型具备推理时可扩展性。

      “半标量模型除了生成标量奖励外,还会生成文本评论 (critique)。虽然评论内容可能因采样而有所不同,但最终提取的标量奖励的方差可能有限,导致基于采样的投票或平均等推理时扩展方法带来的性能提升不明显。如2显示,CLoud-Gemma-2-27B 的推理时扩展效果十分的拉。

      • 图 21可能从理论上指出半标量模型 可以 进行基于采样的推理时扩展,因为其生成的评论 (critique) 在多次采样中可能存在差异。理论上,这些不同的评论可以作为判断的基础,即使最终的标量奖励提取自这些评论。

      • 然而,实际效果(如图 2)表明,对于像 CLoud-Gemma-2-27B (就是拿Cloud的方式来训的一个Gemma-2-27B模型)这样的具体半标量模型,即使评论有所不同,最终提取的标量奖励的方差可能很小。这是因为标量奖励通常是基于评论以某种方式(例如,通过一个额外的价值头部 或预定义的规则)提取出来的。如果这个提取过程对评论的细微变化不敏感,或者标量奖励的输出范围有限,那么多次采样的结果仍然会非常接近,导致聚合后的性能提升不大.

      • 因此,图 1更侧重于理论上的可能性,而实验结果则反映了实际应用中半标量模型在推理时扩展方面的局限性。 换句话说,虽然理论上可以通过采样得到不同的评论,从而可能带来不同的奖励信号,但在实践中,这种差异可能不足以实现有效的性能提升。

      总结来说,图 1中 CLoud 的 "Inference-Time Scalable" 被标记为对号可能是基于其生成评论的特性,理论上允许进行多次采样。但实际实验结果(如图 2)表明,由于最终标量奖励的方差有限,CLoud-Gemma-2-27B 的推理时扩展效果并不显著。这可能意味着 "Inference-Time Scalable" 的概念在图 1中是以一种较为宽泛的理论可能性来标记的,而实际的性能表现是弟中弟。

      总之最重要的图我解释完了,到这里希望你能看懂了,总结一下就是最牛B得是5号选手它采用了什么呢?

      我门在复习一下:

      Image

      1.Reward Generation Paradigms 它选的是C也就是生成的,不光是给一个标量打分

      2.Scoring Patterns,它选的是点到点,不是相对得分

      这也就是我们最终的选择,pointwise GRM

      铺垫了这么多,要引出这个论文的训练方式了SPCT

      SPCT (Self-Principled Critique Tuning) 和 pointwise GRM (点式生成式奖励模型) 之间存在着密切且关键的关系。SPCT 是一种专门为 pointwise GRM 设计和采用的学习方法。

      • SPCT 的目标是提升 pointwise GRM 的性能和能力,SPCT 的提出是为了改进通用奖励模型(generalist RM)的推理时可扩展性,而Deepseek他们选择采用 pointwise 生成式奖励模型 (GRM) 来实现这一目标。

      • Pointwise GRM 是 SPCT 所作用的对象。SPCT 被开发出来是为了让 pointwise GRM 能够学习生成自适应的、高质量的原则,并利用这些原则有效地指导批判的生成,SPCT 是一种训练 pointwise GRM 的具体方法

      • Pointwise GRM 的特性为 SPCT 的实施提供了基础。Pointwise GRM 的关键特性,例如能够以纯语言表示统一地对单个、成对和多个回复进行评分,以及其生成式的特性允许通过采样获得不同的奖励信号,为 SPCT 中原则的生成和推理时的扩展提供了灵活性和潜力。标量奖励模型由于奖励生成不变性,难以通过采样提高性能,而 pairwise 奖励模型在处理单个或多个回复时缺乏灵活性。因此,pointwise GRM 的这些特性使其成为 SPCT 这种旨在提升推理时可扩展性的学习方法的理想选择。

      下面讲SPCT怎么个训练

      SPCT 是一种强化学习方法,专门为点式生成式奖励模型 (pointwise Generative Reward Modeling, GRM) 设计,旨在提高通用奖励模型 (generalist RM) 的推理时可扩展性。通过 SPCT,GRM 能够学习自适应地生成高质量的原则 (principles),并基于这些原则有效地指导批判 (critiques) 的生成,从而改善奖励的质量,并为推理时扩展奠定基础。

      SPCT 这个路子没毛病,然而,模型自身生成的原则最初可能效果不佳,但经过筛选的高质量原则可以显著提升奖励质量,所以要用特训方法。

      SPCT 主要包含两个阶段:

      Image

      1. 拒绝式微调 (Rejective Fine-Tuning, RFT):这是 SPCT 的冷启动阶段。

        • RFT 的核心思想是使 GRM 能够生成格式正确的原则和批判,并适应各种输入类型。

        • SPCT 采用点式 GRM,以便能够以相同的格式灵活地为任意数量的回复生成奖励。

        • 在数据构建方面,除了通用指令数据外,还会使用预训练的 GRM 对来自不同回复数量的奖励模型数据的查询和回复进行采样。

        • 拒绝策略是统一的,即拒绝那些预测奖励与真实情况不符 (incorrect) 的轨迹,以及所有 NRFT 次采样轨迹都正确 (too easy) 的查询和回复。

        • 此外,还采用了提示采样 (hinted sampling) 的可选方法,即将真实最佳回复的索引添加到提示中,以期望预测的奖励与真实情况对齐。尽管如此,这个论文里面的研究发现提示采样有时会使生成的批判变得简洁,尤其是在推理任务中,这也抬高了在线强化学习的必要性。

        • RFT 的目标是使 GRM 能够以正确的格式生成原则和批判,为后续的在线强化学习打下基础。

      2. 基于规则的在线强化学习 (Rule-Based Online Reinforcement Learning):该阶段通过不断优化生成的原则和批判来增强通用奖励生成能力。

        • 在线强化学习的目标是鼓励 GRM 区分最佳回复,这有利于有效的推理时扩展。

        • 奖励信号可以从任何偏好数据集和标注的 LLM 回复中无缝获取。

        • 在线强化学习旨在改进模型自适应地提出原则和批判的能力,从而在通用领域获得更好的奖励结果。

      SPCT 如何促进推理时可扩展性

      • SPCT 训练的 GRM (即 DeepSeek-GRM) 能够在推理时通过多次采样来扩大计算使用

      • 通过并行采样,DeepSeek-GRM 可以生成不同的原则和相应的批判。

      • 随着采样规模的扩大,DeepSeek-GRM 能够基于更多样化的原则更准确地判断,并输出更细粒度的奖励。这解决了奖励模型在推理时可能面临的准确性和粒度问题。

      • 为了进一步提升推理时扩展的性能,除了简单的投票 (voting) 之外,还训练了一个元奖励模型 (meta RM) 来指导投票过程。元奖励模型是一个点式标量奖励模型,用于识别 DeepSeek-GRM 生成的原则和批判的正确性。通过元奖励模型输出的元奖励,可以对采样的奖励进行筛选,从而选出更高质量的样本进行投票,提高最终奖励的准确性。

      我文章前面为啥说这论文离经叛道呢,因为以往DS论文都以能多简单多简单著称,比如R1,他们之前把PRM砍了,value model砍了,GAE也不做了,PPO给GRPO了,RM给改成RF了reward function了,反正就是粗糙着来。

      这次不但这么复杂的训练了一个RM,而且还整个了meta RM 给voting的过程来评分,所以感觉不是很deepseek

      好了,就写到这了,我讲的这么细了,你要是还看不懂,那你自己找原因,再见吧

      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值