科学大院

最困难的时候,我甚至不知道该问AI什么问题

 编者按

本文讲述了一个职场新人在AI辅助下独立完成全新领域算法开发的故事。

如果你不懂算法开发,相信我,看了这篇你还是不懂,不过没关系,看不懂的地方直接跳过就好。重要的是,作者使用AI的方式和他的思考,一定会给你一些启发。

另外,本文所有斜体文字均为来自编者的吐槽,:)。

从某985高校拿到工科博士学位后,我入职了某单位的科研岗,马上就接到一个算法开发任务。事前我完全不懂这个算法,但AI辅助我完成了敏捷开发。有多敏捷?三个月,就我一个人,搞定。

Image

接下来,我想分享自己崭新的工作经历。在这个经历中,AI不断刷新我对学习的定义、对工具的定义和对我们之间能力边界的定义,希望对你有帮助。

第一阶段:AI辅助算法研究

时间:2个月

我的专业背景是信号处理和目标跟踪,然而,入职后领导指派的第一件任务,是一个我完全没接触过的算法(由于某原因,这里就不说了)。更要命的是,我没有引路的师傅,也没有配合的同事,这个任务里就我一个人。领导的期待,和我对自己的期待,都是“你是一个博士,你就应该很快上手工作”。(自我pua……)

好在学习一直是我的强项,我下了很多论文。一遍看不懂就看两遍,两遍看不懂就看十遍,反正硕博就是这么过来的。然而,我立马就意识到,我的身份变了,不再是一个学生,而是职场人。最大的变化是什么,是身处一个交换场而不是练习场。我用自己的脑力付出换取薪酬。

糟糕的事还没结束:1. 我发现这个算法的公式极其繁杂(我个人接触过的算法中公式最多、最乱的);2. 现有的论文用了大量简化,而且不同论文对同一个细节的描述不一致,且不解释为什么不一致。

哦,对了,我心气还有点高。我还是比较满意自己读博的科研成果,觉得自己有点才气,不想入职后第一个任务就失败。(自我pua……)

Debuff真是叠满了,我倍感压力!在新的压力下,我必须改变原有的工作模式(看论文-问领域专家-试错-卡住了战略性放弃-过一阵子再回过头来看-重复这一过程)。这时,我开始求助AI,此前我从不在学术领域求助AI(求助AI算是学术道德的灰色地带)。

Image

神奇的事情发生了,今天的AI真的很强大,可以帮你总结出这个领域的知识点(你只需要指令“给我总结xx的知识点”),可以帮你推荐专业工具书(你只需要指令“我要最权威的书籍”),甚至可以推导公式(你只需要指令“给出xx详细的推导”)。

没有导师指导,没有同事讨论,没有“放下一段时间,过后再来”的机会,我在AI的帮助下不断地了解这个新领域的知识点,并把它们转为MATLAB,验证自己的理解。

Image

第二阶段:AI辅助代码实现

时间:0.25个月

时间到两个月后,根据硬件要求,我需要将MATLAB代码转为C++。在此之前,我完全没碰过C++,只会MATLAB、C和一点Python。如果你也有编程的经历,就应该明白,面对一个完全没接触过的编程语言,上手需要相当的时间。然而,事实上,我只有一个月。

由于MATLAB代码已经完全开发好,我原以为直接将程序拷至AI,它就可以给我生成一个可直接运行的C++代码。

这里需说明一个情况,我个人习惯将MATALB所有的子函数和主程序放在一个文件里,因此我的一个文件就可以直接运行,并输出需要的结果(MATLAB支持这一习惯)。这一习惯让我产生了一个误区,那就是“只要将文件的全部内容复制、粘贴至AI,AI就会产出一个单独的、可执行运行的代码”(熟悉C++的人肯定觉得蠢,因为C++根本不遵从这个逻辑,然而当时的我,完全不懂)。

因此,在前两天内,我将完整的MATLAB代码(约1500行)拷至多个AI,命令它输出“可直接执行的C++代码”。结果就是:1. AI永远在删减我的代码(不断提示“这里删减相关功能”);2. 代码在VS(主流的C++开发环境之一)中永远无法运行。

这段时间我感到极其痛苦,痛苦的来源不在于进度受挫,而在于我不知道哪里出了问题,亦或说“I don’t know what I don’t know(我不知道自己不知道什么)”。回忆上一阶段无数的问题,例如“xx参数怎么解算”,它们属于“我知道自己什么不知道”“我的问题很明确,只等AI提供答案”。但现在,我甚至不知道该问AI什么问题。

Image

就在第二天晚上,我突然灵感乍现,当然不是明白了怎么编程,因为我完全没看编程的书和课程(一个月的时间根本不支持传统的“学习-练习-掌握-实现”的流程)。我的灵感是“一直是我在问AI问题,那能不能让AI问我问题?”

我给AI发出指令“我掌握MATLAB和C,完全没用过C++。你来问我若干问题,判断我不会什么,需要知道什么知识,以快速上手C++”。于是乎,AI通过问我问题,总结出使用C++需要掌握的知识,例如

1. C++需要在h文件中定义子函数和结构体

2. 子函数需要明确输入参数和输出参数的类型

3. 若某个子函数需要兼容不同的数据类型,可以进行重载

如果你熟悉C++,可能会嗤之以鼻“这不是最最最常识性知识么?这都不会,还是放弃吧”。但我想说“对,那时的我就是连这都不懂,菜得抠脚。但没办法,我手里的任务就是‘一个月内完成C++代码上机’,一个月后所有人只看结果”。我还想说“你过去、现在和未来,不曾亦不会碰到这种任务么?那个时候,你甘心直接放弃么?”(自我pua……)

Image

AI在半小时内教会了我如何上手C++。我在头文件中定义了一个子函数,在源文件中实现了这个子函数,它的功能很简单——std::cout << 111(输出“111”),在主程序中调用这个函数。点击“开始调试”->等待编译->显示“111 按任意键关闭此窗口”(成功)。

我成功建立了一个可执行的C++项目。我迈出了从0到1的一步(学习一个新编程语言),现在已没有时间让我从1走到99(不断地练习、试错),但我感觉我可以迈出第100步了(C++代码实现)。凭什么?凭AI。

我放弃将完整的MATLAB代码一次性翻译为C++的办法,转而将每一个子函数拷至C++,并明确每一个输入参数和输出参数的数据类型,例如“Ts是double,m是Eigen::Matrix<double, 15, 1>”。AI不断地将一个个的子函数翻译过来,我一个个地拷至我的cpp文件,并在h文件中提供其定义。

这个过程就像拼拼图,我提供每一块拼图的图纸,AI为我造出拼图,我再将其组装起来。实话说,感觉很爽,就像我有一个世界一流的、无条件听我命令的助手,它什么都会,没有个人情绪。更重要的是,它的工作表现完全取决于我的指令,我的指令正确它就正确,我的指令错误它还可能帮我纠错。

我全程不需要做底层工作,但却独自完成了一套极其精细的拼图。这段经历的复现离不开AI,但它只是我的手下。最大的工作量不是我完成的,但我却可以自豪地说“对于这件事的成功,我是毫无争议的作者”。

Image

第三阶段:AI辅助工程优化

时间:0.5个月

一周,准确说是三天,我完成了MATLAB到C++的代码实现(前两天我在无头乱碰,最后两天是周末,我出去玩了)。

时间还剩三周,我带着C++代码去合作单位,让他们打通数据接口(把他们的数据“封装”为我的代码需要的结构,并把我的输出“还原”为他们需要的数据),将我的算法“嵌入”他们的大代码中。

一个下午,准确说是3个小时,我的代码上机了,并完成了第一次测试。两个月前,我从没接触过这个算法。一周前,我从没接触过C++代码。今天,我的代码上机了。

Image

不出意外,结果不对。在排除掉算法逻辑问题后,我完全不明白问题出在哪里。说实话,很沮丧。当一个人完成了对他而言很难的事,那么很小的挫败都会导致巨大的沮丧。我们要相信成功,追求成功,但不能习惯成功,我们应该习惯失败。(自我pua……)

Image

在与合作单位沟通的过程中,我听到了很多新的名词,都是工程实践的“技巧”,而不是“理论”。后来发现,我看的书中也曾提到过这些词,但几乎是寥寥几句,没有公式,没有参考文献,完全不起眼。

回到工位上,我问AI“我想提高算法的性能,给出工程实践中的技巧和方法”,它给我列举了很多项,其中就有合作单位提到的那几个。接着,我让AI一个一个地提供这些技巧的具体公式,我一个一个地加入自己的代码。这些技巧的公式都很短,最短的只需要两个。

值得说明的是,在这个过程中,我逐渐不需要“先用MATLAB实现,再借助AI转为C++”,我逐渐可以自己编写C++代码。当然,我依旧需要AI解释开发环境报的错误(我自己看不懂)。

一周后,我带着新的代码到合作单位,再次上机测试。你猜怎么着?还是出错。但我不再沮丧,我已经跳出MATLAB转C++的喜悦感,失败才是常态。怎么办?回去继续调试,反复问AI已有的功能有没有错误,还有什么技巧有帮助。

再一周后,上机,成功。距离一个月的期限还剩一周。这一周干嘛呢,用AI辅助写报告(明确要求“我要给领导汇报,写得有深度、专业且凸显工作量”),总结所有算法和用到的技巧,期限一到就给领导汇报。

总结

三个月,前两个月AI帮助我完成公式推导和算法研究,后一个月AI帮助我实现MATAB到C++的转换以及算法优化。直到一个月后的今天,我空闲时仍会迭代这套代码。怎么迭代?问AI,我之前用到一些简化,让AI给我提供完整的方案。对了,我现在完全不需要AI帮我翻译MATLAB代码,我自己就行。

我掌握了C++么?肯定没有,还有大量的知识我不了解。但无所谓,我真正需要的是“实现”,而不是“掌握”。在过去,“掌握”是“实现”的门槛。但今天,AI说“我允许你先实现,后掌握”。

Image

AI辅助算法开发,核心是用数据智能突破人类经验边界,它不止解放重复劳动,更以人机协同的方法开辟新的工作模式,并重塑人类对自身能力的认知。AI的知识来源于人类,因此它不可能比人类强,但它一定比每一个人都强。

一些思考:有些人“身处AI上”

完成本次工作后,我对AI也有了更深的思考。

No.1

AI不仅在取代低级劳动,

还在取代低级思考

纵观人类数次工业革命,核心只有一个:工具的迭代更新。工具的迭代本质在解决一个问题:取代人类的体力劳动,据此打破时间和空间的限制。但AI不同,AI不仅在取代人类的低级劳动(别杠,做excel、认人脸、甚至收集信息,就是低级劳动),还在取代低级思考。

在这个经历之前,我使用AI的方法就是“提问题”。这是个什么模式呢?就是我知道自己哪里不懂,只需要AI给我提供答案,AI本质上还是取代劳动,只不过是脑力劳动(搜文献-摄取知识-总结答案),其实也挺累。

如果我的知识是个地图,那以前的学习就是先知道想去的新地方,比如伦敦,然后通过各种途径补全地图上这一块的空白。

这次的工作经历打破了我的认知,我可以让AI“向我提问”,以此告诉我“我什么不会,需要学什么”。这已不是取代我的劳动,而是在取代我的思考。

拿地图类比,我不知道自己的目的地,甚至不知道要做什么,而只是“最近心情不好,对人类很失望,我该怎么办”。AI利用人类庞大的知识库,告诉我“你可以去伦敦感受人类的历史,重拾对人类的信心,需要我为你补全伦敦的地图么?”

AI在低层次已经可以解决“I don’t know what I don’t know”的问题。这是一种全新的工具,有别于灯泡、飞机、火车等工具,它不是在知道目的地后打破时间和空间的限制,而是为你提供可选的目的地,进而节省你寻找目的地的时间。

你可能会想那人生就没有“意义”了,而我个人相信萨特的虚无主义。意义从不固定,追求本身就是意义,目的只是意义的载体,你选择什么目的便造就什么人生,但目的可选也可改。

Image

No.2

跟AI交互,需要一套

能无失真表述自己需求的语言

回顾将MATLAB转C++的过程,我总结出AI辅助开发的最少必要条件,就是我需要拥有什么,才能让AI出色地帮我工作:

AI与人类交互的语言主要是自然语言(人类相互交流的语言),而自然语言并不适合“长程推理”。人类的每一句话都可能产生歧义,需要上下文(肢体动作、神态也算上下文)才能确定唯一的含义。

回想生活中任意的对话,你永远无法做到每个词背后的含义始终不变,总有些词要么被说服,要么被加固,要么带上情绪。说句装x的话:在自然语言中,所指和能指间的联系具有随意性。例如,你和父母争论生活费,最后总会带上点“个人独立”、“自由”等隐藏含义。

为什么你让AI做一个项目,例如让它生成一套产品原型,它总是给你搞事情,不是阉割功能,就是篡改布局?因为你的每一条指令的含义都不唯一,即便你觉得“已经说得很清楚了”。

为什么描述物理世界的语言是数学?因为它可以“长程推理不失真”:如果x1=x2=…=x10000,那么x1一定等于x10000,这个10000还可以是1000000000000000。除非修改,一个符号的含义始终不变。

另一种“长程推理不失真”的语言是编程语言,在我的案例中就是MATLAB。我的每一个子函数的含义都是唯一的,无论是在第一行还是最后一行调用,这是我此次开发算法的最少必要条件。我把子函数拷至AI,并规定好参数类型,不存在任何歧义,无需任何上下文。

你可能会说“我不会也不想学编程”。针对这个问题,我个人有几个猜想:

(1) 是否有可能设置一套“话术”,让自然语言也能“无失真地表达”,至少尽可能无失真地表达;

(2) 能否利用图形化工具,例如思维导图,辅助自然语言来实现“无失真地表达”;

(3) 能否利用伪代码和AI交互,例如“If 用户点击图案A, then …”,让AI用户快速上手,无需学习繁杂的编程知识。

Image

No.3

我们仍需要顶级的专业人士,

注意是“顶级”

在我的这段经历中,AI完成了大量的低级编程工作,但是我发觉仍旧离不开专业人士,虽然只需要一个专业人士。

举例,由于我熟悉的MATLAB和C不喜欢动态调整变量的内存,否则代码会很慢,因此我花了大量的时间思考解决方案。在与合作单位沟通时,他们说C++底层就能解决这一问题(用push back就行),而这一点我不知道,AI也无从知道我不知道。

看,现阶段AI辅助开发仍然离不开专业人士的知识和经验。但是,随着AI的普及和发展,我们也许只需要少数的、顶级的专业人士,为我们提供代码优化的指导。我们越来越需要能驾驭AI、把AI工具化的人,对这类人来说,AI只是一个先进的算法,他们是用户。

相比之下,绝大多数的人可能只是在给AI提供数据,例如重复地看短视频。在AI时代,你想成为用户,还是成为数据?

如果要我做总结,那就是有一些人“身处AI中”,而有些人“身处AI上”。

Image

作者简介

望墨溢,魔都打工仔,沪漂最大的好处就是买不起房,让我没有把买房设为自己的目标。

(本文的所有图片均为AI生成)

等等!别滑走!

2025 年,是 AI 真正进入日常生活的元年。

在这一年里,

你用AI解决了什么难题?你有什么使用AI的心得?

……

有关“我与AI”的一切,

欢迎在评论区跟大家分享!