作者:十方 微信公众号:炼丹笔记

(一)你真的会读论文吗?

十方一开始就给大家提了一个非常犀利的问题,这个问题从十方刚开始读论文,就不断问自己了。如果你毫不犹豫的回答了会!那这篇可以跳过了,可以多关注一元写的前沿论文笔记。如果你犹豫了,或者就是想好奇看看十方到底要说啥,那么往下看。

看论文的经典状态如下:

其实,也不会啥都没学会,论文毕竟是英文的,至少提高了英语阅读能力不是。严肃点说,看完论文会有以下几种状态:

  • 看的一知半解,反复看也没看懂,比如BERT的attention到底是怎么算的。
  • 知道了有一个新的模型,解决了什么问题,和其他哪些模型对比,取得了SOTA成绩。
  • 除了以上,详细了解了模型的结构,知道论文为什么这样设计。
  • 除了以上,尝试复现整个模型,或模型的部分,去提高现有模型的泛化能力。
  • 其他状态

你是哪种状态?

先说下看的一知半解的状态,这个对很多初学者而言,是经常出现的情况。先说下为什么会出现这种状态,就像我们在上大学前,会学数学、语文这种基础学科,然后开始接触专业课,看到很多公式就不会茫然。读论文也一样,不是说你可以直接读最新的论文。BERT本质用的是Transformer的Encoder,而预训练的思想,来自很多论文,比如ELMO,GPT。Attention呢?很早在LSTM的encoder-decoder架构中就用到了,其实attention最早是用在cv领域的,就不往下再扩展了,没有这些背景知识,可以说直接看一篇巨佬的论文是没有任何意义的,只是去浪费时间(十方表示也浪费过大量时间)。

再说下第2个状态,这个状态就很有意思了。看论文点到为止,知道有个什么模型,效果很好,解决了问题。然后去github搜复现(比如deepctr就封装的很好),readme写的很清楚,输入数据格式是什么样,直接调用(可能用于比赛),做个愉快的调包侠。其实这个状态是优于上一个状态的,实践是认识发展的动力。比如我们从出生开始,不是先学会文字的语法才去学说话的,十方之前也喜欢看论文去github上找复现代码,去跑跑看。当然,这个状态不能持续太久,在你实践能力很强后,这种状态对你未来而言,就不能有任何提升了。

再说下第3个状态,当你完全能看懂论文,比如transformer,为啥attention要做scale,预训练样本如何构造,transormer在处理不同任务的区别是什么等等细节的时候,这是个非常好的状态,建议大家这个时候,可以好好看看源码,十方看完bert这篇论文的时候,就仔仔细细看完了bert的源码。

最后再说一种状态,这些往往就是大佬了,能够在只有论文,和tensorflow官方文档的情况下,复现论文,或者融合论文中部分模型优化点,去优化现有模型。很多时候可能不需要达到这种状态,看各位需求了。

因为每个人情况不一样,其实还有些其他状态。十方建议大家看完论文,最好总结下,自己究竟学到了什么。非常重要的是,如果你是一个初学者,建议多阅读巨佬的著作,而不是直接看论文,每本书都会介绍很多经典的模型,并给出该模型出自的论文,大家结合着书去翻阅论文,这样效率才是最高的。

(二)到底应该怎么读论文呢?

大家一般看论文的方式,是哪种呢?大多数人喜欢从公众号,知乎,CSDN等去看论文。首先不用面对烦人的英文,其次就是往往公众号等平台中已经把论文的要点,模型的结构做了详细的解读。直接读别人写的论文分享是一种快速阅读论文的方式,但是毕竟作者能力层次不齐(主要是写作能力),可能有时候你没看懂仅仅是作者漏写了部分要点导致的,比如之前就有朋友吐槽过十方写的DR,他直接指出十方没有写模型的上线方式,导致他又去翻论文,问同事。十方看了下确实没写,即使十方十分清楚应该怎么上线,因为十方假定了读者自己在读完分享后能够自己领悟上线方式。所以十方希望大家把公众号的论文分享,尽可能当作一个摘要去看,当你发现一篇论文对你非常重要或者让你非常感兴趣,去读原文吧,一篇一两千字的公众号文章是说不完很多细节的。

(三)关于复现论文

首先说下复现论文是一件非常有意思的事,当你完全领悟一篇论文的各个要点时,每个人都有能力去复现论文,不需要依赖于github的分享,或者等着某个开源平台去开源。为什么要去复现?因为在调用一个开源模型上,你不会比任何人更优秀,毕竟每个人都可以用deepctr。那么为什么比赛很多大佬能拿冠亚呢?我们看很多top方案的时候,发现或多或少都对模型进行了各种调整。如果仅仅把开源当作一个黑盒来用,你就只能在挖特征上努力了,而对于图像,nlp等比赛,给你挖特征的机会并不多。

那么应该怎么复现论文,其实论文中已经教你怎么复现了。我拿最经典的deepfm举例,很多博客或者知乎,都给了这张图:

从这张图,我们都知道FM Layer把每个Fields映射成embedding,然后求点积,最后线性加权。好像很简单,如何复现呢?难道是这样(伪代码):

# 省略FM Layer的bias
def FM_Layer(dense_embs):dot_list = []for i in range(len(dense_embs)):for j in range(i + 1, len(dense_embs)):dot_list.append(dot(dense_embs[i], dense_embs[j]))return dot_list 

这在tensorflow中咋写,还要写两个for循环?论文中给了下式:

熟悉FM模型的肯定能第一时间想到化简公式:

然后,复现就简单了:

class FM_Block(layers.Layer):# better add drop-out after this blockdef __init__(self, **kwargs):super(FM_Block, self).__init__(**kwargs)def build(self,input_shape):# input_shape must be in (None, Fields Num, K)super(FM_Block,self).build(input_shape) # 相当于设置self.built = Truedef call(self, inputs):# sum square part 上图公式第一项summed_features_emb = tf.reduce_sum(inputs, 1)  # None * Ksummed_features_emb_square = tf.square(summed_features_emb)  # None * K# square sum part 上图公式第二项squared_features_emb = tf.square(inputs)squared_sum_features_emb = tf.reduce_sum(squared_features_emb, 1)  # None * K# second order 1/2 (第一项 - 第二项)y_second_order = 0.5 * tf.subtract(self.summed_features_emb_square, self.squared_sum_features_emb)  # None * Kreturn y_second_orderdef get_config(self):config = super(FM_Block, self).get_config()config.update({})return config

看多很多复现代码,你会发现,很多推荐模型相关的代码并不难,有很多复现技巧隐藏在论文公式中。

结语

说了这么多,十方还是希望大家在阅读论文中,能真正学到东西的。十方后面会出一系列“保姆”级的论文复现文章,旨在帮助大家能独立复现很多论文。关注炼丹笔记,加群一起努力学习吧,相信大家都可以从调包侠进化成炼丹侠。


PS:我们的号会在本月中期进行迁移,增加留言功能,如果大家对于炼丹有兴趣的,可以先关注我们的号或者加入我们的群进行进一步探讨,

此外,我们还搞了个知识星球(免费免费免费!),相信有缘人一定可以找到。

weixin.qq.com/r/XSjP1zr (二维码自动识别)

weixin.qq.com/g/AQYAAOt (二维码自动识别)

读不完的顶会Paper,我该如何读论文?相关推荐

  1. 旷厂练习生 Vol.15 | CV 小白在旷视 4 个月就能写顶会 paper?来听听机甲大师 Albert 的故事!...

    练习生档案  姓名:Albert 所属:Transformer 组 背景:本科哈尔滨工业大学. M.Phil 香港科技大学 竞赛:全国大学生机器人大赛 RoboMaster 一等奖. 2020ICRA ...

  2. 顶会paper越来越多,我该怎么看?

    视学算法转载 作者:王晋东 顶会论文越来越多,如何阅读?中国科学院大学计算机应用技术博士王晋东给出了一些建议. 近年来,作为学术前沿研究的风向标的顶会接收的论文越来越多.例如,最近放榜的 NeurIP ...

  3. 北理工硕士生「一字不差」抄袭顶会投稿,网友:买论文被忽悠了?

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨机器之心 编辑丨极市平台 导读 竟然如此明目张胆,一字不差地抄 ...

  4. 围观RecSys2020 | 推荐系统顶会说了啥?(附论文打包下载)

    RecSys2020主页:RecSys – ACM Recommender Systems(https://recsys.acm.org/) 本文整理了RecSys2020的文章,其中包括41篇Lon ...

  5. 天庭最牛系统 推荐下载_围观RecSys2020 | 推荐系统顶会说了啥?(附论文打包下载)...

    RecSys2020主页:RecSys – ACM Recommender Systems(https://recsys.acm.org/) 小编整理了RecSys2020的文章,其中包括41篇Lon ...

  6. Paper Pal:一个中英文论文及其代码大数据搜索平台

    点击上方蓝字关注我们 Paper Pal:一个中英文论文及其代码大数据搜索平台 余万, 付聿炜, 熊贇, 朱扬勇 1 引言 在开展科研工作的过程中,科研人员需要从大量实时更新的论文中持续地跟踪学术界前 ...

  7. 不完全性定理 元数学和自然数_开读哥德尔原著第一章——哥德尔读后之十

    不完全性定理 元数学和自然数_开读哥德尔原著第一章--哥德尔读后之十 把R.B.B的导论弄完,终于轮到读哥德尔原著的英译文本了,今天开读原著的第一章.R.B.B的导言给了人很多哥德尔定理的背景知识,但 ...

  8. How to Write and Publish a Scientific Paper: 7th Edition(科技论文写作与发表教程)(11.04更新)...

    How to Write and Publish a Scientific Paper: 7th Edition(科技论文写作与发表教程)(11.04更新) 重要通知: 最近开题报告已差不多告一段落, ...

  9. @propertysource 读不到properties_敢不敢来挑战,读对一班就是学霸

    点击蓝字关注我们 被人读错名字,伤自尊! 读错别人的名字,很尴尬! 然而,你有没有考虑过? 地名也是有尊严的! TA们,也不想被读错! 我们为大家精心整理了各省.市.区 最容易读错的100多个地名, ...

最新文章

  1. 为什么LINKBUTTON不能插在LTEMTEMPLATE里???
  2. iOS开发-63】Unknown type name CGRect,did you mean Rect?的解决方案
  3. PSIM软件中 Simplified C Block模块 和 C Block模块区别
  4. windows c语言 http 状态检测_从软件架构说C语言
  5. 显示器不能全屏及开机慢解决方案
  6. [LeetCode]题解(python):146-LRU Cache
  7. 使用ActivityGroup来切换Activity和Layout,android入门开发与实战
  8. Svn分支管理的使用(三)
  9. OpenCore黑苹果引导配置说明-基于OpenCore-0.7.1-07-06正式版
  10. 如何修复uefi引导?这种方法才是最有效的解决方法
  11. 向日葵远程调用Visual studio2019时白屏透明黑屏解决方案
  12. SecureCRT配置自动保存日志(实用)
  13. 计算机专业硕士在职联考,计算机在职研究生可以选择一月联考的方式吗
  14. MySQL数素数_素数个数-欧拉筛法
  15. 计算机教室布置软木,软木照片墙布置,让孩子体验手工的乐趣
  16. 【Linux】exec()系列函数——execl(),execlp(),execle()等的区别
  17. QQ 引流引发的灰色地带产业
  18. 单引号,双引号,三引号的区别
  19. css布局的基本思想,流行的CSS思想之——浅析OOCSS
  20. 【HTCVR】VRTK插件案例分析之0021~030

热门文章

  1. 添加gitignore文件后使其生效
  2. VC++6.0中不兼容问题
  3. PHP二维数组排序函数
  4. Oracle 分类统计sql
  5. java学习论坛汇总
  6. Origin Pro轻松绘制小提琴图
  7. Vs code自动生成Doxygen格式注释
  8. 服务器中显示存储设备,服务器节点信息集中显示方法、系统、设备及存储介质...
  9. simulink中from与goto模块的使用
  10. Spring Boot程序无法加载主类解决方法