昨天提交了我真正意义上第一篇科研论文。这个项目大概去年十月份开始接触,十二月开始调研,接着遇上了考试月就放了放,然后本打算过年两周看看的,未果(我竟然还对放假能干正式抱有幻想。。)。寒假结束二月下旬开始全力做,本来打算投5月中下旬的NIPS,但是实在是进度赶不上,于是便改投了ICDM。

一路走来踩坑无数,想想还是复盘一下作为教训吧。没啥结构,想到哪儿算哪儿吧:

  • 尽早开始接触数据写代码,不要在前期投入太多时间作为调研。 当然充分的调研是很重要的,尤其是你是第一次做该领域的工作时,需要看大量的文献。但是实践起来我发现在一开始就读太多的相关工作反而可能会有一些副作用,比如离数据太远无法充分理解问题,看的太杂迷失方向,或者是太容易受其他工作的影响而想不出一些很新的主义。 对问题的认识肯定是螺旋上升的,尽早开始写第一份代码也有助于之后调研的方向。
  • 设计实验的时候一定要带有目的,不能仅仅看着对标的工作做什么实验。思考你的工作的特点和长处,设计出能够凸显这种特点的实验。
  • 论文初稿写作时不要太在于语法和文法,先着重于捋顺逻辑。语法错误其实比较好改出来,也有一些自动化的软件可以做,也可以让学长等等帮你看看(自己看不容易发现错误,毕竟是自己写的)。
  • 调研的时候就要开始注意其他论文的表述,其中两点,一个是写的出彩的文字可以摘下来仿写,另一个是它提及自己论文特点的表述,可以摘下来整理好,这样写相关工作这段的时候会方便很多,甚至不用去看原论文。
  • 代码方面,比较难的一点是保持代码质量。 往往项目刚开始的时候代码质量都比较高,注释命名等等都很注意,但是越到后期质量越差。这点可能难以完全避免,但是还是要注意要有下限。一个比较好的方法是写第一版代码时就思考构建一个抽象层级较高的框架,避免之后太多的改动。
  • 代码管理上要注意一下,使用git时commit的划分要有意义,不要把不同目的的改动放到同一个commit里面,这样能有限避免想回退到之前一版模型时发生不愉快的问题。哪怕commit分的细一点,细一点以后稳定了还可以合并。
  • 不要闭门造车,多和其他人交流交流,同时关注这个问题领域最新的进展,看看有没有什么启发。
  • 适当研究一下你目标会议的论文的风格,不同会议上文字/任务的风格都有些不同。以贴合你目标会议的风格去写。这次因为本来要投NIPS,所以论文的结构和论述都找了NIPS一篇相关工作对标,但是和数据挖掘的会议还是有挺多不同,师兄帮我改的时候也吐槽过。