暑假协助实验室的师兄做论文工作,大概干了两周,DDL8月2日,属实感受到了要做出一篇像样的工作的难度。过程中出现了很多重复劳动的地方,也有很多值得反思之处,我也深刻体会到了各种繁杂的事情扑面而来时内心的压力和紧张。
我在其中主要负责复现3篇文章,一篇21年单模态的论文,两篇25年AAAI的多模态论文,后续也负责各种画图和跑实验分析的工作。在整个实验过程中,我有一些体会,希望写下来为后面自己的工作作参考。
关于复现
AI相关论文的复现最好需要基于作者原有的代码进行。AI的论文,分为代码闭源和代码开源。
- 对于闭源的,如果不是和自己工作高度相关或者没有具有稀有性和必要性,就不要选这篇工作当我们的Baseline了,后续复现的效果很有可能一落千丈,也有可能太好。
- 对于开源的,我们尽量就找这类文章。开源的大部分情况下都是可复现可运行的,只要环境不是太老基本都能复现。复现时我们需要保证数据集的相同,有时候数据集和他们的数据集根本不适配,就需要将他们的模型套过来,更难的时候是还需要修改他们的模型(减少某个输入),我这篇工作就是这样,因为复现的论文是适配3模态的,而我们是双模态的,所以需要对整个模型结构做修改,但还需要保证模型结构和论文方法是一致的。
复现的时候有些体会,出了各种各样的bug,我不断解决过来,也修改了很多地方。感觉主要在几点:
- 在修改代码的时候,最好做好日志管理功能(如Git的修改显示),训练日志的生成最好不要覆盖,多次训练不受影响。
- 如果需要添加自己的评估方法或者其他代码,注意代码的可复用性和良好结构,如果后面需要重新用这些方法,可以快速迁移。
- 对于比较完整的版本,如修改了那些功能,添加了哪些功能,做好日志的管理,哪个日志对应哪次实验
关于AI
后续我进行了大部分的模态对齐分析的实验以及对应的画图分析,涉及到大量的代码编写,一个文件基本都是四五六百行,如果没有AI,这样的工作将让我寸步难行。这些代码大部分是工程性质的,主要聚焦于功能实现,我用的AI有ChatGPT、Grok 3、Gemini 2.5Pro、Claude Pro,国外的AI相比于国内的指令遵循能力更强,而且代码编写能力要高不少,需要改代码的地方很少。
现在是一个AI时代,以后AI参与生产生活的频率将会越来越高,在学习中,如何使用AI辅助工作也需要成为一个自我学习的方向。用AI不代表自己能力很差,可能会用AI才更能在这个AI频现的时代脱颖而出,应该拥抱AI。
关于画图
科研画图是一个频繁迭代的过程,一定需要注意把数据提前保存下来,不然后面每次微调图片都需要跑一次数据,这样会很拖延时间。这次赶论文的时候,我每次跑数据都要十几分钟,太慢了,后面才意识到这个问题,提前把数据保存下来,但还是浪费了很长时间。事实证明提前保存的策略是有效的,在临截止时,我们的图片需要进行修改,添加各种注释,如果没有提前保存下来的数据,根本没办法一点点调整验证。