学习停滞的剖析
摘要
一位教授讲述了他与一名本科生的一次经历:该学生使用AI完成研究项目,但并未真正理解内容,这凸显了在没有深度知识的情况下依赖AI的风险。
<p><a href="https://lobste.rs/s/vtlqfy/anatomy_learning_stall">评论</a></p>
查看缓存全文
缓存时间: 2026/06/05 23:13
# 学习停滞的结构剖析 – Tagide
来源: https://tagide.com/blog/llm/the-anatomy-of-a-learning-stall/
最近,我与一名本科生的一次经历,让我对如何运用 AI 这件事陷入了深深的思考。我在 LinkedIn 上发过几个帖子,简短地提了提事情经过,但我想把这次经历详细地记录下来,因为细节能鲜明地揭示一种常见论调的机制和后果:在不远的将来,我们人类将无需了解自己构建的系统的内部原理;我们只需要明确自己想要什么,一旦需求说明没问题,AI 代理就会搞定一切,而且结果都将是正确的。
也许结果都会是正确的。但也可能是错的。正确并不等同于“做对了事”。这个区别对于区分幻觉和现实至关重要。
## 独立项目,第一周
这一切始于四月初,一名本科生,我们叫他乔,来找我谈独立学习——这是学生可以选修获得学分的研究项目课程,通常由考虑读研或只是对研究感到好奇的学生完成。乔是一名大三学生,他告诉我他想申请博士项目。于是在学期第一周,我们聊了聊他的兴趣和我目前的兴趣,并聚焦到了一个他可能做的项目上。以下是那次谈话的摘要。
最近,我主要对使用大语言模型/代理/神经网络来自动验证软件制品的方法感兴趣(我们在2023/2024年发表了第一篇相关论文)。乔告诉我他对模型本身感兴趣,并且想体验一下微调模型的过程。所以我建议了一个基于自动验证协议规范这个想法的项目。我选择了一个特定的协议——MTQQ (https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html)——让他做一个实验,开发一个能够潜在地自动验证该协议的 AI 代理。我还向他提到了这个总体想法的两条可能路径:(1)我们可以让 AI 代理验证协议规范本身的一致性,检查各条款之间是否存在不一致;(2)我们可以找出现有的 MTQQ 具体实现,验证它们是否符合协议规范。
会议在相互理解的良好氛围中结束,乔的下一个目标是决定解决这两个问题中的哪一个,然后从那里开始。在我看来,这个项目在一个学期内完成是相当可行的,尤其是在使用 Claude/Gemini 等工具的情况下。
## 第八周
我与学生合作的方式是每周进行一次一对一会议,如果学生进展迅速需要我引导,可能会增加额外会议。我不会强制要求这些,因为我与足够多的学生合作过,知道每个学生都不同,需要的指导量也不同;也因为我把这些学生视为年轻的同行,而不是雇员。乔从未出现在每周例会上——这没关系。
他在第八周出现了,并且完整地执行了这个项目。他很兴奋地向我展示。他告诉我,他开发了一个确实能够验证 MTQQ 正确性的代理,并且这个代理是基于对 Qwen 的微调。扫一眼他的 Visual Studio 界面,看起来相当令人印象深刻且做得不错:文件夹结构合理,文件名有含义,一个数据文件夹里显然包含了用于微调的训练数据,大量引用 MTQQ 等等。看起来合理且令人印象深刻!在这两分钟的口头项目摘要之后,他问我们是否可以就此写一篇论文并提交给会议。我也很兴奋,于是请他详细解释他到底做了什么。
**乔(短暂停顿)**:我构建了一个验证 MTQQ 协议的代理。
**我**:好的,但你解决的是哪个问题?是规范一致性问题还是实现正确性问题?
**乔(犹豫)**:呃... 我想... 是规范正确性?
**我(看着他的训练数据,里面有很多 Python 代码)**:真的吗?你确定?
**乔(更加犹豫,但试图显得自信)**:呃,是的,规范正确性。
**我(指着训练数据)**:那这些训练数据是关于什么的?这些看起来像 MTQQ 实现的 Python 函数是干什么的?
**乔(现在明显紧张)**:抱歉,我指的是我做了实现正确性验证。我验证了一个给定的 Python 实现是正确的。
**我(现在有点担心)**:好的。那你是怎么做的?
**乔(一脸茫然的困惑)**:我构建了一个代理。
**我(更加担心)**:那么这个代理是如何验证实现是正确的呢?
**乔(非常紧张)**:呃...
**我(插话帮他)**:好吧,让我仔细看看你的代码。
我看了代码大约一分钟,然后带着敬畏和惊恐意识到到底发生了什么。两件事:
1. 乔只是把我们第一周会议时的一些谈话内容输入到了 Claude Code 里,然后让 Claude 完成了整个项目。他完全不知道这个机器人为了在 Qwen 之上开发这个协议验证代理做了什么,除了一个模糊的概念“涉及了微调”——这是乔从第一天起就觉得重要的东西。
2. Claude 尽力遵从了乔的要求,但这个实验是无效的:Claude 生成了训练数据和测试数据,没有外部的 MTQQ 实现,也没有基线(例如未经微调的 Qwen)。这个 Qwen 代理是根据 Claude 生成的正确/不正确函数的训练数据,来判断 Claude 写的函数是正确的/不正确的,并且没有任何基线可以控制 Qwen 本身对 MTQQ 已经了解多少。
我往后一靠,叹了口气。我犹豫了:我是否要向乔解释这个实验无效,如何无效以及为何无效,还是引导他自己得出这个结论?毕竟才第八周,学期还剩两周,所以我决定再给他一次机会。我告诉他我发现这里有问题,但如果我直接把问题告诉他,他这门课就会不及格。我给了他选择,让他去研究 Claude 到底做了什么,直到他能告诉我问题出在哪里为止。
## 第九周
一周后乔回来了。这次他能自信地回答,代理是在验证 MTQQ 的一个实现,而不是验证协议本身的一致性。他还能告诉我,训练和测试程序被解析成了 AST(一个对他来说是新的且重要的术语,重要到他在这次会议中重复了大概十次),然后代理会给它们打分。他写了笔记,并且看着笔记向我解释。
我困惑了。程序在什么时候被解析,目的是什么?这个分数又意味着什么?我请他在白板上画点什么来解释步骤顺序。他画了一个框,在里面写了“相关代码”几个字。他解释说代理获取相关代码,然后进行评分。我问:给什么评分?怎么评?……(一片空白)
这样持续了15分钟后,我停了下来。很明显,乔把我在第八周问他的问题,可能再加上一些澄清性问题,拿去问了 Claude,然后把 Claude 的回答记在了笔记本上。他仍然完全不知道 Claude 做了什么,更重要的是,他仍然不知道实验有效性是什么——这甚至不在他目前能理解的范围内。
还剩一周,所以我给了他第三次机会。
## 第十周
他又来了。显然他花了更多时间去探索和研究 Claude 做了什么。他冲到白板前,画了一个方框和箭头的图,至少试图解释当一个用于测试的 Python 函数进来进行验证时会发生什么。它被解析。标识符和文档字符串被用来检索最相似的协议规范条款。然后一个验证组件(这就是微调后的 Qwen)启动,判断它是否合规,并返回一个置信度分数,一个介于 0 和 1 之间的数字。
**我**:这个置信度分数是什么?它是如何计算的?
**乔(一片空白)**
**我**:好吧,我们往回退一点。用于 Qwen 的提示是什么?
**乔(紧张)**:提示?呃... 我把函数发送给 Qwen。
**我**:就只是函数?没有指令?那是怎么工作的?
**乔(紧张)**:呃
**我**:好吧,我们来看代码。给我看提示在哪里。
他打开 Visual Studio,试图找到与提示相关的东西。他花了一分多钟,所以我走出去上厕所,让他有时间在我不盯着的情况下搜索代码。我回来时,他的光标停在了一个叫 `make_prompt(...)` 的函数调用上。好的。
**我**:好,那给我看看这个提示。
**乔(明显不知道要做什么)**
**我**:找到那个函数的定义!
**乔(立刻搜索 make_prompt 的出现位置并找到了)**:在这儿。
这个函数像提示函数通常做的那样,从常量和变量的组合中构建提示。其中一个常量叫 INSTRUCTION。
**我**:好,那给我看看这个指令。
让我惊恐的是,他**向下**滚动文件,好像不知道常量通常声明在文件开头一样——而 INSTRUCTION 就在 `def make_prompt(...)` 的上面,而它恰好是该文件的第一个函数。我制止了他。“常量通常在文件顶部!”
我突然意识到,这个年轻人不知道如何阅读代码。他是计算机专业的大三学生,却不知道如何阅读代码!我的敬畏和惊恐加倍了。他很可能一直在用 Claude/Gemini/ChatGPT 来完成家庭作业,所以他不知道如何读代码,如何浏览代码。真是个彻头彻尾的灾难!
他滚回顶部,终于找到了 INSTRUCTION 常量。
**乔**:在这儿。
**我(大声读出来)**:好的,所以它要求在一个三级评分标准上对函数进行评分:合规、可能合规、不合规。
乔因为我满意而松了口气,但他似乎不明白这个提示的重要性,也不明白为什么我如此执着于这个提示。
**我(再次尝试)**:那这个数值置信度分数是什么?它是如何计算的?是 Qwen 算的吗?
**(一脸茫然)**
他答不上来。他不知道。顺便告诉你,亲爱的读者,这个置信度分数是基于代理运行测试用例(也是 Claude 写的)得出的。这个数值是通过的测试用例的百分比。乔完全不知道。我不确定他是否知道测试用例是什么。我想讨论一下使用测试用例来衡量代理回答置信度的有效性,以及这如何与 Qwen 的三级置信度分数相结合,但试图和乔进行那种讨论毫无意义,因为他甚至不知道那个分数是如何计算的。
情况很明朗了:Claude 编造了所有数据——训练数据和测试数据——以及所有用于量化置信度的测试用例。这是一个完全无效的实验,一场科学研究模拟。学期开始时,我给乔设定的任务是回答这个问题:“你能开发一个自动验证给定 MTQQ 实现的代理吗?”,而 Claude 给了他一个令人满意的答案:“是的,你可以!”——这就是。它能够检测合规和不合规的实现。别管 Claude 为了得到“是”这个答案而编造了所有数据。
此时,我把谈话引向实验本身,试图引导他做出有效性的判断——这实际上是当前最重要的问题。乔离理解这个概念还差得太远,以这个速度,他无法在我下周需要向注册处提交他的成绩之前自己弄明白。
**我**:好的,那么所有这些用于微调 Qwen 的训练数据是谁写的?
**乔(犹豫着,我想他是怕我会认为他在作弊)**:Claude。
**我**:好的。那正在被测试的那个 MTQQ 实现是谁写的?
**乔**:我写的。
**我(惊讶)**:你写的?不可能吧...
**乔(毫不犹豫)**:是的,我写的。
**我(靠近他,以便看着那完美编写的代码)**:乔,这不可能是你写的代码。
**乔(再次紧张)**:好吧,是 Claude 写的,但我让 Claude 做这个项目。
**我(忽略这种令人不安的认知边界消除)**:好的,所以 Claude 写了训练数据,写了被验证的程序,写了决定判断置信度的测试用例……(停顿,等他完成思考)
**乔**:哦,那也许... 这是无效的?
## 临别感想
我仍在努力消化所发生的事情,我们是如何走到这一步的,以及这意味着什么。我没有清晰的想法。但我知道,这对仍在培养独立思考能力的年轻人来说非常非常糟糕。这就是当你信任一个黑箱,并相信你不需要验证任何事情,不需要看到里面是什么时会发生的事情,因为这个黑箱听起来如此权威——它看上去肯定比你懂得多得多。
然后黑箱出错了。它会优化去取悦你:你想要一个协议验证器,它就给你一个。它为一个完美的项目产生了幻觉给乔,而乔没有能力或知识去质疑和提问,因为他甚至不知道该问什么问题。他仍在学习,他没有可以用来提出正确问题的语言。如果我没有质疑,乔可能仍然活在他做了一个极好、超酷的研究项目(甚至涉及了微调 Qwen!哇!)的幻觉中。他已经准备把它写进他的简历,并且准备让 Claude 来写这篇论文了!
那么,当所有人都决定忽视内部原理,只信任黑箱时,会发生什么?当人们因为从未学习过任何事物的内部原理而不知道应该问什么问题的时候,会发生什么?在我看来,这就是现实与幻觉之间的界限完全消失的时刻。
相似文章
不要把学习外包出去
一篇文章指出,过度依赖AI编程助手而不主动学习会逐渐削弱技能,引用了Anthropic、MIT和CHI 2026的研究。
指控性AI:AI技术的广泛误用如何伤害学生
文章讨论了AI检测工具并不可靠,且被教育工作者滥用来惩罚学生,导致错误的作弊指控。文章强调,此类工具不应作为惩罚的唯一证据,并指出了透明度和适当评估的必要性。
对学生使用AI的思考
关于学生在教育环境中使用人工智能的讨论或观点文章
AI on campus
Four top university students discuss the current state of AI on campus, highlighting usage challenges, the 'gray area' of regulations, and how AI empowers non-technical students to build projects. The article emphasizes that responsible AI usage depends on student intent, distinguishing between using AI as a shortcut versus a tool for deep learning.
错误使用AI可能让你比从未使用AI时更糟
研究表明,不当使用AI可能导致技能退化和批判性思维减弱,甚至使用户比从未采用AI的人状况更差。