一、论文调研
快速调研完近年来相关方向的主要论文,每篇文章了解思路,并做记录和摘要,形成充足的paper list方便回忆和整理related work。
二、方向明确
不管实现细节,主体脉络上把握好要朝什么方向走,要通过哪类技术实现什么具体目标(要通过引入 知识图谱/强化学习/多任务学习/语法解析 的手段,实现 XXX数据集/任务的提升 )。
三、论文精读
1、仔细研读目标技术所需技术的论文,是否有人做过?是否可做?有没有坑?
2、精读选定最主要的参考范文,并由此出发思考如何在自己任务下,用好,创新,改进这项技术。
3、找老师或高年级学生讨论路线的价值和可行性。
四、数据准备(重要教训)
对于现成的公开数据集,采样好数个小规模子集,划分 训练/开发/测试集,用于快速实验。
对于需要自己收集数据的任务,要耐心做好标记,清洗,否则实验可能白做。
如果要跑多折交叉验证,也要提前划分好,固定不动。
五、重要baseline复现
从精读的论文中,选取一个效果好的,重要的,开源的论文进行复现。
目的:
-
通过复现,深入理解论文细节
-
复现的代码可能是自己方法的一个基础,包括代码实现基础和算法基础。
-
对比自己方法是否成功的重要指标
六、实验对比前的准备(吃了大亏)
-
固定随机种子,验证模型是否具有可复现性
-
固定实验环境,实验工具,API
-
实验指标代码校对无误。
-
实验结果输出代码,结果文件格式统一固定。
七、方法快速迭代
-
用极少的cases,快速调通,debug自己代码
-
用划分好的小规模数据子集,快速实验自己的模型对比baseline是否有显著变化。是否多个小数据集都能一致反应这一点。
-
如果多次实验发现并不能work,尽快在同一个方向上转变思路重新设计(做好代码版本管理)。无数次改进后,论文最初的方法设计和最终成型的论文会完全不同,但实现的大体方向不变。
八、标准实验方案制定
当小规模数据上能反应出效果后,与老师制定明确的实验方案细节。
-
我想写到论文里的贡献有哪几点?
-
要做哪几个实验逐个验证我的每一个贡献?
九、正式实验注意事项
千言万语,最重要的是避免重复实验!!!
-
实验结果和模型保留,实验过程记录详细。结果的文件名清晰能理解。
-
配置参数的代码尽可能简洁,避免配错参数。
-
调参空间尽可能小。