互联网资讯 / 人工智能 · 2023年11月28日 0

本科生AI实践面临挑战:3个月才完成GitHub模型

一位本科生在机器学习领域的探索中经历了不少艰辛,这其中的故事让人感到无奈。

究竟是什么让这位本科生如此困扰?

事情是这样的。

他积极参与了一个“机器学习小组”,并被分配到一位博士生的项目中。

自去年9月份起,这位博士生便让他着手处理一些与“知识图谱”有关的任务。

然而,问题从此开始。

这位本科生花费了整整三个月,才成功让GitHub上的一些模型代码得以运行。

他无奈地表示:

在此之前,我花了无数个小时试图理解预处理和评估的相关代码。

结果呢?

我仍然不知道如何让这些机器学习的代码正常运行!

本已感到沮丧,没想到更糟的事情突然袭来。

博士生提出了一个“更高的要求”——让他从一篇论文中找到一个实现相似功能的GitHub项目。

于是,他把现有的代码整合了进去……结果可想而知,完全是一团糟。

事情崩溃了!

我逐步执行每一个步骤,却依旧无法找到问题所在。

我快撑不住了,“再也做不下去了……”

现在每周与博士生的见面让他感到恐惧,因为他知道自己没有任何进展可以汇报。

痛定思痛,作为本科生的他在Reddit上发出了一个“灵魂拷问”:

机器学习代码真的这么难吗?

是我脑袋有问题吗?

你们是怎么做到的?

问题到底出在哪里呢?

“用了一周的时间,却连一个问题都没有解决,完全没有进展可以汇报?”

网友@santiagobMx1993 提出了一个建议。根据实验的期限,这位本科生可以设定一个遇到问题的解决时间,如果无法解决,就寻求同级或上级的帮助,从而快速提升效率。

例如,如果自己花了1天时间未能解决,可以再花5小时找同级的本科生一起探讨,如果仍然没有结果,再尝试花2小时去请教博士生或导师。

网友@help-Me-gRow认为,在科研实验中,寻求帮助是很重要的。有时候,自己看不到的问题,经验丰富的人一眼就能看出。

网友@linveRlan,作为博士生,也强调了沟通的重要性。他认为,帮助本科生助手完成代码调试、解决难题,或者换个更有趣的任务,都是通过沟通可以实现的。

“被分配到完全不在研究范围内的任务,难免会落后于他人?”

网友@staRfRies指出,这位本科生可能需要找到自己擅长的任务,这样才会有成就感。否则,如果给本科生分配博士生才能完成的任务,自然会感到困难。

“我的代码能编译,但一运行就出错?”

网友@TODeedee则提到了基础技能:学习如何进行模块测试(unit test)。

将机器学习模型拆分为数据收集、网络代码和训练代码等部分,并进一步将代码细分成5到25行的小模块进行调试,有助于迅速定位问题。

“给我的一些代码,我真的看不懂,这是我的问题吗?”

网友@Milkteaoppa表示,代码无法运行也可能是因为随便获取的代码质量差,导致理解困难。

如果只是想运行机器学习代码,识别低质量代码并与博士生沟通以改善代码质量都是必要的。

“作为本科生,能调试代码,但对机器学习的代码却无能为力?”

网友@TachyonGun认为,机器学习代码确实难度较大,因为需要掌握很多必要的知识,例如数学。在调试代码时,常常会遇到数值问题,如奇异矩阵和数值稳定性。

因此,想要运行机器学习代码,必须先学习数学知识(数值分析、线性代数、数学建模、概率论/高级统计)以及熟练掌握相关方法(数值和可视化方法)。

实际上,对于这位本科生所面临的挑战,许多科研工作者都有同样的感触:

辛辛苦苦做实验一个月却无法汇报进展,被导师批评;

想要复现一篇论文的代码,结果在解决“代码出错、编译出错、环境不兼容”等问题上耗费了大量时间……

正是因为如此,他们积累了经验,帮助这位本科生找到合适的解决方案。

“感谢大家的帮助。”

在网友的支持下,这位本科生冷静下来,并认真整理了网友们的建议。

他意识到自己崩溃的原因在于缺乏与博士生及其他研究者的沟通,对项目的进行方式不够了解;此外,他也确实缺乏机器学习模型和参数设置的理论基础。

当然,他也明白,自己手中的代码质量确实不高:不仅难以阅读,而且各个模块也非常松散,难以整合。

他决定去找那位博士生沟通,坦白自己遇到的问题。

然而,作为一名本科生,无论是进行毕业设计还是进入实验室,或多或少都会面临与这位“发帖者”相似的困惑。

是否存在快速入门的方法呢?

清华特奖本科生的经验

其实,身为本科生,也有同学已经发表了四篇论文。

这位清华特奖得主高天宇的真实经历中,他的四篇论文均在AI顶会上发表:两篇AAAI, 两篇EMNLP。

对于这些科研成果,他也分享了一些实用的经验,尤其是应对让人感到棘手的“拖延压力”。

高天宇建议,忙碌的同学在高负荷实验期间可以适时切换任务,并记录日常工作,以缓解因拖延带来的心理压力。

此外,他还提出了一条看似反常的建议,就是将事情推到明天。这并不是鼓励拖延,而是让自己跳出一天的忙碌思维,也许明天会有更好的解决方案。

同时,高天宇也建议多与导师及学长学姐沟通:

他们对以往的研究有更深入的了解,也在实验中积累了丰富的经验,可以帮助你避免走很多弯路。

当然,若想加强机器学习的基础理论,高天宇也提供了快速阅读论文的方法:

大多数论文只需看摘要,然后迅速分类。如果觉得有帮助,可以按照以下结构进行分析。

摘要:研究意义(包括前人研究、研究的不足),研究方法,研究结果;简介:主要观点(解决了什么问题);相关工作:文献综述;方法:细节;实验:验证论文的有效性;结论:基本重复摘要。

文献管理工具也是必不可少的。

除了高天宇的个人“秘诀”,NatuRe也曾刊登过关于“本科生进行科研”的相关文章。

NatuRe指出,本科生参与科研项目在顶尖大学中普遍存在。

例如,在MIT,这一比例超过了90%。

从课堂学习到实验室生活,确实是一个巨大的转变。

NatuRe认为,在这个转变过程中,通常会经历三个阶段(并不适用于每个人)。

第一个阶段是“在不理解的情况下从事科研”。

对于刚进入的本科生来说,首先要做什么事情是一个重要问题。

在进行某项实验时,或许并不清楚其背后的原因和本质。

第二个阶段是“在理解的基础上进行科研”。

NatuRe表示,在这种状态下从事科研的学生,往往是实验室希望留住的人才。

他们会在实验室外投入更多时间和精力,去观察实验的局限性,从而培养团队意识。

第三个阶段是“学生研究员”。

在这个阶段,学生会像研究人员一样思考:制定新的问题和假设,规划新的实验以进行测试等。

NatuRe认为,这一阶段的学生对实验室的贡献最大。

此外,NatuRe还提出了一些细节建议,比如时间管理、研究与休息的适度安排、批判性阅读及记录保存习惯等。

最后,作为正在经历此过程或曾经经历过的人,你是否也遇到过类似的问题?