type
Post
status
Published
date
Mar 31, 2023
slug
Student Skill 阅读笔记分享
summary
关于GOODLAB主页中的For Student的一些文章、视频的阅读分享。
tags
文字
思考
category
学习思考
icon
分享作者:GOODLAB(20级本科生)陈科

什么是For Student?

这是Generic Operational and Optimal Data Group主页的中提供的学习资料,教授你一些大学不会传授的东西,具体链接参考如下:GOOD For Students

我为何开始阅读实验室的For Student?

我在大三下(2023年初)的时候,我开始思考自身的问题,我发现不清楚如何去写一篇好的文章(意味着我很难与别人交流清楚),并且我对研究生生活、未来的科研感到迷茫。
正好当时徐老师也分享了几篇里面相关的内容,比如:Writing Perfect Papers以及The Beginner's Creed。我认为我能从中获得解决许多疑惑,比如:如何阅读论文(文章)、如何写论文(文章)、为什么要读论文(文章)、为什么要写论文(文章)、如何开启一件事?从中我或多或少获取了一些答案。
之后,每当自己有学习疑惑时,我就会去阅读一下,发现遇到的问题,大概率里面都有提到。

阅读内容(持续更新)

基本内容

英文具体链接参考:GOOD For Students
中文翻译:
1、你是否真正想要读博士,博士意味着什么? 2、初学者的信条 3、你和你的研究 4、博士研究:卓越要素 5、如何在研究生院取得成功 6、如何在研究/学术界有一个糟糕的职业生涯 7、管理你的博士生涯 8、如何阅读论文 9、如何在计算机科学研究中寻找想法 10、数学写作的十个简单规则 11、数学写作 12、写出完美的论文 13、演讲的艺术 14、最后一课:实现你儿时的梦想 15、时间管理
当然,上述内容也是参考SNAIL For Students,该链接更多包含:
16、信息时代的推动者 17、如何选择(研究)项目【第 1 部分:提出研究思路】【第 2 部分:组织和评估研究思路】 18、风格元素 19、风格:清晰和优雅的课程 20、写作评论日志

阅读流程

首先,我可能希望学习如何进行写一篇完美的论文,我认为它不仅仅讲述如何撰写一篇完成的论文,它所讲述的写作方法与规则,对于我写如何的文章都有帮助。
开始阅读第十三条,学习与写文章相关的内容:
Writing Perfect Papers (Baochun Li)

Motivation

我希望通过阅读这个视频,能够学会一些写作的技巧,需要注意一些什么东西,有利用我之后写文章、比赛论文、实验室周报、甚至是发表论文有帮助。

Body

The first idea is: Perfect papers — they don’t even exist in the world.
But let’s try our best today.
The have the two portions: Writing perfect papers and Writing good papers fast!

Story

How do I make a great movie?

A great movie starts from a powerful and convincing story.

A great app starts from a tasteful design.


Three essential elements of a great story.

My solution, My math proofs, My simulation results?
Not really.
This it try to show is not like I am very smart, I’m smarter than you think, or the thing actually works.
Your paper is not really the vest place to show your theoretical prowess.
It’s about advancing the state-of-the-art.
The problem (what are we solving?), What’s new (what’s really new in your contribution as compared to related work?), How is it better? (how is your contribution better than the state-of-the-art in the related work?)

The problem

Doesn’t have to be something “trendy”.

That’s a good idea, that’s a good starting point, but it doesn’t have to be something trendy.

But it has to be something you really enjoy working on.

The “trend” may not last forever.
P2P model, something it goes down, but something iit goes up in the 20 years.
Timing you can never get right, if you follow the trend.

Following the trend may lead to more “incremental” results — less exciting and less important

Be a contrarian and work against the trend

someone who is working against the trend. When someone is working on a very hot trendy topic, I’m going to work on something that is not that trendy.

In fact, a recent 2017 paper, titled “BBR: Congestion-based Congestion Control” brought congestion control in the general case back to the spotlight.

So, be a contrarian and working against the trend may be a good idea.

enjoy, trendy topic.

What’s new

In the context of what’s already done in the related work, what’s new in your work?

First, briefly introduce the state-of-the-art in the literature, solving the same problem you wish to solve.

what is the particular state-of-the-art paper that we have?

Then write about what is new in your work that is different from previous work.

talk about what we did, not always talk about what they did.

If the problem is different from previous work — different assumptions, for example — provide justifications why this is important and necessary.

not exactly the same problem?
If the case, you probably cannot directly compare with the state-of-the-art, because problem is slightly different.
you need to do is to provide sufficient justifications on why you slightly different problem is really important, probably it is more practical as compared to the state-of-the-art and really necessary.
This is the first paper talking about solving this particular problem. And if it’s really important, try to justify that.

How is it better?

Now that your ideas are new, they should also lead to better results than before.

Is not just different, but also have better results.

Show how your solution is better than previous work: such as stronger theoretical properties or better experimental results

force more on originality, they talked about “my original contributions,” this is really something that is new. But you cannot be just new, you have to be better as well.

The hard work

Two thing that you must do

Reading and Writing

you also need to read and write, and read and write, in more of a interactive way.
read a little bit, and write a little bit.

Read — Goal: become a expert on the problem

Read — But how?

How do we become an expert in this particular area of research?

Read — Start from one paper

So which paper should we start from?

Read — Perhaps a highly cited seminal paper

in this area of research on this particular topic, sometimes we call it a seminal paper.
maybe they is the sort of like a survey paper, or maybe this is the most recent paper, or randomly downloaded from the web by searching for this particular keyword.
Just start from a particular paper.

Read — Then do an expended-ring search.

Do an expended-ring search from the single paper.
expended-ring is mean the BFS.

Read — Papers that cited this paper

Read — Papers that it cited

go to the references.

Read — Papers authored by the same researchers

Find the papers that are written by exactly the same set of authors.
Go for the papers that are in the same conference, or the same session.

Read — Try not depend only on a search engine

The search engine will give you some random hits, that might be helpful when you get started, but it may not be very helpful because it’s not exactly very comprehensive.

Read — To many, you need to do two thing

One is you need to narrow down on the actual problem that you wish to solve, so all you need to be proficient or be an expert on, would be just one tiny slice of particular research topic.
Just one problem, so there may not be too many problem papers on that very single problem. Very tiny little problem.
But the second possibility of solving the problem of having too many papers is that you need to read quickly.

Read — Read quickly first

You cannot spend many hours reading these papers, you have to spend a very small period of time.
especially if it’s the first time you read this paper. Just grab the paper and read it over a coffee. And that means that you are going to have to read it in 10 minutes, 20 minutes, you should not be spending more time than that to quickly scan through this paper.

Read — Read more carefully if necessary later

And then, of course, if you really like this paper and this paper is really very closely related to what you wanted to do, then you can read more carefully if that is necessary.
That is mean you can spend more time, of course, and that’s okay because now, at this particular moment, you don’t have too many papers.
A lot of papers very quickly, but very small number of papers more carefully.
Give you a lot of depth when you actually read a very small number of papers carefully, and a lot of breadth in the sense that you will never miss a very important paper.

Read — Try to have an interactive way between the two tasks: reading and writing


Write — Write about what you understood

Write anywhere, if you spend 10 min or 20 min or sometime to read a paper.

Write — Write every day

You need to write early, write every day.
You are going to write just two sentences, that’s fine, that’s writing. Two sentences would be good enough.
You have to write every day.
You have to write very very early.
idea → do research → write a paper(two months later, or five months later)? That is wrong.
Writing itself is a part of doing research.
idea → write a paper → do research. The writing process is the process of doing research.

Write — If I don’t have a idea, what do I write about?

There are nothing I can write about.

Write — You write anyway

Write — Write about related work

That you can write because you have been reading papers, right?
You can write about what have you read.

Write — Write about what’s challenging

What’s really hard? Something’s really hard — probably related papers have not even solved completely.
That is a new idea that you are having in you mind when you are reading other people’s paper.

Write — Write about why the problem is important

You need to try to thing about the problem, and say, okay maybe this problem is important, and we wanted to write about it.
You might say, oh, other people have already talked about it!
Well think about it yourself, write about why this problem is important without copying and pasting from the other papers.
In the further, you will see some papers are really mediocre.

Write — Write about what needs to be fixed

That’s something you can write about.

Write — Write a survey paper

So you can write a survey paper, essentially you are basically collecting all of the ideas and you put them all in the paper.
So you’ve been writing a paragraph or two paragraphs a day, and you put them all together a week later or a month later, you have a paper.
So, that is a survey paper that has nothing to do with original research, it is basically just summarizing existing papers. But that would be a paper that you can submit for publication.
In fact, many people did and a lot of these survey papers got very well cited.

Write — Write about what’s new in the context of related work

So, we want to write as we read.
That would be something that goes back to our three essential elements, the problem, what’s new, how is it better?
When we are reading, we’re reading these related papers, and when we’re writing, we’re writing about what’s challenging, what’s really something that needs to be fixed. And now, we come to an original idea, what’s really new, what can we do that is different or better than existing papers.
We have something a little bit more substantial to write about. We have better idea when we actually write about the more mundane ideas of what’s challenging and what might be a problem that needs to be fixed.
So that is the process of creating something new.

Write — Creating ideas interacts with writing closely

Write — Writing a the best way to force yourself to think clearly and be focused on what you really want to do.

When you’re reading, you are just consuming things.

Write — and to crystallize what you don’t quite understand yet.

You use the writing process to crystallize what you don’t quite understand yet.
And that crystallization is very important, you previously have a vague idea if you don’t write, you roughly speaking know what you know about, what you may be able to create, when you start to write, you make it much clearer because you kind of try to crystallize it.

Write — Writing also open a dialogue

A dialogue is something that really is important for the creative process. Because a dialogue is a dialogue with someone else.

Write — For others to read what you wrote

If you don’t write, nobody can read your mind.
If you have written even just two paragraphs, people can read what you wrote, but that would be very important to stimulate discussions.

Write — To stimulate discussions with others

If you don’t really have some kind of a common ground, some kind of a common understanding, with the other people, there’s nothing that you can discuss.
This is actually why you use writing to bootstrap the process, to bootstrap the discussions that you have with your colleagues, with your advisor, with anybody that you know very well, probably people working in the same area, or probably people that may not be working in the same area.
You want to read not only for yourself, but also for opening up a dialogue, so you need to write for your readers.

Write — That’s why writing is a slow and painful process

you’re creating something new, that’s going to be slow.
When I was writing, I’ve basically written the entire five paragraphs, and I will just call it a day, and it took two hours.
When he is writing, he’s actually writing one paragraph at a time. So he’s writing one paragraph. And he is trying to change it, and change it, and tweak it a little bit more, and try to write very very slowly.
So no matter what, it is going to be very very slow.
Use the entire evening.
But no matter what, it's not going to be a fast.

Write — Write in a crystal clear way

由于你是写给你的读者,因此你需要写的一清二楚。

Write — Write about one problem and one (potential) solution

如果你想写一个问题,你需要写清楚你的问题是什么以及认为可能存在的解决方案。

Write — Write with a flow of ideas that’s easy to follow

This is something that is really something that you want to write to work for your readers.

Write — Keep your readers engaged throughout the paper

Slow and painful process

Write — Write your paper so that it’s as easy to understand as absolutely possible

Write — Your readers don’t have to work hard

Write — Write your paper slowly, so that your readers can read quickly

Once we have written some kind of a draft, we can submit the survey paper, we can also try to ask a colleague or advisor to actually try to read what we had written.

The art

So now we have putting the hard work. We have an idea. It might be quite a good idea but how do I actually find a right actual paper. The survey paper anymore this is the actual paper. So we want to pay attention to the title, abstract, introduction, and flow of ideas.

Art — Pay attention to the title, abstract, introduction, and flow of ideas

Different papers are completely different, which means that it’s going to be very tough to talk about the rest of the paper but there are Something that we can talk about today.
不同的文件完全不同,这意味着要讨论文件的其余部分将非常困难,但今天我们可以讨论一些事情。

Title: 2 lines, 10,000 readers

Abstract: 10 lines, 1,000 readers

Introduction: 100 lines, 100 readers

The rest of the paper: 1,000 lines, 10 readers

你需要写的每个部分都足够吸引,以至于读者能够一直读下去。

Title — What’s a good title?

Title — It attracts a reader to read the abstract.

Title — It reflects the essence of the new idea.

Title — Maybe It is as simple as possible

does not have to be a precise summary of the paper.
does not need to include all the keywords.

Title — The best title is one that is the easiest to understand at a glance

Let’s say we have a new idea that uses a new coding technique to reduce the latency when delivering data over the Internet.
Which title is the best?
  • LLRC: A Low-Latency Rate-Controlled System for Fast Data Delivery over the Internet
  • Code Information Distribution: New Content-Delivery Protocols for the Internet
  • Coding Reduces Latency over the Internet
all three titles are good titles.
would personally prefer the 3nd title.
Really gives you a sense of What’s going on. It ‘s Certainly more General it doesn’t talk about You know the specific idea that you have in your paper.
Give the general direction what’s going on.
S.U.Stich. “Local SGD Converges Fast and Communicates Little”, Int’l Conference on Learning Representations (ICLR) 2019.
The title is perfect.
Which title is the best?
  • Extended Deferred Acceptance: Interference-Free Matching between Spectrum Buyers and Sellers.
  • Stable Matching for Wireless Spectrum Markets
  • Spectrum Matching
可能依旧不是选第二个,而是第三个。第二个是一个好标题,他足够短并且能够去讲述了背景和解决方法。第三个可能有点冒险,因为它太短了。可能它毫无意义,但在另一方面,他可能吸引人们去了解它,有些神秘的标题。
A co-authored paper in 2016 titled “Spectrum Matching” — so though it’s a bit risky, it can work out.
所以虽然有点冒险,但它可以解决。并且保存神秘,以至于读者能够感兴趣,从而往下读。

Abstract — The abstract is very important tool to attract readers to read the introduction

Abstract — Again, it conveys essential information about the paper

Abstract — Remember the three essential elements

The problem
What’s new?
How is it better?

Abstract — Atypical structure

One sentence to state the background.
One sentence to state what the problem is
Two to four sentences to state the original contributions in the paper — what’s new?
One sentence to state how the solution is better, validated using analyses, simulations, or experiments.

Here is an abstract from one of my co-authored papers

We will use this as our running example throughout this talk

It’s title: “Oruta: Privacy-Preserving Public Auditing for Shared Data in the Cloud
It currently has the highest number of citations in all the papers I co-authored.
So let’s take a look at how it’s written.
notion image
背景:借助云存储服务,数据不仅存储在云端,而且还可以在多个用户之间共享是司空见惯的事情。 然而,对此类共享数据进行公共审计——同时保护数据和身份隐私——仍然是一个公开的挑战。
notion image
Overview
Highlights
Highlights
Additional features
notion image
Validation by experiments

The introduction

 

Summary

How to read paper?

Read — Goal: become a expert on the problem

快速找到一篇相关问题的文章(最好是被高度引用的)。
接着,可以进行广度搜索,比如:
  • 引用或者被引用的相关文章
  • 同一个作者的相关文章、或者说同一会议的相关文章。
注意不要太依赖于搜索引擎了,根据上述的相关链接去寻找可能更有效果。
当你认为论文很多,需要从这几个点去思考:
  • 你需要缩小你希望解决的实际问题的范围,所以你需要精通或成为专家,只是特定研究主题的一小部分,从而将缩小论文数量。
  • 你不能花很多的时间去阅读它,你必须花很短的时间(特别是在第一次阅读的时候)。这意味着你将不得不在 10 分钟、20 分钟内阅读它,你不应该花比这更多的时间来快速浏览这篇论文。
如果你在第一次广泛阅读之后,你很喜欢这篇文章,可以考虑后续花更多时间去完成第二次阅读,即仔细阅读它。
当您实际上仔细阅读极少数论文时,会给您很多深度,而在您永远不会错过一篇非常重要的论文的意义上,会给您很大的广度

How to write?

Write — Write about what you understood

你需要每天写,如果你有研究的想法,你不应该直接去做研究、跑代码。首先你应该写下来想法、思路。写也是做研究的过程。
如果你没有想法,仅仅是有一些感兴趣的领域或者问题,根据你目前阅读文章,你可以写下来你所读到的东西。比如:
  • 其中的主要挑战是什么?
  • 为什么这个问题是重要的呢?
  • 还有什么需要解决、待解决的问题吗?
每天写一两段,一周或一月之后,可能你就可以完成一篇与原始研究无关的调查论文,它基本上只是对现有论文的总结。 但那将是您可以提交发表的论文。
现在,我们有一些更实质性的东西要写。 当我们真正写出关于什么具有挑战性以及什么可能是需要解决的问题现有的想法时,我们会有更好的想法。如果你没有写,只是读的话,你将很难有一些新的东西
写作能够让你集中注意力去思考一件事情,并且能够通过具现化来帮助你理解你之前不理解的东西
写作也是一种对话,通过写作能够更好的让别人理解你的想法、你的思考,并且通过写作与别人进行同步思想,这也意味着你需要不仅仅写给你自己读,还需要考虑你读者。
写作是一个很慢和痛苦的过程。你需要写给你的读者,因此你需要写得一清二楚,如果你想写一个重点,或者说你只想写一个问题,那么你想解决的问题是什么你有什么潜在的解决方案。为了能够将你的想法传递给你的读者,你需要用易于理解的思路来写作。 当您的读者阅读您的论文时,他们必须在整篇论文中保持参与。换句话来说,你需要写的很慢、很痛苦,以至于你的文章能够写的尽可能更容易去理解
一旦我们写了某种草稿,我们就可以提交所写的文章,我们也可以尝试请同事或顾问实际阅读我们所写的内容。
接下来,我将学习一下,如何进行时间管理:
Randy Pausch Lecture: Time Management
Carnegie Mellon: www.cmu.edu/multimedia.
That's very kind but never tip the waiter before the meal arrives.

This is a very pragmatic lecture

 

How to set goals

 

How to avoid wasting time

How to deal with you boss

 
我发现我自己没啥好的研究想法,我希望学习一下如何获得一个好的想法:
How to Look for Ideas in Computer Science Research
 
参考链接:How to Look for Ideas in Computer Science Research, Prof. Zhiyun Qian, University of California, Riverside
对于目前的一般情况来说:
1、你很幸运(或不幸)在一个超级高效的团队中,在这个团队中,你会收到很多想法——当你与初级教师一起工作时,这种情况经常发生(当然也有例外)。
2、你在一个成熟的小组中,你的导师不再给学生具体的工作想法。 相反,他们可能会做的是给出一个非常高层次的方向以及一些相关的论文。 这就是你想出一个研究想法所需要的全部工作。
如果您属于第一种类型的小组,那么开始您的第一个研究项目并完成整个过程显然很棒,除了你实际上并没有从头到尾经历整个过程。你躲过了研究过程中的最难的部分,找到一个好的研究idea。
是的,由于您的导师(或博士后或高级研究生)的想法选择和制定您确实获得了较早的出版物,并且可能是非常好的出版物
但是,您失去了接受培训以独立找到自己的想法的机会,而这是博士的一项关键技能。 我发现自己作为顾问也有罪,例如,通过完成发现漏洞的困难部分并让学生执行其余部分
如果您属于第二种类型的群体,则可能成败攸关要么你想出了一个好主意,要么浪费了你博士学位的头一两年意识到它不会有任何进展并决定退出。当我是博士的时候。学生,我亲眼目睹了主要是第二类群体的辍学率约为 50%。在任何一种类型的小组(或介于两者之间的任何小组)中,您都希望尽早开始寻找研究想法的培训过程。否则,我认为这是一个很大的缺陷,可能会在你毕业后对你的未来造成重大伤害,例如,你可能很难作为学术界的教授或工业界的研究员独立领导一个研究项目。以下是我认为有用的一些提示:

Tip 1: Learn to read papers and develop your taste(学习阅读论文并培养你的品味)

想法不会凭空出现。产生新想法的最常见方法之一是阅读其他论文获得灵感。特别注意相关的研讨会课程,您可以在这些课程中开始阅读大量论文。很可能你还需要写纸质回复来表达你的意见、批评和任何建设性的想法。一开始每节课每周阅读 3-4 篇论文可能会让人不知所措(当我还是学生时,我在同一学期上了两门这样的课)。挂在那里。一个常见的误解是,您必须了解论文的*所有*技术细节才能考虑完成工作。不,这既不是主要目标,也不是有效利用您的时间!在这样的课堂上,它实际上是一个学习欣赏批评研究思想的过程,例如,为什么一篇论文是好是坏是什么造就了一篇有趣的论文你不必阅读论文的每一个细节来回答这些问题。实际上有很多关于如何阅读研究论文的有用文章。例如,如何阅读 S. Keshav 的论文。
更重要的是,找到你最感兴趣的论文类型并问问自己为什么。以网络安全领域为例,它是如此广泛,我什至无法捕捉到所有内容。 从研究领域来看,任何计算机领域,如操作系统、网络协议,或者任何软硬件,都有其对应的“游戏规则”和“安全威胁”可以研究。而人,往往是最薄弱的环节,也在网络安全中发挥着重要作用。就研究风格而言,它们的范围从新颖的攻击和利用技术、新兴系统或算法的分析,到防御、测量等等。另一个维度是论文中使用的研究技术:人工分析、逆向工程、程序分析、形式化方法、基于硬件的系统设计、机器学习和人工智能等数据驱动方法。
找到您最喜欢的论文类型将帮助您培养自己的研究品味,并最终缩小您形成新研究思路的范围。
在我职业生涯的早期阶段,我着迷于打破最先进防御的新颖攻击。它们富有创意、优雅且令人非常满意,因为您能够发现其他人看不到的安全漏洞。当我读到这样的论文时,我总是问自己“这些人是怎么找到漏洞的?进行此类研究需要哪些技能?”这有意无意地引导我培养了攻读博士学位所需的心态和技能。遵循这种研究风格。由于我的导师当时专注于网络,所以我自然而然地致力于网络领域的安全问题(例如 TCP 安全)。但是,当时我没有机会获得任何扎实的技术,例如程序分析、形式化方法和机器学习。当我即将毕业时,我的研究品味开始相应地转变,因为我意识到如果我的工具箱中没有适当的自动化技术,它在解决安全问题方面并不是真正可持续或可扩展的。结果,我开始学习程序分析,以及一些模型检查和机器学习/人工智能。这对我个人来说效果很好。
当然,每个人都是不同的,你总能找到自己的品味,并据此开辟一条独特的道路。其实,这正是学术自由的美妙之处!

Tip 2: Recognize patterns of developing research ideas(认识发展研究思路的模式)

每篇论文背后都有一个独特的故事,但它们的产生方式通常可以分为几种模式。其中大部分是从我自己的研究经验中提炼出来的,有些是从其他研究人员那里借来的。例如,来自 UCSD 的 Philip Guo 教授有一篇很棒的博文(据说被删除了,但你仍然可以在这里找到)关于各种模式引起了我很大的共鸣(现在不记得所有的细节了) ).下面是我的版本,带有具体示例来说明它们。它们只是实现想法如何产生的简单方法。一旦你掌握了其中的一些模式想出新的想法将是小菜一碟(当然你仍然需要在决定投入之前对想法的价值进行分类)。

Pattern #1: fill in the blank

notion image
这是一个简单的模式,我在本科期间从 Microsoft 的 Harry Shum 博士发表有关研究的演讲时听说过。这个想法在概念上非常简单。阅读关于某个主题的几篇论文,记下这些论文在假设系统提供的保证/属性方法论技术数据集等方面的差异,然后绘制表格(不一定是二维的) )。寻找空白点,那些是你可以研究的潜在新研究思路(事实上,许多好论文使用这样的表格或图表来清楚地将自己与相关作品区分开来)。一个例子是在对抗性机器学习领域,许多研究人员最初关注的是图像,例如,如何扰乱一张猫的照片,使其被错误分类为香蕉。 很快其他领域如视频、音频和恶意软件也被调查(例如,如何通过注入无意义的指令来欺骗恶意软件分类器)。另一个简单的例子是:人们可能已经应用静态分析自动发现某些类型的漏洞,但还没有人应用动态分析。 然后,您可以研究针对特定类型的漏洞进行静态分析动态分析优缺点。 当然,现实中也有各种静态和动态分析。 您可以制作一个更细粒度的表格,这将为您提供更多识别空白的机会。 同样,如果研究了某种类型的漏洞,您可能会研究不同类型的漏洞。
成功应用此模式的关键是绘制出空间中存在的维度。 你走得越深,就越有可能找到可以填补的空白。 例如,您必须先熟悉不同种类的程序分析技术,然后才能绘制表格说服自己尚未尝试使用特定技术来解决问题。 同样,您需要了解不同类型的漏洞(仅内存损坏漏洞类型就有十几种)。
通常有两种常用的方法来绘制尺寸。 首先,您可以广泛阅读并寻找相似主题的论文之间的差异。 相信我,总有一天当你把这些点联系起来时,它们会变得很方便。 另一种方法是阅读调查论文可能是一种捷径,因为它通常已经在多个维度上总结了一个空间。 在网络安全领域,IEEE 安全与隐私会议(顶级会议)每年以知识系统化 (SoK) 的形式接受并发表几篇论文。 如果您对主题感兴趣,它们绝对值得一读。

Pattern #2: expansion(expansion)

notion image
这是“填空”的自然进展。 正如我所提到的,绘制出空间的一些良好尺寸可能是其中最具挑战性的一步。 但是,如果您已经在空间中有了一些想法(例如,发表了一两篇论文),那么您可以处于有利位置来查看其他人不明显的维度。
我们关于强 TCP 侧信道攻击的 USENIX Security 16 论文(Off-Path TCP Exploits: Global Rate Limit Considered Dangerous)就是受此模式的启发。 在我们之前的工作中(在 S&P 2012 和 CCS 2012 中发布),攻击要求非常高(并且不切实际,有人可能会争辩说)其中假设一段非特权恶意软件已经安装在受害者智能手机(或某种类型的智能手机)上 防火墙部署在网络中)。 自然地,我一直在苦苦思索如何消除这种强烈的需求,从而发现了一个全新的侧通道。 本质上,我已经基本绘制出关于攻击需求的维度,可以形象化为 [Requirements : Malware | 防火墙 | 非]。
我们的 CCS 20 论文“重新加载 DNS 缓存中毒攻击:带侧通道的革命”的另一个示例也属于此类。 这是另一篇侧信道论文,我们将侧信道经验从 TCP 转移到 UDP。 该漏洞的性质非常相似。 事实上,它与在 Linux 内核实现中跨 TCP/UDP 套接字寻找共享资源(即全局变量)的方向完全相同。 所以这里的维度是关于不同类型的网络协议

Pattern #3: build a hammer and find nails(建造一把锤子并找到钉子)

这也是在 Harry 的同一次演讲中学到的,我在这里概括一下。 高层次的想法是,如果你有独特的专业知识、技术、系统,甚至数据集(没有人可以轻易复制),你可以利用它并用它来寻找有趣的问题来解决(我们是 幸运的是在计算机科学中有这么多实际问题)。 我能立即联想到的系统研究的一个经典例子是密歇根大学的 Peter Chen 教授的小组。 他的团队在虚拟机(以及其他方面)方面积累了丰富的专业知识,并利用它在上面开发了许多有趣的应用程序。 如果我没记错的话,Pete 的团队构建了世界上第一个完整的虚拟机记录和重放功能。 这对于调试追溯入侵分析有重要的应用。 许多关于确定性保证性能等方面的高质量论文(例如 OSDI、ASPLOS、PLDI)已发表。
我自己的团队也在网络侧信道上发表了一系列论文,最初是从 2012 年的 TCP,到现在的 2020 年的 UDP 和 DNS(S&P、USENIX Security 和 CCS 上有 7 篇论文)。 这实际上是关于建立网络侧通道方面的专业知识,无可否认,这是一个没有太多竞争的小领域。 以这种方式积累专业知识的好处在于,一旦你深入研究一个主题,你就更容易找到要解决的新问题。
最近在网络安全方面的一个例子是由 UCSB 人员开发的名为 angr 的系统。 它是最先进的二进制分析框架(包括符号执行引擎),最初是为 DARPA 网络大挑战(100% 自动化 CTF 竞赛)开发的。 该系统自 2016 年论文发表以来一直是开源的。 因为它的设计和工程如此出色,它很快在学术界(2020 年 12 月 28 日已经有 540 次引用)和工业界流行起来。 事实上,我们也在一些项目中使用它。 作者自己也利用该系统为各种安全应用程序构建了许多后续项目。
关于数据集的最后一个例子是加州大学圣地亚哥分校的应用互联网数据分析中心 (CAIDA),他们在那里开发和部署了多个测量基础设施,以收集大量用于各种目的的互联网数据。 由于没有其他人拥有这些数据(至少在学术界是这样),他们能够使用大规模且独特的数据集发表许多有趣的测量研究
尽管在我看来这是一种进行研究的好方法,即有影响力可持续,但它并不一定适合所有人。 首先,构建专业知识、系统或基础设施以达到您可以开始收获收益的程度可能会非常耗时。 其次,此类举措有时可能需要团队的远见、规划和组织(通常超出单个博士生的能力)。 最后,很少有群体通常会主宰一个空间。 除非你有独特的视角否则很难超越他们。 也就是说,如果您能够确定很多人需要它但还没有好的解决方案,那么它可能值得考虑。

Pattern #4: start small, then generalize(从小处着手,然后概括)

通常,一个研究想法是从一个小的观察开始的。经过一番挖掘,您可以看看它是否可以发展成一个值得发布的完整创意。现在,确定是否
追求它以及在放弃之前应该花多少时间挖掘。 根据我的经验,您可以寻找一些积极的迹象: 1. 当您第一次看到它时,最初的观察(无论多么小)是如此有趣和令人惊讶。 2. 当你深入挖掘时,你会意识到这种现象植根于一些基本的东西无法用众所周知的概念轻易解释(例如,导致安全漏洞的新颖设计缺陷)。 3.观察不太可能是一次性的,比如后面有更大的空间,还有很多其他类似的情况可以调查。
一个具体的例子是我们自己在 CCS 16“Android ION Hazard: the Curse of Customizable Memory Management System”中发表的工作。 我们最初是在研究通过文件系统暴露给 Android 上任何潜在恶意应用程序的不同接口。 我的学生 Hang 偶然发现了一个看起来很有趣的设备文件“/dev/ion”。 该接口允许任何应用程序在“预先存在的堆”中分配内存并将它们映射到用户空间。 令人惊讶的是,我们发现这些页面没有返回“归零页面”,而是包含先前使用的剩余数据(符号 #1)。 这是一个潜在的信息泄露安全漏洞。 现在,这本身可能不会导致直接的研究项目,因为它可能只是被视为一个众所周知的信息泄漏漏洞的又一个实例。 然而,当我们深入挖掘时,事情开始变得有条不紊。 尽管错误类型不是新的,但该缺陷比它最初看起来的更根深蒂固(符号 #2)。 具体来说,/dev/ion 接口的引入意外暴露了操作系统内核使用的内部 API 返回的内存。 与某些设计用于与用户空间交互的 API(其中清零是一项要求)相比,由于性能原因,此类内部 API 不会主动清零新分配的内存。 更糟糕的是,不同的 Android 智能手机自定义 /dev/ion 的实现,允许更大的调查空间(标志 #3)。

Pattern #5: reproduction of prior work

前面的模式可能会让你思考:我如何首先进行这些小的观察或发现? 好吧,其中一种方法是尝试重现已发表论文的结果。 信不信由你,论文中报道的内容可能与您尝试重现时观察到的内容并不完全相同。 其背后有几个原因:(1)作者无意中犯下的错误,(2)一些结果不是设计上 100% 可重现的,例如,对一些随时间变化的互联网现象的测量。 (3) 选择有利于论文中提出的方法的有偏见的基准或数据集。 如果您能够识别出先前工作的重要差异局限性,则通常意味着有改进的余地。 即使你设法按预期 100% 地重现了工作,沿途也经常会有论文中没有提到的其他见解或附带发现(论文中只有这么多空间)。
我没有亲自练习过这种模式。 最接近的例子是我们的 USENIX Security 20 论文“Poison Over Troubled Forwarders: A Cache Poisoning Attack Targeting DNS Forwarding Devices”,这是一项由清华大学领导的合作成果。 在这篇论文中,学生们被要求重现 CCS 18 的作品“Domain Validation++ For MitM-Resilient PKI”,其中执行了特定的测量以展示攻击方法的广泛适用性。 有趣的是,我们论文中的测量结果比报道的要消极得多。 这促使开发了一种新方法,可以绕过先前工作的限制

Pattern #6: external sources: from industry, news feed, etc.(外部来源:来自行业、新闻提要等。)

如果您在网络安全等实际领域工作,那么行业和现实世界(学术界之外)一定有很多事情要做。 抓住机会与行业人士建立联系,了解他们的迫切需求和痛点。 他们是研究想法的重要来源。 尽管比学术界更足智多谋,但在解决技术问题时,业界有不同的优先顺序和思维方式,例如,他们对可靠的解决方案更感兴趣,而不太可能投资于有风险的解决方案。 学术界的好处是我们不必一次性解决 100% 的问题,它在本质上可以是探索性的。 事实上,在某种意义上,由您来定义成功的指标/阈值。 如果您正在解决行业中尚无好的解决方案的实际问题,那么“成功”研究项目的门槛就会大大降低。
我个人经常利用这种模式并且非常享受它。 我将用一个最近的例子来说明这个模式,它是关于“补丁”的。 “为什么修补是一个有趣的研究问题?” 你可能会问。 好吧,几年前和业内人士交谈后,我意识到这仍然是行业中的一个大问题,目前还没有真正好的解决方案。 以下是 Linux 和 Android 内核中发生的情况:当补丁提交到上游 Linux 内核(即主线)时,下游内核分支(如 Linux LTS、Ubuntu 和 Android)的维护者需要手动检查这些补丁是否“适用” 给他们。 如果是这样,他们会向后移植它。 这是一个耗时且容易出错的过程。 通常,重要的安全补丁会因此而被遗漏或延迟。 更糟糕的是,除了下游内核分支的所有者之外,第三方很难对其进行审计并寻找缺失的补丁。 例如,在 Android 世界中,大多数供应商不提供其内核源代码(例如 git 存储库)的完整历史记录。 这导致了一种自动化工具的开发,该工具可以测试二进制内核中是否存在补丁。 该工作发表在 USENIX Security 18 “Precise and Accurate Patch Presence Test for Binaries”。 随后,我们完善了该工具,并在 USENIX Security 21 上发表了另一篇论文“An Investigation of the Android Kernel Patch Ecosystem”,进一步研究了补丁传播缓慢的延迟和根本原因。 事实上,补丁项目已经为一些正在做饭的相关项目打开了大门。
有时,关注新闻提要和周围发生的事情也能带来好处! 我从一些经常使用 Twitter 作为他们的技术新闻提要的教授那里学到了这一点。 我们做的一个有趣的项目就是受到这种启发(该论文发表在 CCS 15 “Android Root and its Providers: A Double-Edged Sword”)。 当时,“root”Android 手机很流行,这样用户就可以自定义操作系统并解锁其他方式无法实现的新功能。 开发了许多“一键式 root 应用程序”,只需单击一下按钮即可自动对许多手机型号进行 root。 在意识到这些应用程序基本上是在对操作系统内核发起攻击后,我开始思考“它们有多少种不同的漏洞可以针对这么多手机? 他们是否有任何您在 Internet 上找不到的专有漏洞? 攻击者是否有可能窃取这些漏洞并重新利用它们(例如,构建勒索软件)?” 事实证明,其中一些应用程序是由业内顶级黑客开发的,包含一百多个漏洞,通过一些工作(逆向工程),一个人可以拥有所有这些应用程序(是的,非常可怕,呵呵)。
网络安全研究特有的其他模式:
1. 对抗性研究。 由于安全本质上是对抗性的,因此反复出现的主题是攻击和防御。 你总是可以尝试打破现有的防御或建立防御来抵御攻击。 事实上,我经常看到一篇新颖的攻击论文后面跟着一篇防御论文(可能来自也可能不是来自同一组)。
2. 流程自动化。 许多系统安全分析(例如逆向工程、漏洞发现、错误分类、利用以及检查是否应用了补丁)始终需要一些手动操作,至少在某些设置中是这样。 应用程序分析等技术使这样的过程(即使是部分过程)自动化可能具有重要的研究价值。 这可能是一种超越网络安全但在系统安全中非常普遍的模式。
我确信还有其他我错过的模式。 我鼓励你思考一篇论文的想法是如何产生的,只要有机会就与作者交谈关注你最喜欢的研究人员并在他们的论文中寻找模式(有时是一系列有明确联系的论文)。 我相信您将能够在某个时候发现自己的模式!

Tip 3: Develop a good habit of thinking about research ideas(养成思考研究思路的好习惯)

到目前为止听起来不错? 问题是你不去修,那就是一句空话。 如果你没有一个好习惯,你很可能会忘记去练习它。 这里有一些提示可以帮助您养成这个好习惯:
  • 意识到项目的执行想法的产生和形成有着根本的不同不要全神贯注于正在进行的项目并将自己与外界隔绝(很多学生都会犯这个错误)。 定期阅读一些论文,例如,当新一批论文从会议中出来时。 您至少可以扫描所有论文标题阅读一些听起来很有趣的论文的摘要。 然后仔细阅读它们是否实际上对您感兴趣(这又回到了您的研究品味)。 确保你关注这些论文中的研究思路(而不仅仅是技术方面的事情)。
  • 认真对待论文评论。 顾问经常将论文审查工作交给学生,然后与学生讨论这些论文。 这是学习“香肠是如何制作的”的绝好机会。 通常,您只会阅读具有良好新颖性和影响力(也写得很好)的已发表论文。 但是,在论文评审期间,您会看到被拒绝的论文并了解为什么它们被认为低于标准
  • 对您可能感兴趣的论文类型保持好奇和开放的心态。我的建议是“广泛阅读”。 在计算机科学的实践领域(例如,系统、网络、安全、软件工程),我们正处于各个领域越来越成熟的地步,以至于许多好的想法来自不同领域的交叉。 尽管当时我的导师主要从事网络方面的工作,但我一直在阅读系统和程序分析方面的论文,这对我成为教授后有很大帮助。
  • 经常参加阅读小组和谈话,并提出问题。 如果这是一个讨论密集的会议,比如你自己的研究小组组织的会议,一定要参加。 如果你害怕这样做(因为缺乏知识或经验),只要知道你的导师正在努力帮助小组中的每个人(尤其是低年级学生),没有人会嘲笑你问一个“笨蛋” 问题或类似的东西。 如果你真的没有什么要问的或对讨论没有贡献,试着提前阅读要讨论的论文以获得优势。 事实上,你当然可以对我们在这篇文章中讨论的事情进行讨论,例如,哪种思维模式让论文的想法得以形成。 一旦你开始这样做一两次并感到有收获(能够进行良好的讨论),随着时间的推移你会变得越来越自在。 我真正喜欢的一件事是就一个想法是否好进行辩论(即使它已经在一个好的会议上发表)。 一些学生扮演攻击者的角色,寻找弱点和局限性,而其他学生则试图为论文辩护。 模仿论文审查过程,这将使您了解一个想法的“合理性”
  • 非正式地,经常与您的实验室伙伴交谈,亲自了解他们,建立良好的联系。 与您的顾问相比,您可能会花更多的时间与您的同事交谈。 那么,为什么不努力创造出色的体验呢? 能够就一个研究主题展开随意的对话,就一篇论文进行一些小辩论,并与他人交流你的想法,感觉真是太好了。 建立有利环境的一种方法是定期与他们交谈询问他们的项目进展情况,并自愿提供您的真实反馈。 他们可能会回报,这可以让事情继续下去。 除此之外,它在您可能会在某些路障上卡住一段时间的情况下非常有用。 与他人交谈可以给你一个全新的视角来帮助你(我自己当然也从中受益)。
致谢:感谢我的学生对本文早期草稿的宝贵反馈。

总结:

这篇文章教会了我应该如何去获得一个想法。
我自己的感觉,我们可能更像第二种:意味着,我们有时候需要自己具有思考研究思路的好习惯,不然我们很可能像里面描述的,花费1-2年的时间,然后意识到没有任何进展,从而退出研究。(我大一、大二确实就是觉得只是去做某个idea,但老徐可能觉得我们已经具备能够从中发现想法的能力了,当然我们需要培养这种能力)
虽然我们不是博士生,而且我们本科生的1-2年本身就被课程所占据,但感觉我们大部分人之后都会走到研究生,当你觉得某个想法做的很难受,你也许可以去尝试阅读一些,别人是如何思考想法、完成一个想法的。
其次,对于不要全神贯注于正在进行的项目并将自己与外界隔绝保持好奇和开放的心态,经常参加阅读小组和谈话,并提出问题,如果没有问题,则下次参会之前,先阅读相关讨论的论文。定期与他人交流,询问他们的项目进展,并提供反馈,也是一个很好的东西。
 
 
致谢:
💡
感谢SNAIL汇总的链接,感谢GOODLAB的引用,感谢前述链接的作者。
 
 
MediaWiKi论文自动同步至用户主页基于k8s的集群grpc通信实践

公告
type
Notice
status
Published
date
Jul 2, 2021
slug
summary
类型为Notice的文章将被显示为公告,仅 hexo和next支持;仅限一个公告
tags
category
icon
🎉GOOD始终欢迎有想法的学生🎉
—本科生招新—
ruobingyao@163.com
xuz@ncu.edu.cn
—研究生招新—
xuz@ncu.edu.cn