就如果我严谨一点说的话,就是,你假设这两个题目难度一样,就是英文没有造成阅读障碍的话,那就意味着进入,这个我们学校研究生复试的这个本科准毕业生,编程能力远比南京地区利用课余时间学习编程的小学生群体,当然这个还是参加活动还是经过一定筛选的,他的编程能力要低。你可以给我们的听众解释一下,这个题目是一个什么样难度的题目吗?有没有?可能是。因为这个题目太难了,只有小学生才能做出来?这个题目是这样的,我们都知道我们有一个身份证号,身份证号前面六位是你出生的那个地区,然后接下来是你的出生日期,然后最后有一位校验码。这个校验码是冗余的,也就是说你把它演起来,你也可以把它算出来,你就可以知道身份证号是不是?合法,防止你手滑以后把身份证号填错。你们在填网页的时候,经常都会不小心填错以后,它会告诉你这不是一个合法的身份证号。然后你的任务就是,我已经告诉你了身份证号校验的规则,写的非常清楚,然后你需要写一个程序来校验身份证号是不是?合法,以及出生日期是不是?在 1900 年 1 月 1 号到 2025 年 5 月 10 号之间的某一个合法的日期。
就这样的一个简单的题目,我觉得是大一程序设计期末考试的题目。那你觉得为什么会有这么多的参加考研复试的学生做不出来呢?是不是因为他们没有像小学生这样有这么好的小时候就参加编程培训的条件呢?还是说你觉得是他们自己的问题?很好的问题,应该是评价体系的问题使得他们成为了 reward hacker。因为他们考研最重要的就是四零八的那个专业课,然后我有一年去改过那个四零八专业课,然后我就我还是有点受不了那个题目。就我不知道出题人脑子怎么怎么样了,能够出出这样没有任何意义的一个服从性考试的题目。有有种什么感觉呢?这个考试就像是给你一本书,然后这本书是一个 random string,random bit string。然后他的问题就是从这个 random bit string 里面掏出某一个位置说,请你写出这个第三十八页的第六行的那个 bit string 是什么。然后这个东西因为它是不可压缩的,就你不可能建立一个更好的知识模型来理解这个知识,所以你只能把它记住,然后考研的人就花了时间去记了这个,然后他其实什么也没有学会。
所以你刚刚的这个利用压缩来对于这个四零八的解释,我们可不可以理解为,需要在这个考研的初试中获得好成绩,你所需要的其实不是对于知识的理解和运用的能力,而是对于它的原话的记忆能力。或者说是考研的机构发现了一条捷径,使得你不需要去理解它,也就可以在考研里面获得一个相当好的分数。因为大家的目标是,可能是上一个研究生,然后我先上再说,其他的我不管。所以这就成为了他们最保险的途径,因为你他从头开始好好学习编程,这个学习的路径很长,然后需要大量的练习,他们可能觉得自己完不成这样的好的训练,所以他们就选择速成,某种程度上也是被逼的。在这篇文章的评论区里面,有一个网友评论道,这年头能到南大复试线的,少说有一半是心无旁骛地备战四零八的四门科目,一年乃至两年的编程实践是啥,只会影响我刷考研习题集的速度,您认为这就是你提到的针对现有的考研评价体系的 reward hacking 吗?You are absolutely right。那你觉得,这个考研评价体系,或者说这样子 reward hacking 它的问题出现在哪里?是学生吗?是培训机构吗?
还是说是制定这个评价体系的人呢?我想想这话能不能说,我想想这话能不能说。能说,我还是用一个能说的方式来说。我的观点是这样的,我们的考试组,从上到下我们的国家没有足够的人才,也没有一个足够好的流通的体系,使得有能力的人可以去主导这样的一个考试。而是它一旦确定了一个范围以后,它可以觉得很安稳的做几十年,因为它只要不出错,对它来说就是好的。那他也可以做一个 reward hacker,就是每年就出一样的类似的题目。然后这个题目你也不管它在现实世界今天的意义下和计算机专业已经有多么的脱节,它只要有一个服从性的考试,能够把大家的成绩按照从高到低排序,并且 somehow 它还可以对外辩解称,说我说的这些东西还是和计算机有相关性的,那当然是有相关性的,那么它就在一个不败之地上。那么这个体系不摧毁,那 reward hacking 就是一个必然的现象。但是这个体系要摧毁,又需要大量有能力的人,愿意在这个体系的底下一点一点向上走,但这样的向上的通道几乎就不存在,所以这是一个系统性的问题。
我能不能?理解为,当你的向上通道,当你获得主导选拔机制的通道本身就需要你通过 reward hacking,通过向评价体系妥协来走的话,等你走到那个地位的时候,其实你已经不会再是一个拒绝 reward hacking 的人。这我不确定,但是我作为一个不喜欢 reward hacking 的人,显然我拒绝一切和教学相关的这种评价体系上的东西,包括奖励荣誉这些。我唯一我觉得我获得一个,南京大学学生评选出来的我最喜爱的老师,然后当时很惊喜,因为我不知道是学生用脚投票投出来的,然后这是我唯一的获得的某一种好像有一定官方认可的荣誉,但是这个荣誉没有任何用。这个荣誉在你看来才是最没有 reward hack 的,最真实的反映了。你的教学对于学生的影响。我觉得是,这是学生对我的认可,但是它不能帮助我在任何意义上向上哪怕走一小步。你本人是通过 NOI 保送到南大的,然后我们这个节目之前许多的嘉宾也是信息学竞赛选手,你觉得和考研初试比起来,信息学竞赛是一种更可靠的选拔机制吗?曾经是,现在信息学竞赛已经发生了巨大的变化。
我曾经有过一个视频,说信息奥赛发生了什么,然后劝退各种各样试图学信息学奥赛的人。因为现在信息学奥赛首先它难度已经就它成熟了,它和我那个时候不成熟的时候不太一样,它成熟了。以后,它就可以像数学竞赛一样,在一个空间里面某种程度上的一种服从性的测试。但是它可以很好的反映你的逻辑推理的水平,那么这个时候老师就显得很重要,但是信息学竞赛的老师又非常稀缺,所以这就最后变成了一个有一点点,尤其是在可能要到 NOI 竞赛的时候,它有一点点不健康的竞赛。所以我在今天看可能我不是特别推荐大家再去参加信息学竞赛了。所以这符合你之前的观点,当一个评价体系非常容易或者说非常的,被 reward hacking 给主导的时候,它就不再是可靠的选拔机制。竞赛还不太一样,竞赛还是一个可靠的选拔机制,因为它足够难。它不是一个完全的服从性的考试,所以保送上清北这个事情还是没有问题的,但是在这条路上牺牲了太多,可能不适合走这条路的学生,这是我比较担心的事情。
所以你推荐大家不要盲目的参加竞赛,不是。因为你觉得这个选拔机制不可靠,而是。因为你觉得它现在过热了,或者说。其实有很多人不适合通过这个选拔机制,你是针对那些参加者而言的,而不是在对那些选拔者,或者说主导这个选拔的人在说这个比赛不好。对,主导选拔的人必须要选出那五十个人,所以他只能这样出题。就是。因为现在选手已经这么强了,所以他只能这样出题,而你为了达到那个强度,你需要付出的代价,对于绝大。
大部分人来说都是不可接受的。最近我看到你也参加了另一个选拔,或者说另一个对于学生的考察,就是全国大学生计算机系统能力大赛。然后你在 6 月 13 号小红书上宣布说你退出了。这个大赛的技术委员会,你可以讲讲技术委员会是做什么的,然后当时发生了什么吗?技术委员会主要是评审和制定规则,但是可能我不能透露太多,因为好像有一个保密协议不能对外,呃,透露太多关于这个竞赛的事项。但我想也没有太多的约束,呃,当时大家主要的问题是在最终决赛的时候,应该是有一个 12 个小时的比较长的编程时间,那么允不允许大家用大语言模型?然后我们几个可能比较年轻的老师,包括我们的那个技术委员会的主席,呃,都是认为还是应该在一个受控的情况下提供一些,呃,大语言模型的 API,因为,呃,从我我这边来讲,呃,现在就尤其是这一代,这两年的学生,他处理这个,呃,细节问题的方式已经和我那个时候完全不一样了。比如说我读书的时候,我我会花很多时间读手册,然后把那个手册一遍一遍读,然后要记住里面相当多的内容,呃,像古法编程的巅峰了。
呃,嗯,比如说你要做一个 GIT 命令,那我都是肌肉记忆,但是今天的学生们不一样了,今天学生他只要有对 GIT 的,比如说模型有一个很好的理解,那个数学的模型它是一个 Persistent Data Structure,然后他可以,呃,做什么样的操作,然后至于什么样的命令来完成这件事情,他不需要知道,他只要跟模型说好,我现在要干这件事,达成这个目的,请你帮我做。所以这可能是一个学数学的人,他他有一个非常好的数学概念,但他对命令行计算机一无所知,他依然可以完成这件事。然后在操作系统竞赛的时候同学们也是这样的,他们在,在解决这些细节问题的时候,通常都不需要再花很多的时间去肌肉记忆一个底,非常底层的东西,他只要知道原理啊。就可以。那如果你允许他在初赛的时候用,我相信他大部分的,所有或者百分之百的这样的细节都不是由,呃,他手动手工完成的。那到决赛的时候他就变成了。你砍了。他的手,捆了。他的手和脚,让他来展示一下他的才能。
那对操作系统竞赛来说我觉得不 make sense,道理是这个道理,然后我不知道为什么老登们总是觉得,呃,可能他们没有用过大模型吧,对,所以最终大家还是投票。然后,呃,决定禁止使用大模型,啊,就是这样的一件事。你刚提到说初赛的时候,或者说预赛的时候允许选手允许学生使用大语言模型,但是决赛的时候不使用,你觉得这是一种冲突。同时你也提到说现在这一代 CS 学生或者说系统学生,他们处理细节的方式和以前的人不一样,他们往往会通过在一个比较高的抽象层级上,对一项技术建立理解,而不是去了解这个技术,细枝末节的方式来学习一项技术。那这种学习方式是依赖于 LLM 或者说 AI 可以帮他们处理细节的,你觉得这两个原因哪个原因让你觉得是更大的原因?当然是他们解决问题的方式变了,现在人很难在没有 LLM 的方式下再工作了,所以当你把我丢到一个完全封闭起来的,呃,古法编程的现场的时候,我觉得我的学生,我就我自己的能力。其实也极度的退化,但是这不代表我没有办法设计一个好的 system,或者,呃,能够做一些比较 fancy 的事情。
你觉得脱离开 AI 或者说脱离开 LLM,做不到很多事情是现在人能力的一种倒退吗,还是说是现在人能力的一种转变或者说进化?好问题,因为我们有了 LLM,所以在有限的时间里面我们可以学更多的东西了,而不是你必须要花很多的时间去掌握一项技能性的东西,而是你能够通过某一个方式把它的原理理解了。以后,你就可以去创造一些以前你想都不敢想的事情。也就是说,我们的在大学里面嗯,能力的边界。其实被极大的扩大了,而这才是,呃,我们真正应该要拥抱的东西,而不是说,呃,哎呀,操作系统大赛我们还是把你们都捆起来,啊,去做题吧,这样。那从这个角度上来说,其实很多比赛或者说很多能力,在有了 AI 之后都应该边界被扩大,大家都可以在更高的层级上去思考和做事,然后在同样的时间里面做到更多的事情。那你觉得所有的选拔机制都应该允许 AI 的使用吗?举个具体的例子来说,你觉得信息学竞赛应该允许 LLM 使用吗?
我觉得信息学竞赛打一个类比就是武术,我觉得是一种首先它可以强身健体,也就是说它可以锻炼你的逻辑能力,呃,其次它还具有一定的观赏性,当然可能是相对于圈内人来说具有一定的观赏性,那么,呃,它就是一个很好的舞台,可以去评价你这个方面的能力。那么你想武术比赛,你你应该不会想象,呃,在武术比赛当中掏出一把枪开始对射吧,对吧?,所以我觉得武术比赛有一个它,呃,封闭世界的规则,这个是是 OK 的。啊,但是如果你真的开始打仗了,呃,那你会派这些练武术的人去打仗吗,还是你选择,呃,无人机机器人和导弹对吧?,这个答案可就非常明显。所以我觉得像比如说操作系统竞赛,它是一个呃展示你系统能力的综合能力的舞台,那么。当然应该允许 LLM。那如果是呃 OI 竞赛,那么它更像是,呃,一些爱好者一起的游戏,那你们只要把游戏规则定好了,对,对吧?,你像掼蛋,对吧?你,呃,理论说我有一个好的这个状态空间搜索,我能把它全部搜索完的时候,我就可以做一个最优的呃决策,那掼蛋就没有任何意义了,对吧?
,呃,但是你依然还是会看,呃,大家打掼蛋,呃,同样的你依然会有一批人会喜欢 OI 竞赛,这是我的理解。我觉得这个类比特别好,你把算法竞赛以及算法竞赛相关的一些条件限制比喻为武术中不能使用导弹这样子的限制。可是我们也看到自从现代的武器,现代的兵器出现之后,大家越来越不会把武术水平作为衡量一个国家,或者说一群人他们军事能力的标准。也就是说武术这个东西从一个非常重要的衡量你的军事能力的,呃,一个方面,它现在变成了一个一一群爱好者,一群小圈子自娱自乐的一个游戏,你觉得信息学竞赛也在变成这样吗?信息学竞赛还承担了。另外一个职责,呃,就是为国家筛选那些真正具有逻辑推理能力天赋的人。那如果这个职责不消失,我觉得信息学竞赛依然还是有价值的,因为,呃,你反过来这样想,如果我们最终评价还是能不能?在战场上面获胜,那么倒过来推你就需要一个非常强大的工业和科研体系,然后这个工业和科研体系必须能够造出比你的对手更强的武器,更强的导弹,更强的无人机,而你建设这样的强大的工业和科研体系,又需要不同类型的人才。对吧?
,比如说如果你要建工业体系,你首先就需要有很多的人口要解决人口的问题,然后如果你要科研体系,至少从目前的版本答案来看,我们依然是需要这个逻辑能力极强的人,那当我们需要这个极强人的时候,我们就需要一个体系,所以有的时候这个社会的运转是比较复杂的,呃,每一个体系存在都有一些问题,也有一些它存在的,呃,道理,啊,但最终他们会形成一个整体,是我们的,呃,在发展当中的国家。刚刚你提到很多人现在使用一项技术的方式,或者说使用一种工具的方式不是去阅读这些工具的具体的手册,而是去用 LLM 来处理一些技术细节,而自己只理解这些工具的顶层的逻辑,或者说它的数学模型。那你觉得 2025 年学生编程能力不行这样的事情,对于考察学生而言还重要吗?因为我想任何一个 LLM 都可以非常轻松的做出这样一道身份证校验码的问题,你觉得还需要考察学生的编程能力吗?从某种程度上来看,至少我们想要招收的学生还是应该具有一定的编程能力的,然后。
同时我们的招生也是有一个明确的标准的,你应该掌握这些课程当中的内容,所以这样的一道题目,呃,从考核的角度来看它是公平的,也符合,或者说对于那些学生他学过的课程的我们的一个要求和想象。所以在这个意义上我觉得,呃,他们是被迫来考试的,那我们也被迫用,要用一个方式把他们拉平,所以我们需要,呃,出这样的题目,那如果至于怎么样考察他们,比如说使用在有 LLM 的时候,他们人的能力,呃,那可能是交给比如说导师来判断的,这样。我们有时候也是无奈要设置一个选拔性的考试,我们必须要出一个卷子,而且可能比如说机试这件事情本身就已经是预定好了的,他必须要一套题目,那我的职责就是出一个,呃,我认为他们应该能够完成的题目来,来完成一个筛选,啊,只是这个效果远远不,远远不及预期,而且这个不及预期可能不是。因为这些学生用了 LLM,因为他们在,呃,入学的时候。其实那个时候他们能用到的模型可能还没有那么好的编程能力,他们几乎不能用它来解决编程任务,那个时候也没有很好的 Agent,所以这个题目从考试的角度来来看是成立的,呃,但从时代的角度来看,也许这个考试不应该存在。
你刚也提到公平不公平是一回事,但是考核的意义本身是另一回事,你觉得未来存不存在某一个时刻,一个没有办法熟练的,或者说正确的做出身份证校验码这样子问题的人,通过 LLM 其实可以设计出非常好的系统呢?或者说如果这个时刻来了的话,针对一个人能力的考察应该怎么进行呢?非常好的问题,我可以回答 Everything is a state machine。
因为每一个人也是一个 state machine,然后你,呃,我为什么会说 state machine 呢,因为这就是我思考所有的问题,比如说我要做一个 system 的时候,我的 first principle,然后你把这个人想象成 state machine 以后,呃,其实你人每一个人都有一个成长经历的轨迹,然后如果,比如说你有这个人在所有的时候和所有人的沟通交流,他表现出来的样子,他解决问题他解决的那个过程,那么你把它做一个压缩,把一些可能不重要的信息给删除掉,可能有些实在是隐私上面不应该暴露的东西,呃,他也可以选择不暴露,那么你 digest 他的这个 state machine 上 execution 的 trace,你就知道你要不要?录用这个人了。所以。其实,呃,在有了 AI 的时代,我们不管是评价也好,还是筛选也好,我觉得都变容易了,而不是变困难了,只是你愿不愿意以某种形式,呃,向一个比如说,呃,区块链一样,你去把你你的经历去 persist 到这个区块链上,使得别人可以审查它。
您之前写过一篇特别著名的文章叫给天命人的劝退信,然后呢?是写给很多准备读博的学生,您现在自己也在带博士生,啊,同时您也在设计竞赛题,您可以分享一下您是怎么去选拔你愿意一起工作的学生,以及你怎么培养。可以说我没得选,因为,嗯,我总是需要一些学生,然后那么,嗯,如果有学生来,我有名额的话,我我可能会选择把这个名额给他,啊,只要我觉得他还是有,有有一定的 self motivation,我觉得就可以。然后至于培养的话,我觉得可能我不是一个特别擅长培养学生的导师,啊,我我我我觉得我还是尽责的,就我所有跟学生的开会都是一对一的,呃,然后我可能也会给他分享我的观点,啊,这样,但是我细节的东西可能确实会指导的少一点,尤其是现在 AI,啊,学生大部分时候可以问 AI 来获得技术上的,呃,这些细节,但我不一直不觉得我是一个。非常好的导师,因为我觉得我的学生要么就是能够按时毕业,要么就是很长时间毕不了业,有点糟糕。您刚才提到,就是把之前他的人生经历作为一个状态做压缩,那您一定也会有一个判断,说这个学生是不是?一个我喜欢的学生,或者他有没有?