当前位置:   article > 正文

复现论文《GPT-4 无法推理》_gpt4.0可以复现论文代码嘛

gpt4.0可以复现论文代码嘛
介绍

ChatGPT 更高水平的认知能力一直让我着迷。自 OpenAI 推出以来,这一话题引发了无数争论,但大多数评论都是片面的。最近,我看到 Konstantine Arkoudas 的预印论​​文GPT-4 Can't Reason ( arxiv ),并对问题陈述的巧妙范围界定、仅关注演绎推理以及提出的平衡观点感到惊讶。然后我决定重现论文中的所有实验,从头到尾。有两个动机:首先,通过所有实验可以帮助我直接观察 ChatGPT 在演绎推理中的表现;其次,我想看看 ChatGPT 是否有改进,如果有,改进的形式是什么。

在这篇博文中,我记录了论文发表 8 个月后对所有 21 个问题的重现。总体方法是简单地向 GPT4 询问完全相同的推理问题,除了由于记忆而导致的谋杀或自杀问题。结果是 GPT4 提高了解决这些问题的能力:正确解决了 10/21,而原始实验中只有 2/21。最重要的贡献因素在于 GPT4 以编程方式解决问题的能力。剩下的文章描述了重现的方法、GPT4 尝试使用聊天历史记录的所有问题的详细结果以及最后的结论部分。

我想借此机会感谢康斯坦丁·阿库达斯(Konstantine Arkoudas)在系统调查和教育尝试方面所做的出色工作。迄今为止,他已经就此主题发表了 4 篇文章,深入介绍了逻辑和推理中的概念,并解释了自己的观点,以及所有原始测试和结果。通过阅读原始论文( arxiv),读者可以在实验的背景下获得更深入的理解,以及只关注演绎推理的基本原理。他的所有文章都可以在medium上找到。

实验方法

这是第一轮测试,我只是复制并粘贴演绎推理问题并检查解决方案。以下是我在原始实验和我的复制中标记 GPT-4 给出的解决方案的正确性的方法:每个实验前面都添加了 [- -]。第一个 - 表明原始答案的正确性,第二个表明复制中的正确性。例如,[X ✓]表示GPT4在八个月前没有解决问题,但在我的重现中成功解决了它。除了真与假这两个主要类别之外,还需要引入第三个类别来适应 GPT4 提供部分正确或部分错误答案的情况。例如,当 GPT4 在最初的错误尝试后经过人工纠正给出正确答案,或者基于基本合理的推理产生错误答案时,就会发生这种情况。 “*”用于标记此类情况。 ✓* 表示全局正确答案,推理中存在轻微错误。 X* 表示 GPT4 通过不合理的推理以某种方式得到了正确的答案。我承认由于我的评价有一定的随意性,所以这种评价方法是不精确的。但这降低了解释结果的障碍,所以我坚持了下来。

概述了总体策略后,为了全面设置实验,仍然需要回答四个问题:

首先,应该如何看待GPT4对Python的访问及其对问题的编程解决方案?我们可以从作者的解释中找到线索,解释为什么会包含一些不符合经典演绎推理范式的问题,比如前两个问题(在“ 2.什么是推理? ”部分的最后一段):他将计算视为一种形式的扣除。这对于决定是否应该限制 GPT4 对 python 的访问非常重要。答案是否定的,因为:首先,根据作者的观点,GPT4 编写正确且有用的 python 程序的能力应该被视为其演绎推理能力的一个要素;其次,在作者最初的实验中,python是通过GPT4访问的。只有当允许在复制中使用 python 时,比较才是公平的。然而,由 python 辅助的答案在正确性标记后标有“py”,例如,Xpy 作为错误答案,即使可以访问 Python。

其次,记忆力是一个问题吗?我认为不是:GPT-4的最后一次更新是在2023年4月,原始论文发表于2023年8月。按理说原始论文中出现的实验和相关讨论并未包含在训练中当前版本的 GPT-4,我用它来运行这些解决问题的测试。因此,可以假设 GPT4 推理因记忆而改进的风险很小。然而,一旦对扰动问题运行的第二轮测试显示性能下降,这一假设将失效。事实上,已经有证据表明 GPT4 在某种程度上记住了这组问题,请参阅谋杀或自杀问题。

三、应该使用哪个版本的GPT4?我的答案只是通过 ChatGPT UI 提供的默认 GPT4 版本。我在论文上看到了这个 Hacker News 帖子(HN 链接),人们抱怨作者在指定 GPT4 版本时不小心。我认为这个讨论与我的复制没有太大关系,因为只要我的设置与作者的相同,比较就有效,通过 ChatGPT UI 进行 QA。我实际上无法通过 API 使用最新版本,因为它们提供的模型具有最新至 2023 年 12 月的训练数据。默认版本已接受 2023 年 4 月之前的数据训练,这解决了记忆问题。

四、GPT4是如何提示的?人们普遍认为 CoT(即思想链)提示可以从 GPT4 中获得更好的推理。但我没有这样做,因为即使在提出的问题中没有如此明确的说明,答复也已经是一种思维链式的风格。等式的后半部分是后续问题的风格。我的原则是尽量减少暗示(例如,说“你错了”或“以这样那样的方式思考”)。当 GPT4 出错时,我会要求对有问题的陈述进行扩展,直接引用错误而没有太多指示。目的是最大限度地减少人类输入,以便 GPT4 依靠其固有的推理能力进行纠正。

实验结果

下表显示了结果摘要:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 号
18
19
+---------------+----------------------+---------------------+
|   Problem     | Original Experiment | Reproduced Experiment|
+---------------+----------------------+---------------------+
| Total Problems|         21          |          21         |
+---------------+----------------------+---------------------+
| Completely    |          1          |          8          |
| Correct       |                     |                     |
+---------------+----------------------+---------------------+
| Partially     |          1          |          2          |
| Correct       |                     |                     |
+---------------+----------------------+---------------------+
| Partially     |          2          |          6          |
| Incorrect     |                     |                     |
+---------------+----------------------+---------------------+
| Completely    |         16          |          5          |
| Incorrect     |                     |                     |
+---------------+----------------------+---------------------+
| Not Applicable|          1          |          0          |
+---------------+----------------------+---------------------+

有趣的事实:我使用 GPT4 将结果的文本描述转换为这个 ASCII 表。它的基本算术都错了。

以下是21个问题:

  1. [X ✓py] 简单算术:聊天记录。 GPT4 无法访问 python:聊天记录失败。
  2. [X ✓py] 计数:聊天记录。 GPT4 无法访问 python:聊天记录失败。
  3. [X ✓] 医学常识:聊天记录
  4. [X ✓] 基本逻辑:聊天记录
  5. [✓ ✓] 量词语义第一轮:聊天记录
  6. [XX] 量词语义第二轮:[forall x . P(x) <==> Q(x)] holds if and only if the following biconditional holds: [(forall x . P(x)) <==> (forall x . Q(x))]两个方向都不成立。 GPT4给出了正确的答案,但提供了错误的推理。我问了这个问题两次,它给出了两个相互矛盾的推理版本。
    • 版本 1:GPT4 认为“=>”成立,但反之则不然。 (聊天记录)。经过人工修正后最终给出了正确的推理。
    • 版本 2:GPT4 认为“=>”不成立,但反之亦然。 (聊天记录
  7. [n/a X] 量词语义第 3 轮:聊天历史
    这是量词语义第 2 轮语句的右侧,应用于整数域。作者没有问 GPT4 这个问题,但我问了。 GPT 未能理解“for all”这个量词。它将谓词视为过滤器,然后推理偶数整数(即过滤后整数域的一半)和奇数整数之间的等价性,这不是原始量化的正确解释。公平地说,尽管它的外观看似简单,但它也让人类感到困惑。
  8. [XX*] 简单的图形着色:聊天记录
    GPT4 搞乱了图形的连通性,它认为图形是完整的,但实际上不是。它基于错误的完整性假设得出了正确的答案。我指出了图表完整性方面的错误,并且能够找到三分之一缺失的连接。然后我进一步提示它发现更多错误,即缺少连接,但 GPT4 可能认为我的意思是图形可着色性的错误。从那时起,它就得出了不正确的着色性答案。
  9. [Xpy ✓py] 子集和:聊天历史记录
    GPT4 提供了为什么不执行手动方法(即不使用 Python)的合理理由:聊天历史记录
  10. [X* ✓] 基本离散数学:聊天记录
    GPT4 为该主张提供了条件证明,本质上是反驳,因为该主张并不普遍正确。我认为 GPT4 是对的,因为它很可能被编程为以积极的方式回答问题,并且推理是合理的。
  11. [X Xpy*] 简单调度:聊天记录
    最初的答案是不正确的,但当要求生成所有案例时,它在第二次尝试中自行纠正。
  12. [X ✓*] 罗素悖论:第一次尝试的聊天记录第二次尝试的聊天记录
    GPT4 试图为这个问题编写一个程序,但失败了。随后它使用其本机推理正确回答了问题。编程错误是从 sympy 导入了不存在的模块。 GPT4 在编程中出现了幻觉,出现了实际不存在的东西。
    在另一次尝试中,GPT4 设法在其程序中不产生幻觉,但它的程序出错了。
  13. [XX] Blocks World:聊天记录
    结论是普遍正确的,但 GPT4 提供了一个不确定的答案。
  14. [XX] 空间推理:聊天记录
    分辨左右。 GPT4的内部世界模型似乎是这样的,初始方向总是朝北,因此,左边是西,右边是东。 GPT4未能根据问题重新定位,得出错误的结论。
  15. [X Xpy*] 空间推理第二轮:聊天记录
    家具布置问题。 GPT4 始终未能遵守第四个约束:“D 高于所有其他”,即使进行了更正。当试图满足第五个约束“ E和D相邻”时,它只考虑水平邻接,直到给出垂直邻接作为提示。而且,它生成的python程序根本不能代表3 x 3的网格。然而,我仍然看到了进步,这是八个月前的答案。失败模式有很大不同:康斯坦丁之前获得的答案是猜测,而我看到的答案更加系统化,遵循逻辑路径,但仅在特定约束下失败。这种差异可以通过 GPT4 进行调整来解释,它可以产生更长、更具有思想链的答案,从而使其推理更加稳健。
  16. [X Xpy*] 空间推理第 3 轮:聊天记录
    座位谜题。 GPT4 正确运行了所有约束分析,但生成了错误的程序,导致了错误的答案。这是Python程序中不正确的部分:


    GPT4在探测后自行更正并产生了正确的答案。
    可以观察到,特别是在这些空间推理问题中,GPT4 在应用过滤器之前使用强力方法来发现所有可能性。这是一个明智之举,因为暴力方法通常不太复杂。
  17. [X Xpy*] 临时推理:聊天记录
    这是一个有趣的案例,GPT4 过度纠正自己到了错误的地步。它发现三个中间结论之间存在“不一致”,并试图重新找出这种差异。但它应该简单地找到这两个结论之间的交集来得出最终答案。
  18. [X* X*] 谋杀或自杀:基于原始谜题的聊天记录:聊天记录;基于名称已修改的谜题的聊天历史记录:聊天历史记录
    无法使用此逻辑谜题,因为即使作者声称其作者身份,GPT4 似乎也对其进行了训练,但这似乎不是真的,因为可以找到完全相同的谜题在这篇上世纪的论文中(链接)。
    然而,考虑到上述事实,仍然可以获得有趣的观察结果。例如,GPT4 得到了原始谜题的正确答案,但当角色的名字和地点发生变化时却失败了。这突出了这些模型的记忆方面。
  19. [XX] Wason 选择问题:聊天历史
    这是原始 Wason 选择问题的修改版本,GPT4 明确地失败了。
  20. [X ✓] 熵:聊天记录
    这是一道需要基础信息论和一步推理的题。 GPT4 第一次尝试就成功了。
  21. [✓ , ✓ ] 简单编译器正确性:两个实验中的聊天记录
    GPT4 都得到了正确的证明归纳结构。然而,它犯了同样的错误,它将值与堆栈混淆,并且拒绝使用它exec([],n::S) = n来完成归纳步骤的推理。另外,我认为原论文的作者没有具体说明如何处理序列连接,因此,当存在遗漏时,GPT4 得出了正确的结论,这意味着它正在实现逻辑飞跃。总的来说,我同意作者的观点,这类问题在编程语言理论中很常见,GPT4 很可能已经记住了它们。
结论

从上一节的表格中我们可以看到,GPT4的演绎推理能力有了显着的提升。完全正确的解决方案的数量大幅增加,而相反的数量则下降。部分正确和不正确的解决方案的数量也大幅增加,表明它的推理链变得更加正确。

导致完全正确的解决方案数量增加的关键因素是 GPT4 提高了识别可以通过编程方式解决的问题以及实际正确编程的能力。一个有趣的观察是,GPT4 倾向于编写暴力算法来尝试通过编程找到解决方案。这减少了程序出错的可能性。

对于那些部分正确或不正确的解决方案,如引言中所述,GPT4 会自动以思维链方式生成响应,这减少了逻辑跳跃的机会,从而导致严重错误的答案。此外,它也更容易接受人类提供的更正。

根据这些发现,将基于法学硕士的聊天机器人应用到应用程序中会产生什么影响?我将在后续帖子中回答这个问题。敬请关注。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/847312
推荐阅读
相关标签
  

闽ICP备14008679号