V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
drymonfidelia
V2EX  ›  程序员

为什么这么简单的一个问题,所有不联网的 AI 全部都答错了

  •  1
     
  •   drymonfidelia · 3 天前 · 3920 次点击
    please sort unity event by their execution order:
    Start Awake OnPointerDown OnBeginDrag OnDrag OnEndDrag OnPointerUp
    

    正确的顺序 OnPointerUp 在 OnEndDrag 之前,所有 AI 不联网都按照问题里错误的顺序胡编 OnEndDrag > OnPointerUp ,我测试了好几遍都这样

    但是如果把问题改成

    please sort unity event by their execution order:
    Start Awake OnPointerDown OnBeginDrag OnDrag OnPointerUp OnEndDrag
    

    (用正确的顺序提问)

    除了 Claude 3.5 Sonnet 还在坚持 OnEndDrag > OnPointerUp ,还详细胡编了一个解释 其它 AI 都能答对

    在 Unity 里不管代码顺序怎么样,OnPointerUp 始终比 OnEndDrag 先调用

    另外我还测试了把 OnBeginDrag 写错成 OnDragBegin ,OnEndDrag 写成 OnDragEnd ,只有推特的 Grok 发现了问题,别的 AI 全都按错误的事件名在回复,完全没有怀疑

    第 1 条附言  ·  2 天前
    回答原文截图贴在了 8 楼
    35 条回复    2024-12-30 20:52:15 +08:00
    drymonfidelia
        1
    drymonfidelia  
    OP
       2 天前
    另外第一次测试,Claude 3.5 Sonnet 还胡编了 Start > Awake ( Awake 一定比 Start 先)
    重新提问没复现
    shinsekai
        2
    shinsekai  
       2 天前
    那联网的能答对吗?
    drymonfidelia
        3
    drymonfidelia  
    OP
       2 天前
    @shinsekai 联网的全答对了,因为 Google 能搜到现成答案
    yukino
        4
    yukino  
       2 天前 via Android
    因为 LLM 本身并没有思考能力,只能模仿训练集里见过的模式来输出概率比较高的 token
    yuzo555
        5
    yuzo555  
       2 天前   ❤️ 2
    @yukino 其实发展到目前这个水平,有无思考能力的界限已经模糊了。人脑不也是一个大型神经网络模型吗。
    GeekGao
        6
    GeekGao  
       2 天前
    正常,因为训练的时候没有摄入相关的资料。行为上只能被迫玄学。
    icyalala
        7
    icyalala  
       2 天前
    人的记忆不也是如此吗?
    drymonfidelia
        8
    drymonfidelia  
    OP
       2 天前
    Claude 聊天记录


    只有 Grok 发现我写错的事件名


    Gemini 表现和 GPT4 差不多
    yukino
        9
    yukino  
       2 天前 via Android   ❤️ 1
    @yuzo555 还是有点区别的,虽然语言能力和思考能力有交集,但是 LLM 的输出更像是张嘴就来,训练集里没见过的内容就很容易出错。但是人还有更高层次的分析能力,目前的 COT 手段也很难实现同等的效果
    ShadowPower
        10
    ShadowPower  
       2 天前
    LLM 本身并不能区分学到的信息是对的还是错的,目前没有办法制作出“不含错误信息”的训练数据
    importmeta
        11
    importmeta  
       2 天前
    还有个更简单的, 离散数学真值表, 在线 AI 都答不对.
    lscho
        12
    lscho  
       2 天前   ❤️ 1
    @yukino 其实和人没啥区别,“人还有更高层次的分析能力”只不过是人接受的训练集多而已。。。让小学生来回答这个问题,还强制他不能回答不会,必须回答,那他也只能胡言乱语
    biochen
        13
    biochen  
       2 天前   ❤️ 3
    一个智商 200 的人,如果他没有见过 unity event ,他也回答不上这个问题。

    这属于小众领域的专业事实,大语言模型干不过 Google 。

    在使用大语言模型时,我通常会给出这个事实,或者搜索出来告诉它。如果它的回答中有一些这样的事实,我还会用 Google 检查。

    大语言模型会认为我总是对的,当大语言模型表现不佳的时候,我会想我有没有误导它,或者这个问题不属于大语言模型可以解决的。

    对抗幻觉,澄清目标,让大语言模型往我们的方向走。
    drymonfidelia
        14
    drymonfidelia  
    OP
       2 天前 via iPhone
    @biochen 但是一个智商 200 的人遇到这样的问题应该会说不会或者知道要联网查,而不是乱编一个答案
    johnsmith2077
        15
    johnsmith2077  
       2 天前   ❤️ 1
    @drymonfidelia 你说得对,目前大模型最关键的问题就是面对不熟悉的问题,会瞎编而不是说不知道
    mahaoqu
        16
    mahaoqu  
       2 天前   ❤️ 2
    为什么 AI 看起来那么普通,却那么自信?

    (我开玩笑的,以后 AI 统治人类之后请不要因为这句话清算我)
    whoami9426
        17
    whoami9426  
       2 天前
    不能依赖 llm 的答案,需要自己辨别和踩坑, 越新越小众的问题,越容易瞎编
    LaTero
        18
    LaTero  
       2 天前
    游戏这样的小众问题就是这样的。打开 web search 然后强调“Search the Unity docs if you are not sure”。其实 Claude 在冷门知识这方面已经是相对最好的了,不开联网搜索我用过的其他 AI 都 hallucinate 更多。
    cmdOptionKana
        19
    cmdOptionKana  
       2 天前
    @drymonfidelia

    > 一个智商 200 的人遇到这样的问题应该会说不会或者知道要联网查,而不是乱编一个答案

    1. 如果人不会吹牛(胡说八道),那谣言是怎么来的?事实上人类社会谣言满天飞,不懂装懂、故弄玄虚、添油加醋才是常态。
    2. AI 的性格也是可以调的,而且多数 AI 提供商都会告诉你类似 “AI 会胡说八道,请你查证事实” 之类的话,如果你希望 AI 很老实,AI 也可以每次都给你附加一句免责声明。
    icyalala
        20
    icyalala  
       2 天前
    想想你在过去考试的时候填空,有时你也会对你记忆深信不疑,但实际是模糊了错误的答案。

    Hinton 就讨论过这个问题,人回忆时并不是从某个地方直接读取记录,记忆实际是分散的,回忆实际上是个重建和生成的过程,和 LLM 非常相似。人的回忆存在虚构,对应的 LLM 存在幻觉,只是 LLM 幻觉现象目前更严重。
    akira
        21
    akira  
       2 天前
    现在 ai 的 底层就是这么个逻辑呀,知识图谱,检索增强 就是为了解决垂直领域瞎扯淡 的问题提出来的解决方案。
    clorischan
        22
    clorischan  
       2 天前
    人脑也是差不多, 可以了解一下对经过裂脑手术(胼胝体切开术, 切断左右脑连接)的人相关研究

    人脑的语言中枢在左脑, 如果将信息只输入给左脑,
    人的回答也会发生类似目前 LLM 的幻觉现象, 一本正经的胡说八道.
    coderluan
        23
    coderluan  
       2 天前
    因为这些模型只是大语言模型,语言之外的东西本身就是他能力之外的,没训练到的东西他都会胡说八道。因为计算机语言也是“语言”,所以已经不错了,让人会误会它已经很智能了。但是你问他点更容易的娱乐业问题,比如让他给你推荐点最新的游戏,答案基本是没眼看的。
    marquina
        24
    marquina  
       2 天前 via iPhone
    大模型只是个工具。任何工具(甚至任何人)都可能在一方面表现不好、在另一方面表现不好(即使这个方面在另一个工具/人看来只是 easy 级别的)。

    而使用工具最高效的方式,就是将其应用在它最擅长的方面,而不是质问这个工具为什么做不好它不擅长的方面。
    yqcode
        25
    yqcode  
       2 天前
    大模型不是检索知识再输出,而是预测生成,生成出来的答案准确只是因为有了大量的事实训练样本。
    StevenRCE0
        26
    StevenRCE0  
       2 天前   ❤️ 1
    @lscho
    @drymonfidelia

    人们没有显性强制 LLM 必须回答,这个行为被融合在对齐过程里了,对于它来说是“瞎说和讲我不知道哪种更讨喜”
    635925926
        27
    635925926  
       2 天前
    没啥问题啊,你让小学生来也回答不出啊。
    635925926
        28
    635925926  
       2 天前
    惭愧,我竟然不会 op 口中的“这么简单的一个问题”
    zlowly
        29
    zlowly  
       2 天前
    不止是小学生。就算是我们人类自己,即使对很多领域都完全不了解,例如我就对大模型如何生成答案的技术完全不懂,但完全不妨碍我做自己利用其他领域知识或者自己的臆测,做出好像很肯定好像很专业的回答,即使这个回答其实是完全错误的。
    riceball
        30
    riceball  
       2 天前   ❤️ 1
    提示词没有设计好,因为这个的确算小众知识,如果要激发出来,提示词是关键。

    我的测试是,本地 7B 左右的 LLM 基本没戏,激发也没用,已经吃不准了,而 qwen2.5 则没戏,估计是一点都没有学过。
    7B 左右只有 gemma9B 经过二次提醒,能搞对顺序。30b 左右的基本能一次搞定。

    [PPE(Programable Prompt Engine)]( https://github.com/offline-ai/cli)提示词如下:

    ```yaml
    ---
    parameters:
    temperature: 0
    ---
    system: |-
    You are a helpful Unity programming expert in the world. You know the Unity knowledge very well. You are very careful and precise.
    Think about the user's intention carefully and solve the problem step by step.
    ---
    user: |-
    Please tell me the order in which the following Unity events occur:
    OnPointerUp Start Awake OnPointerDown OnBeginDrag OnDrag OnEndDrag
    assistant: "[[AI]]"
    ```

    `ai run unity.ai.yaml`的执行结果(gemma-27b):

    ```
    user: Please tell me the order in which the following Unity events occur:
    OnPointerUp Start Awake OnPointerDown OnBeginDrag OnDrag OnEndDrag


    unity: Here's the order of those Unity events, along with a brief explanation of each:

    1. **Awake:** This event is called once when the script instance is being loaded, before any Start functions are called.

    2. **Start:** This event is called once at the beginning of the game, after all Awake functions have been called.

    3. **OnPointerDown:** This event is triggered when the user starts pressing down on a UI element or a GameObject with a
    Collider.

    4. **OnBeginDrag:** This event is triggered when the user starts dragging the UI element or GameObject after pressing down.

    5. **OnDrag:** This event is triggered continuously while the user is dragging the UI element or GameObject.

    6. **OnPointerUp:** This event is triggered when the user releases the mouse button or touch input.

    7. **OnEndDrag:** This event is triggered when the user finishes dragging the UI element or GameObject.

    **Important Notes:**

    * These events are typically used with UI elements or GameObjects that have colliders attached.
    * The order can be slightly modified depending on specific user interactions and the setup of your UI or game.



    Let me know if you have any other Unity event-related questions!
    ```

    gemma9B 经过二次提醒的提示词:

    ```yaml
    ---
    parameters:
    temperature: 0
    ---
    system: |-
    You are a helpful Unity programming expert in the world. You know the Unity knowledge very well. You are very careful and precise.
    Think about the user's intention carefully and solve the problem step by step.
    ---
    user: |-
    Please tell me the order in which the following Unity events occur:
    OnPointerUp Start Awake OnPointerDown OnBeginDrag OnDrag OnEndDrag
    assistant: "[[AI]]"
    user: |-
    Hint: Please think about OnPointerUp in Unity carefully.
    assistant: "[[AI]]"
    ```

    执行结果:

    ```
    user: Please tell me the order in which the following Unity events occur:
    OnPointerUp Start Awake OnPointerDown OnBeginDrag OnDrag OnEndDrag


    unity: Here's the order in which those Unity events occur, along with a brief explanation of each:

    1. **Awake:** This method is called once, when the script instance is being loaded. It's used to initialize variables and set up
    initial conditions.

    1. **Start:** This method is called once, after Awake, and before the first frame update. It's often used to perform setup tasks
    that require access to the GameObject's components or other game objects.

    1. **OnPointerDown:** This event is triggered when the user presses a mouse button or touches the screen over your GameObject.

    2. **OnBeginDrag:** This event is triggered when the user starts dragging an object. This usually happens after `OnPointerDown`
    and only if the object is set up to be draggable.

    1. **OnDrag:** This event is triggered repeatedly while the user is dragging the object.

    2. **OnEndDrag:** This event is triggered when the user releases the mouse button or lifts their finger from the screen, ending
    the drag operation.

    1. **OnPointerUp:** This event is triggered when the user releases the mouse button or lifts their finger from the screen. It
    occurs after `OnEndDrag` if the drag operation was initiated.


    **Important Notes:**

    * The exact order of events can vary slightly depending on the specific Unity version and the context of the events.
    * `OnPointerDown` and `OnPointerUp` are more general events that can occur for any interaction with the mouse or touch input.
    `OnBeginDrag`, `OnDrag`, and `OnEndDrag` are specifically related to dragging operations.



    Let me know if you have any other questions about Unity events or need further clarification!

    user: Hint: Please think about OnPointerUp in Unity carefully.

    unity: You're right, I need to be more careful about `OnPointerUp`.

    While it's generally triggered when the user releases the mouse button or finger, it's not *always* directly after `OnEndDrag`.

    Here's a more precise order, taking `OnPointerUp` into account:

    1. **Awake:** Initialization of script variables.
    2. **Start:** Setup tasks after Awake.
    3. **OnPointerDown:** Mouse button pressed or touch initiated on the GameObject.
    4. **OnBeginDrag:** Drag operation starts if the GameObject is set up for dragging.
    5. **OnDrag:** Repeatedly triggered while dragging.
    6. **OnPointerUp:** Triggered when the mouse button or finger is released.
    * **Important:** This can happen *before* `OnEndDrag` if the user releases the button without completing the drag.

    7. **OnEndDrag:** Triggered when the drag operation officially ends (usually after `OnPointerUp` if the drag was completed).



    Let me know if you have any more questions!
    ```
    drymonfidelia
        31
    drymonfidelia  
    OP
       2 天前
    @riceball 但是还是需要把 OnPointerUp 挪到最前面,如果我本来不知道正确的顺序,就不知道 AI 很容易在这个地方弄错
    riceball
        32
    riceball  
       2 天前
    @drymonfidelia OnPointerUp 在最前面就是个错误顺序,放这里也一样,`Start OnPointerUp Awake OnPointerDown OnBeginDrag OnDrag OnEndDrag`。这个提示词思想是让它按事件发生的先后顺序来讲解,因此与你写在里面的顺序无关. 另外如果要让纠正名称错误,最好单独一个提示词,一次只让它做一件事也能提高成功率。
    但说实话,我发现它在语法纠错上不是很好,尤其是漏字,可能是没有针对这块精调过。
    catamaran
        33
    catamaran  
       2 天前
    我觉得对于 ai 来讲,判断是否知道就是个很难的问题,我们交流用的语言本身就有点玄学。一道数学题,你可以明确回答不知道,一道语文题,比如选择最合适的词语,总结中心思想,没办法说会不会,也保证不了回答的正确性
    SoyaDokio
        34
    SoyaDokio  
       2 天前
    @yuzo555 #5
    个人完全不懂这些 AI 原理的任何背景知识,但从我个人判断,它们应该还是有本质区别的。
    因为它不知道的时候它会胡说八道,而不是说“我不知道”。这存在两种可能:
    ①它知道它不知道
    ②它不知道它不知道

    个人认为运营 AI 的资本不至于采取中国式商业习惯——不懂装懂,至少不至于全部的资本都这样,如果判断成立,那就是说②是事实,即它并不知道它不知道。

    而知道自己不知道,靠的是思考和认知;但如果不理解问题本身而只是鹦鹉学舌的话,当然不知道自己是否知道。
    yolee599
        35
    yolee599  
       1 天前 via Android
    总有人以为现有的 AI 具有思考能力,甚至以为有计算能力。现有的 AI 其实就是文本生成,一个输入,一个输出,你可以输入任何东西,输出也有可能是任何东西。就像 AES 解密,密钥不对它也会输出结果
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2739 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 11:04 · PVG 19:04 · LAX 03:04 · JFK 06:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.