论文复现注意事项
🗾

论文复现注意事项

Property
notion image
一篇论文介绍自己所提出的工作时,往往会对已经有的共识进行省略。以及对创新点和做法进行描述的时候,通常是按照类别进行的,然而,复现论文时,需要知道所有的细节。
例如,假设我并不知道DeepFM是如何实现的,初次阅读DeepFM的文章时,需要先了解embedding是怎么进行的,了解什么是MLP等。并且需要知道DeepFM中各个网络结构的参数是如何设置的,需要输入什么已知的参数,怎么构造embedding的查询字典(id value - index - vector 对应关系字典)。
因此,可以将论文复现总结为以下步骤。

第一步 明确所有流程

如DeepFM模型,可先粗略分为输入数据构造、FM模型构造、Deep模型构造、损失函数确定等几个步骤。

输入数据构造

需要准备好ID信息,使用dict的方式,构建好输入数据,保存好一个所有id特征全部属性的map,使用map来获取每一个id特征的值对应的vector。

FM模型构造

FM本质上是一阶信息与二阶交叉信息的结合,可以实现大部分自动的特征工程操作。因此,可以手动计算每一阶的信息。

Deep模型构造

Deep层本质上是MLP,针对特征的高阶组合信息进行探索。

损失函数

损失函数对于模型而言,等于更新方向,因此选择一个好的损失函数有利于模型学习到好的参数。

第二步 调整数据与建立模型

准备数据,将数据准备为模型可以使用的模式,以及预处理。

类别数据

得到一个所有类别特征的全属性map数据。

连续数据

对连续数据进行标准化、缺失值填充、类型转换等。

建立模型

现在的框架都提供了实现好的层或者块,以供快速调用,并且效果通常比自己实现的要好。但同时,框架也提供了构件级别的API,可以实现从脚手架开始搭建自己的模型。
建议使用脚手架的方式去搭建自己的模型,这样有利于快速拆解和改变模型,加入自己想要的特殊结构等等,进行魔改。

第三步 训练模型并查找参数

显然,自己实现的模型验证时,通常没有论文中的精度,需要手动对参数进行寻优。因此,复现论文时,也不要忘记这一个步骤。