52

为什么 SFT 不够——正例训练的缺口

阅读约 3 分钟第 52/60 课

SFT 只给模型看了「好的回答长什么样」。但这不够。

只看正例的问题

想象你在教一个孩子画画。你给他看了一百幅好画作为示范。他学会了画画——但他不知道什么样的画是「不好的」。他可能画出来的画某些方面很好(模仿了好画的某些特征),但另一些方面很糟(因为他不知道要避免什么)。

SFT 也是这样。模型从教师的回答中学到了「好回答的平均样子」,但它不知道:

  • 什么样的回答是啰嗦的(应该更简洁)
  • 什么样的回答是不准确的(应该更谨慎)
  • 两个都不错的回答中,哪个更好

偏好数据

偏好优化使用的训练数据不是单个回答,而是成对的回答——对于同一个问题,给出两个回答,标注哪个更好:

用户问题:Python 中怎么反转一个列表?

回答 A(更好):
  用 list.reverse() 或 list[::-1]。前者就地修改,后者返回新列表。

回答 B(更差):
  你可以使用 Python 内置的 reverse 方法来反转列表哦!这是一个非常常用的操作呢!
  具体来说,你可以这样做:my_list.reverse(),这样就可以反转列表啦!
  另外还有一种方法是……(冗长地继续了三段)

两个回答都是「对的」——信息没有错误。但 A 更简洁、更有效。模型需要学会区分这种差异。

偏好数据的来源

Sophia 使用了 1,953 对偏好数据。这些数据可以来自:

  • 人工标注:让标注员比较两个回答,选出更好的那个
  • 模型生成 + 人工排序:让模型生成多个回答,人工排出好坏
  • 基于规则的自动标注:用长度、格式、准确性等指标自动判断

1,953 对看起来不多——但偏好优化的效率很高,少量精心挑选的对比数据就能显著改善模型的行为。

下一章节来看偏好优化的主要算法——DPO。