授课
我这一学期,为本科生讲授《机器学习》课程。
这是我们学院 21 年新设立的数据科学系的一门新课,第一轮讲授。我之前倒是讲过机器学习,但那还是 2019 年春季(时间过得快啊,整整四年了)在北德克萨斯大学。课程代码我还记得,叫 INFO5731。
回国后,我一直没讲过机器学习课程。冷不丁捡起来,发现需要解决的问题太多了。
首先是授课对象发生了变化。原先面向研究生,现在面向大二本科生,因此必须要补充基础知识降低难度。
其次,也是最要命的,是这几年框架的 API 变化很大,原先的代码基本上都不能用了。越是前沿领域,变化就越大。深度学习框架就是个例子,API 隔三差五就变化,搞个「偷袭」。有的时候代码上周运行正常,今天重新运行就出现错误,让你丈二和尚摸不着头。我经常徘徊在 stackoverflow 和 github 上蹲问题答案,有的时候看到是 API 变化导致,不由得好气好笑。当年为了 INFO5731 那门课的备课,我经常奋斗到上课之前,才终于能把代码跑通。如果再为了备课重新来这么一次,那简直就是噩梦重现啊。去年秋天每每想起这事儿,我都上火。
另外在美国给研究生授课时,并不区分讲授和上机课,所有课都在机房上。当时的代码样例只需要准备一个就行。现在不行了 —— 上课讲一个,上机还要练一个,必定需要不同的数据集。这就比较麻烦了。如果数据集同构,代码需要修改的地方不多,但是起不到上机练习的督促和训练意义;可若是上机用的数据与原始数据差别较大,那我还得自行重新处理一通,那真令人挠头。
好在,今年咱有了个秘密武器。用它备课写代码,可是没少帮我节省时间啊。
武器
秘密武器,自然就是 ChatGPT 了。
ChatGPT 刚发布的时候,我就开始用它编写一些简单的代码,但是运行起来,少有一次通过,大部分都会报错。不少小伙伴也表示过失望。
但是咱们沉下心来分析 ChatGPT 输出代码错误的原因。我觉得主要有三个:
首先是语言理解能力。ChatGPT 对于你的某些表达方式,可能并不能做出符合预期的判定和回应。这个问题需要靠着 GPT-4 更强的理解和推理能力来解决。所以我 最初尝试 Cursor 的时候,才会如此兴奋;
其次是缺乏样例。对 ChatGPT 来说框架没有高低之别,API 没有新旧之分。但是你在实际执行的时候可不是这样。使用过期的记忆(2021 年 9 月之前)编写的代码,是跑不通的。解决办法很简单,就是给它合适的例子,ChatGPT 立即就能调整。所以,我现在如果希望 ChatGPT 利用 fast.ai 编程,会直接把对应部分的样例代码拿来,让 ChatGPT 学习一下,然后它就可以照葫芦画瓢了;
第三,ChatGPT 不是你肚子里面的蛔虫。它不了解你的数据的样子,只能靠着猜测,来想象你指定的数据集包括哪些列,每一列都是什么。部分数据集在网上有若干个版本,这种基于支离破碎记忆的猜测不但对你完成任务无济于事,还经常会形成干扰。有一次我做 Titanic 数据集的分类问题,ChatGPT 给出的代码半天跑不过去。后来仔细一看 ChatGPT 理解的数据特征和我实际用的版本之间数量对不上。当时我突发奇想,手动调用 pandas 打印出来前几行,贴到提示语当中,果然好使,不过很折腾。
现在咱有了基于 GPT-4 的 Code Interpreter,这些困难都被突破了。
前面我已经给你展示过 Code Interpreter 做 数据分析、可视化、动图,甚至是 复杂网络仿真。这次咱们来看看它如何在机器学习模型训练上发挥威力。
Keep reading with a 7-day free trial
Subscribe to Shuyi’s Newsletter to keep reading this post and get 7 days of free access to the full post archives.