DRAFT

本讲主题

每篇论文的讲者已确定

Research Proposal 作业已发布

如何读论文

  • why
  • what
  • how

怎样做报告 (马骏)

Why and What

为什么要读论文?

想要做一点什么牛逼的工作?

  • 如果你想做的事情真的那么重要
    • 99.9% 可能有人尝试过了
    • 标准的方法:以 peer-reviewed 论文的方式展示给大/小同行

民科 vs. 科学家

  • 民科
    • 只使用自己的体系
      • 不试图理解 “别人已经做了什么”,还希望别人接受
      • “not even wrong”
  • 科学家
    • 使用整个 research community 的通用语言 (论文)
      • 论文 = 得到同行的认可的研究贡献

什么是论文?

A piece of work that teaches the research community something


  1. 观察、现象与问题
  2. 解释与分析
    • argue (通过合理的论证和证据让人信服)
    • defense (在容易产生误解的地方进行解释)
    • 忽悠 (避重就轻/混淆视听) 这是学术不端!
  3. 解决方法与工具
    • 软件工程主要关注 “生产代码”
    • 需要一定的证据表面提出的方法是有效的

How

基本原则:读论文 $\ne$ “读” 论文

你的导师通常会给你一些论文

  • 可能和你做的课题最相关
  • 但也很可能不是你最需要的
  • 这些论文是你的种子

从种子出发

  • 主要:正向/反向引用/关键词变换 (Google Scholar)
  • 辅助:演讲视频 + 公开课 + 教科书 + 科普读物
    • 本课程阅读论文 (大部分) 只需 CS 基础教科书知识
    • 但一个 PhD 可能需要 100-500 篇达到收敛

建议 1: 承认自己不行,去补基础知识

新手常见问题:我每一个词都认识了,但我依然不知道论文在表达什么。

论文是 “新知识” 的载体

  • 几乎所有的论文都是 incremental 的
    • 主要功能是描述 incremental 的部分

例子:FlashFill (POPL'11)

(硬上 = 失败)

问题出在哪?

你的背景知识不足

  • “我们使用二分图的最大权匹配算法分配大家 bid 的论文……”
    • 在座的各位:OK
    • 路人:纳尼???

论文假设了读者具有一定的数理逻辑/PL 基础知识

  • 阅读合适的教科书/讲义/课件可以快速理解
  • 你不需要知道 version space algebra 就可以读懂这篇论文
    • 但如果你知道,你会读得非常轻松……

问题出在哪?

因为你菜啊!

  • 后悔本科的时候上了水课,混了成绩,没有真正学懂
    • 学就对了
    • 也要意识到 “从头开始补” 可能是来不及的
      • 必须要安排知识补充的优先级

进入状态以后

  • 迅速找到并补齐需要的基础知识
    • related work
    • youtube 公开课/演讲
    • ……

建议 2: 尝试拒绝作者的思路

如果问题特别新颖

  • 问自己
    • “为什么我没想到这个问题?”
    • “我的知识结构是否可以自然地想到这个问题?”

如果问题很平常

  • 问自己
    • “解决问题的突破口自己是否知道?”
    • “如果自己设计一个方法,会是怎样的?”
    • “为什么作者能想到这么巧妙的解法?”

必读:Advice to a beginning graduate student by Manuel Blum

建议 3: 只读真正的好论文

不好的论文会降低你的品味

  • 例如,接受 “trivial 的世界观”
  • 这就是我为什么反对许畅讨论自己组里的论文
    • what a piece of junk?

如果你在一个没有人 care about 的小领域

  • 可能因为种种原因容易 publish
  • 但你必须扩大阅读面