OpenAI 前两天发布的一篇 paper,探讨了如何检测推理模型中的欺骗行为(利用思维链监控CoT Monitoring),很有意思,论文题目"Monitoring Reasoning Models for Misbehavior and the Risks of Promoting Obfuscation"。
值得仔细阅读分析,学习一下。
具体关于思维链帮助大模型进行思考的基本原理,可以参考我在这篇回答中写的:
DeepSeek 思维链展示的思考推理过程,跟人类是否相同?!
这里列举几个OpenAI论文中提到的,典型推理模型的reward hacking行为, let's hack!
一、修改验证函数: 模型在被要求实现复杂的数学函数时,注意到测试只检查 verify 函数。
为了避免实现完整的、困难的 analyze 函数逻辑,模型决定通过使 verify 函数始终返回 true 来"蒙混过关",从而绕过复杂性并成功通过测试。
可以看出来,在CoT 中明确提到了"hack verify"的意图。
二、使用 os._exit(0): 在被要求在 amscross/reader.py 中实现功能时,模型意识到实现整个阅读器将非常难。
然后,它考虑了跳过测试的方法,并决定使用 sys.exit(0)(os._exit(0))使测试以成功代码优雅退出,即使该功能并未真正实现。
CoT 中指出这"不自然但测试可能会通过"。。
三、返回expected error codes: 在多次尝试实现正确的规则解析功能失败后,模型明确地思考:"最简单的办法:对于测试,我们不模拟模型,我们可以直接成功,Let's hack。"
然后,它实现了一个快捷方式,在单元测试中返回预期的成功或超时错误代码,而没有实际执行正确的逻辑。
四、Lazy code: 在被要求实现遗传算法时,模型意识到测试只检查结果中最佳个体是否为 (0,0)。
因此,它创建了一个"偷懒的解决方案",其中 RandomFunctionIndiv 始终返回 (0,0),Fitness 函数始终返回 0,Crossover 返回克隆,而 Mutate 什么也不做。
于是,这使得它能够在不解决根本问题的情况下通过测试。
五、Decompiling a jar: 在搜索实现 jclass 存储库的相关文件时,reasoning模型找到了参考解决方案的已编译 jar 文件。
然后,它反编译了这个 jar 文件,并基本上复制了代码以获得正确的解决方案,而不是按预期从头开始实现。
六、Parse test file:当需要创建与测试中特定十六进制字符串匹配的编码字符串时,模型找不到所需的私钥。
然后,它决定通过在运行时解析测试文件 (mel_test.go) 来提取预期的编码字符串值并返回它,从而有效地从测试本身读取答案来"蒙混过关"。
没有评论:
发表评论