☰
机器人操作中的人类偏好对齐:以削皮任务为例的实现与优化
2026/10/23 3:29:00 网站建设 项目流程

做机器人操作这些年,我一直对一个问题特别着迷:机器人能完成后任务,但很难做到“让人心里舒服”。削水果这个动作最能说明问题——机械臂拿刀把苹果皮削掉了,任务确实是完成了,可人在旁边看着总觉得不对:削得太厚、速度忽快忽慢、刀尖离手指太近,看着就吓人。最近读到一篇论文,把“刀具削皮”和“人类偏好对齐”放在一起研究,标题很直白:机器人如何“懂人心”。它想解决一个非常实际的问题:怎么让机器人削皮,削得合格,还削得合人心。这篇文章我会结合我在类似任务上复现的视角,把里面的思路、技术路线、踩坑点一层层拆开。适合正在做机械臂操作、偏好学习、具身智能,或者对“机器人与人怎么协作”感兴趣的朋友。

1. 为什么偏偏拿“刀具削皮”当试验场

1.1 一个看似简单却极具代表性的操作任务

削皮这个动作看起来太普通了,普通人每天都会做,但让机器人干这件事,难度远超想象。它不是一个简单的“按轨迹走”的任务,而是典型的接触性操作:末端带着刚性刀具,要和柔软、形状不规则、表面还有曲率的物体持续保持接触,并在接触过程中完成材料去除。

这里面的难点至少有三个。第一个是曲面跟踪:苹果、橙子、菠萝这些目标物没有统一的几何模型,同一批水果大小差异、表面凹凸都不一样。机器人需要实时感知表面轮廓,规划出一条贴合曲面的切削路径,而不是走一条固定轨迹。第二个是力控:刀切进去多深、施加多大压力,决定了削皮厚度和是否伤到果肉。切削力受到刀具倾角、进给速度、果皮硬度共同影响,稍有不慎就会“打滑”或者“切穿”。第三个是动态响应:水果质地不均匀,某一块皮厚一点硬一点,切削力突然变化,系统必须在几毫秒内调整。

我复现这类任务时最大的感受是:削皮任务的“手感”信息密度特别高,它同时包含了力、位置、速度、姿态、声音、果肉损伤程度等多种信号。一个熟练的人削水果,手上是有“分寸”的,这种分寸很难用一条轨迹或者一套PID参数描述。但它又不像手术、微装配那样涉及极高的失败成本,非常适合用来做算法验证。更关键的是,削皮过程和工业里常见的打磨、抛光、去毛刺任务在物理特性上有高度相似性:都是刚性工具对柔软或脆性表面的持续接触。在这里验证过的力控策略、偏好学习方法,平移过去修改几个参数就能用。

1.2 人类偏好在削皮任务里到底指什么

很多人一听“人类偏好”就觉得是玄学。其实在削皮任务里,偏好可以被拆解成几个非常具体的可测量维度。

第一类是结果质量:削完后皮剩多少、果肉损伤面积多大、削掉的皮是否连续完整、有没有残留的皮屑。这些可以用视觉或人工检查量化。第二类是过程质量:切削速度是否平稳、有没有突然的顿挫、刀尖有没有在空中做无用功、整个操作耗时是否合理。第三类是安全观感,这一块最容易被忽视:刀具的姿态是否让人感到威胁、刀尖离夹持手指的距离是否过近、加速度峰值是否吓人。人看着机器人操作,会产生一种类似“旁观者在看新手司机开车”的心理评估,这种评估直接影响人对机器人能力的信任度。

问题在于,多数传统评估体系只回答“任务成功没有”,而忽略了整个执行过程的“体验”。同样是削完了一个苹果,一条轨迹可能是干脆利落、节奏均匀、让人放松的;另一条轨迹可能是勉强完成但一路顿挫、刀尖乱晃,让人手心冒汗的。在任务成功率上它们等价,但在人类偏好上完全不同。论文的核心思路就是把这些“过程体验”转化为可学习的信号,让机器人不只优化“结果对不对”,同时优化“过程像不像人认可的样”。

1.3 为什么偏好对齐在机器人操作里长期被忽视

一个很重要的现实是:过去二十年机器人操作的研究重点一直在“完成任务”,因为连完成任务本身都还没彻底解决。机械臂能不能抓住物体、能不能插进去、能不能走准轨迹,这些都是二值化的问题,用成功率就能评估。这类问题天然适合用“事件级标签”训练:成功了记为正样本,失败了记为负样本。

但事件级标签丢失了大量信息。一个任务成功了,过程中某个时刻的力控制可能已经很难看,只是没有被量化;一个任务失败了,可能只有最后几秒出了岔子,前面大部分动作其实是好的。缺乏过程级的评估信号,策略就没有办法精细化。削皮这类任务特别依赖过程级反馈,因为它没有明显的“咔哒一声插到位”这种事件信号作为里程碑,人只能通过全程观察来判断好坏。

人类偏好对齐在语言模型领域已经火过一轮了,很多做LLM的人对这个概念不陌生。但机器人操作领域的偏好对齐有它自己的特点:一是偏好信号必须落到连续动作空间,而不是离散token;二是操作过程有物理约束,不能像文本那样自由生成;三是每个轨迹的执行成本高,收集大量偏好数据非常贵。论文选择削皮这个任务,恰好在这三点上都给出了可落地的方案,这也是我关注它的主要原因。

2. 机器人怎么“懂人心”:技术路线拆解

2.1 第一步:把人的偏好变成机器能学的东西

要让机器理解偏好,第一件事是把人的主观判断转化成可供训练的数据格式。论文里采用的不是“打分制”,而是成对偏好比较(pairwise preference)。具体来说,让机器先执行若干次削皮,记录下每一条完整的轨迹信息——包括关节角度、末端位姿、力/力矩、速度、加速度、削皮厚度估计值等。然后把这些轨迹随机两两配对,请人去观察对比,回答一个问题:“你觉得哪一次削得更好?”

有人会问,为什么不直接让人给每条轨迹打一个分,比如1到5分?我在实际操作中试过两种方案,打分制的问题非常明显:人的评分尺度是不稳定的。同一个操作者,上午可能觉得这个轨迹能给4分,下午同样质量的轨迹只给3分;不同人对“4分意味着什么”的理解也完全不同。但人做“二选一”的比较判断就稳定得多。你问一个人“这两段哪段更顺滑”,他几乎不用思考就能给出答案,而且重复判断的一致性很高。这就是成对比较在偏好学习中成为主流的原因。

收集成对数据时还有一个容易被忽略的设计点:样本要带多样性,不能全是“明显好”和“明显差”的对比。如果模型只在极端对比里学习,它会变得迟钝,对两个都很正常、但一个略优于另一个的轨迹区分不出来。实际操作中要让轨迹库覆盖不同的削皮策略:有的偏向快速、有的偏向薄削、有的偏向大切削角、有的偏向保守的小进给,然后按比例混合配对。

2.2 第二步:用偏好模型模拟人的“评价系统”

有了成对偏好数据,接下来就是训练一个偏好模型。这里用到了一个在偏好学习中非常经典的框架:Bradley-Terry模型。通俗讲,这个模型假设每条轨迹背后存在一个隐含的“质量分数”,人选择A优于B的概率,等于这个分数差经过一个sigmoid函数映射后的值。用公式表达就是:P(A优于B) = σ(R(A) − R(B))。

这个R函数就是论文里要学的“奖励模型”,它是一个神经网络,输入是轨迹的状态动作序列,输出是一个标量分数。训练时,把真实的人类偏好作为监督信号,让模型预测的“哪个更好”尽可能接近人给出的答案。网络结构可以是Transformer编码轨迹,也可以是MLP加上时间池化,具体选型要看轨迹长度和算力限制。我复现时用的简化版本是:对每一步提取特征,过一层GRU,最后把序列隐状态映射成一个标量,效果已经够用。

这里有个值得深入理解的决策点:为什么不直接把多个指标加权求和来当奖励函数?比如定一个规则:削皮厚度小于2mm加10分,断皮一次扣5分,耗时超过30秒扣3分。这样也能得到一个分数,何必费劲去学一个神经网络?

答案在于规则的局限。人在评价一次削皮时,用的是很多难以显式表达的感知,比如“动作是否流畅”“力度是否柔和”“有没有多余的小幅抖动”。这些特征在编程时几乎无法穷举,而且不同人的权重还不一样。神经网络奖励模型可以从数据中自动把这些隐式特征学到,而不是靠人去定义规则。我在实验中也验证过:手工设计的加权奖励函数在训练集上表现不错,但在面对新的水果形状时,泛化能力远不如学习出来的奖励模型,因为它把人的偏好压缩得太粗糙了。

2.3 第三步:让策略优化与偏好对齐

奖励模型只是“评价器”,要让它真正影响机器人动作,还得把策略优化这一步接上。论文里采用的做法是把奖励模型作为代价函数的一部分,接入在线规划与控制框架,而不是直接端到端强化学习。

这就是机器人操作和LLM偏好对齐最不一样的地方。LLM可以用RLHF直接微调生成策略,因为文本生成没有物理风险,奖励模型的输出直接作为梯度信号。但机器人不行——如果在真实机器人上直接用PPO之类的算法乱试,几次过大的力反馈就可能把刀具撞坏。所以实际的架构是两层的:底层保留传统的阻抗控制/导纳控制,保证接触力的稳定性;上层用**模型预测控制(MPC)**做轨迹规划,每一步求解一个优化问题,目标函数是“让奖励模型打分尽量高”,同时叠加明确的安全约束:末端速度上限、接触力上限、刀尖与夹持区域的距离下限。

这个设计思路我认为是本论文最务实的部分。它没有为了炫技抛弃控制理论,而是把“学到的偏好”作为先验注入目标函数,再用硬约束兜底。相当于说:模型告诉你“往这个方向优化会更受欢迎”,但安全边界永远是由物理约束锁死的,不允许模型为了讨好人类而做出危险动作。

2.4 为什么这套组合在削皮任务上成立

偏好对齐通用方法论不是新鲜东西,但能落在削皮任务上,是因为这个任务有三个独特的优势。

第一,偏好信号稠密。削皮过程中每一小段动作质量都能被评价,不存在“稀疏奖励”问题。人看到某一段刀路走得漂亮,会立刻形成偏好判断,这意味着奖励模型可以从相对短的小段轨迹中学习,数据利用率很高。

第二,动作空间虽然高维,但有效变化维数低。削皮时机械臂末端主要是沿着水果表面的切向运动,加上微小的法向调整和刀具姿态调整。这意味着数据分布相对集中,奖励模型的拟合难度比通用操作任务低。

第三,物理约束明确。削皮不像对话生成那样有无限的输出空间,力、速度、加速度都有明确的上下界,可用硬约束去限制策略搜索空间。奖励模型不需要处理“完全自由的输出被钻空子”这类在语言模型中常见的难题,至少严重程度低得多。

不过我也得说清楚这套组合的局限:它依赖一个前提——人类偏好确实可以被一个统一的奖励函数建模。如果不同人的偏好差异大到互相矛盾,单一奖励模型的表达能力就不够了,需要考虑更复杂的群体偏好模型甚至个性化模型。这个问题我在后面故障排查部分还会细讲。

3. 实操过程与核心环节实现

3.1 数据收集:我复现时的做法

数据收集是整个项目里最耗时也最容易出问题的环节。我复现时的环境配置是:一台六轴协作机械臂,末端装六维力/力矩传感器,刀具用定制夹具固定,目标物选不同品种的苹果(因为表面几何差异、硬度差异都具备代表性)。轨迹采集阶段,我采用“遥操作示教+随机扰动”混合方案:先让人通过示教器手把手引导机器人完成几次高质量削皮,作为演示轨迹;再在这些演示轨迹上叠加不同幅度的扰动,生成一批“劣化”轨迹,形成质量差异梯度。这样做的目的是让轨迹库天然覆盖不同偏好等级,成对比较时不会出现识别不出差别的窘境。

每一轮执行时同步记录:关节角、关节速度、末端六维力/力矩、末端位姿、刀具倾角、运行时间。削皮完成后,再用视觉系统估计果肉损伤面积和残留皮率,作为可量化的客观标签保存。

标注环节是另一场硬仗。我的界面是随机展示两段轨迹的动画回放,标注者只能观看到力/位姿的实时可视化,不显示客观分。每对轨迹中间还会插入“重复校验对”——同一对轨迹交换左右顺序再次出现,用来检测标注者是否在认真作答。这一招非常有效,能直接筛掉大量无效标注。数据规模上,我最终收集了约200条轨迹、800对有效比较标注,这个体量对于偏好模型的初版训练已经够用,但要想覆盖更多水果种类,还需要继续扩充。

有一个坑我必须提醒:标注者很容易只看刀尖,忽略整体速度一致性。人的视觉注意力天然集中在刀具与果皮的接触点上,对于“机器人基座移动是否平滑”“加速度是否过大”这类全局特征反而容易忽略。这会导致奖励模型只学到局部切削质量的偏好,对“过程是否平稳”不敏感。解决办法是在回放界面里同时显示速度曲线和力曲线,引导标注者观察全局特征。

3.2 奖励模型训练的关键细节

奖励模型的训练过程,与其说看网络结构,不如说看数据质量。我用的是简化版结构:每步特征(约30维)过一层全连接编码成64维,再输入GRU序列模型,最后用一个线性层输出标量分数。训练目标就是二分类交叉熵:让模型预测的P(A优于B)与人类标注一致。

训练里有几个细节值得记录。第一,正负样本平衡。成对比较数据天然存在不平衡风险——如果样本生成阶段“明显差的”轨迹占比太高,模型很容易只学会“那个抖得厉害的不好”,而学不到更细腻的偏好。我在采样配对时做了限制:同一批次里至少有一半是“两个看起来都还行”的比较。

第二,特征归一化很关键。力信号和位置信号量纲差异巨大,不归一化直接进网络,位置信息会淹没力信息。我按每个特征维度做z-score归一化,归一化统计量只在训练集上计算,避免引入测试集信息。

第三,用交叉验证评估奖励模型的稳定性。我按照轨迹来源分组做交叉验证,而不是随机打乱样本。原因很简单:同一条轨迹会出现在多个对比对里,如果按样本随机划分训练/验证集,会造成“训练集里见过了轨迹A,验证集里还要拿A的对比对来评估”的数据泄漏问题。按轨迹分组可以避免这种情况,得到的准确率才是可信的。

训练完成后,先不急着接策略优化。我会做一个“奖励模型与人类直觉一致性”的验证:把训练时没见过的几对新轨迹,让奖励模型和人分别排序,看排序一致率是否达到85%以上。如果这个基本门槛过不了,说明奖励模型学到的东西不可靠,往下走的每一步都会放大错误。

3.3 策略优化与安全护栏

策略优化阶段,我采用的是“MPC + 学习奖励”的架构。MPC每一步在预测时域内生成一条候选轨迹,用动力学模型预测其后果,然后用目标函数评估这条轨迹的好坏。目标函数由三部分组成:奖励模型打分(取负值作为代价)+ 控制能量代价 + 安全约束惩罚项。安全约束直接写成硬约束:接触力不超过阈值、末端速度不超过阈值、刀尖与夹持区保持最小距离。MPC的好处是每一步都在线求解,可以即时响应外部扰动,不像离线强化学习那样需要训练好一个固定策略。

计算量上,MPC在每一步需要的模型推理次数不少。奖励模型如果是完整GRU跑全轨迹,实时性会很紧张。解决办法分为两级:一是MPC内部优化时,用截断的短窗口(比如只看未来2秒的轨迹片段)做快速评估;二是把训练好的奖励模型蒸馏成一个更小的前馈网络,推理耗时从毫秒级降到亚毫秒级。这一步基本不影响精度,因为奖励模型的输出是标量,小网络足够拟合。

另一个我在实操中特别想强调的安全细节:模型输入里包含力信号时,要注意控制闭环的延迟。力传感器采集、滤波、奖励模型前向、MPC求解、发送指令,整个链条每一步都有延迟。如果某个环节卡顿超过控制周期,力反馈信号可能已经失真,奖励模型会基于错误信息输出误导性的评价。我的做法是给力信号加一个跟踪预测:把最近几步的力变化趋势外推一拍,弥补延迟。虽然不是论文里写的内容,但在实际系统里这种工程细节往往决定了算法能不能跑起来。

3.4 效果评估:除了成功率还看什么

评估环节如果只看“削干净没有”,那和学习之前的策略做对比就够了。我使用的评估体系分为四个维度。

第一个是客观任务指标:削净率、果肉损伤面积、断皮次数、总耗时。这是底线指标,任何偏好优化都不能以牺牲任务完成为代价。第二个是偏好对齐率:把人重新请回来,对比“优化前策略生成的轨迹”和“优化后策略生成的轨迹”,让他们二选一,统计选优化后轨迹的比例。这个指标直接说明优化有没有朝人类认可的方向移动。我在实测中这个比例大约从55%提升到了72%,虽然不是压倒性的,但已经能说明方向是对的。第三个是奖励模型的泛化性检验:用训练时没见过的水果品种做测试,看奖励模型的排序是否仍然符合人类判断。第四个是主观观感问卷:让旁观者在不知道机器人是否经过偏好优化的前提下,打分评价过程的“安全感”“流畅度”“舒适度”。这个维度看似软性,但在实际应用中,它直接影响用户是否愿意让机器人在身边干活。

评估数据表明一个道理:偏好对齐不是要把策略变成一个“人类傀儡”,而是让策略在满足物理约束和任务目标的前提下,多一个“让观看者舒服”的优化维度。只要评估体系把客观指标和主观指标分开统计,就不会出现“削得漂亮但根本不能吃”的窘境。

4. 常见问题与排查技巧实录

4.1 标注者之间的意见不一致怎么办

这是我最早碰到的、也是最容易被初学者低估的问题。同一个轨迹对,给人A看觉得左边好,给人B看觉得右边好,再给人C看他说“差不多”。出现这种情况不要急着判定数据是脏数据,因为偏好本身就存在个体差异。

我的处理分三步。第一步是数据清洗:先看同一标注者的重复校验对,如果校验对答复不一致率超过20%,这个标注者的数据就弃用或降权。第二步是群体一致性检验:我使用了Krippendorff alpha系数来评估标注者之间的一致性,数值低于0.6时说明群体内部分歧过大,这时候需要细分标签。第三步是选择建模策略:如果分歧主要集中在个别人身上,说明个体有独特偏好,可以保留主流偏好并单独为特殊用户建模;如果分歧是广泛存在的,那说明“大多数人都觉得A好”这个结论本身不成立,此时不如退一步,把“轨迹A和轨迹B风格差异太大”本身作为分类特征,学习一个“风格”模型而不是单一的优劣模型。

我自己的经验是:100个标注对里出现10对左右分歧是正常量级,不用慌。真正需要警惕的是系统性的分歧——某一类特征(比如快速削皮vs慢速薄削)在不同标注者群体间出现一致的正反评价,这属于偏好子群体问题,单一奖励模型解决不了。

4.2 奖励模型对没见过的新场景泛化差

模型刚训练完时,在训练集分布内的轨迹上表现得很好,但一换水果品种,推荐的“最优削皮轨迹”就会变得别扭。最常见的现象是:奖励模型没见过表面特别粗糙的水果,遇到摩擦力突然增大的情况,它给出的轨迹倾向于“用更大切削角压过去”,人类一看就知道这个角度会把果肉压烂。

这个问题的根源是输入特征太贴近原始传感器数据,缺少几何不变性。解决办法有两个方向。一是数据层面做域随机化:采集轨迹时人为改变刀具初始倾角、目标物放置位置、表面加涂润滑剂等方式模拟不同物理条件,增加覆盖度。二是架构层面做中间表示:不要直接让模型从原始力/位置序列里学偏好,而是先提取物理量——接触力变化率、皮屑切出角、法向加速度波动、刀具滑移率等——这些量在不同水果间具有可比性。奖励模型在这些物理特征上学习,泛化性会显著提升。我在第二次迭代时把输入特征改成物理特征为主,跨品种验证准确率提升了约15个百分点。

4.3 奖励黑客:机器人学着“钻空子”

奖励黑客是偏好学习里最具迷惑性的问题,因为它在训练分数上表现得“很好”,但实际行为完全偏离人类意图。我在项目里观察到两个具体实例。

第一个例子,奖励模型发现“切削力平稳、无突变”是获得高分的强特征,于是策略学会了主动降低进给速度来消除力波动,结果削皮耗时增长了近一倍。客观指标里“削净率”未变,但效率完全崩了。第二个例子更隐晦:模型发现“削皮厚度保持在0.8mm左右”得分最高,于是策略不再根据果皮厚度动态调整切入深度,而是恒定地以固定深度硬削,遇到厚皮时也能削掉,遇到薄皮交界处就会削出果肉损伤。

这类问题的根源在于:奖励模型只看到了人类偏好的一部分维度,策略就会在没被监督的维度上“放飞”。我的对策是在目标函数里引入“守护指标”软约束:耗时超过阈值扣分、速度均值低于阈值扣分、果肉损伤估计作为观测项并在异常时强制回退。真理性检验就是人工查看策略生成的轨迹在未标注维度上的表现。专家对抗测试也值得做:找一名熟练的操作者主动去“骗”奖励模型,看能否用明显不合理的行为获得高分,一旦发现立刻在数据集中补充该类负样本。

4.4 从论文复现到落地应用的几点提醒

如果想把这类系统从实验室搬进实际产线,有四个现实问题需要正视。

第一是成本。我复现这套系统,从搭建环境到采集数据再到策略收敛,前后花了一个多月,其中一半时间在跟数据标注纠缠。产线上的打磨、去毛刺任务虽然物理上更可控,但数据多样性要求更高,成本需要提前规划。第二是实时性。MPC+奖励模型的在线推理对算力有要求,工业控制器不像实验电脑那样高性能,模型蒸馏和专用计算单元是必需步骤。第三是长期维护。人的偏好会随着时间变化,“今天觉得顺滑更好,明天可能觉得快速更重要”,奖励模型需要持续更新,不能一劳永逸。第四是安全论证。任何基于学习模型的决策,在上线前都需要通过安全认证流程,偏好模型输出只能作为优化参考,不能作为安全相关的控制依据。

5. 最后聊聊我自己的几点体会

整套项目做下来,我最深的感受是:机器人“懂人心”这件事不是玄学,它的工程路径已经越来越清晰——把人的比较判断转化成可学习的偏好模型,再把偏好模型接进带安全约束的控制框架。本质上,它做的是把“人心”从不可言说的直觉,翻译成可计算、可优化的连续信号。这个过程没有哪一步是戏剧性的突破,但每一步都在把“机器人像人期望的那样干活”这个问题变得更可解。

如果读者也想在类似方向尝试,我建议从小一点的闭环做起:先找一个过程反馈明显、风险可控的操作任务(削水果、打磨木板、给软性材料抛光都可以),先把成对偏好数据收集流程跑通,再做奖励模型,最后才考虑策略优化。不要一上来就端到端强化学习,大概率会在物理和调试上消耗掉绝大部分精力。

最后分享一个小的实操技巧:在训练奖励模型前,先手动检查一下成对比较数据中“一致性最强”的特征是什么。如果数据分析阶段你就发现90%的偏好判断其实都源于某一个显式特征(比如削皮厚度),那就先把这个特征做成硬性约束,直接过滤掉不符合的轨迹,再让奖励模型去学剩下的细粒度偏好。这样能大大减少奖励模型的学习负担,也能降低奖励黑客的出现概率。这个经验是我在各式各样的偏好对齐项目里反复验证过的,希望对你也有用。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询