Skip to content

Commit

Permalink
Research Capability
Browse files Browse the repository at this point in the history
  • Loading branch information
JimmyZou committed Mar 27, 2024
1 parent 97da2bd commit 5f259ec
Show file tree
Hide file tree
Showing 3 changed files with 286 additions and 3 deletions.
Binary file added assets/fig_guidance/experiments.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
205 changes: 204 additions & 1 deletion src/blog_graduate_guidance.html
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,210 @@ <h3 id="培养科研能力">培养科研能力 Research Capability</h3>
<p>博士生应该具有的能力、如何锻炼这些能力、如何做科研项目:<a
href="https://github.com/pengsida/learning_research/blob/master/getting_advanced_in_research.md">参考1</a>[1],<a
href="https://pengsida.notion.site/research-project-b43507ef26d044bd888ac29f4736e116">参考2</a>[1]。</p>
<p>未完待续...</p>
<h4>博士生应该具有的能力</h4>
<ul>
<li><strong>阅读</strong>:阅读大量论文、进行文献综述、构建文献树、追踪积累最新论文/技术 <a
href="https://pengsida.notion.site/literature-tree-literature-review-novelty-tree-challenge-insight-tree-f8b36e484b344a2893a94e4608b72ec2">[参考]</a>
<ul>
<li>建立对这个领域的视野,知道大家在解决什么问题,培养对重要问题的认知,知道什么是好的论文。</li>
<li>积累解决问题的动机和技术。</li>
<li><a href="https://pengsida.notion.site/d192db870bc64436ae4a4a590b36772a">[文献树]</a>(novelty
tree和challenge-insight tree)锻炼和积累想创新点的能力。</li>
</ul>
</li>
<li><strong>创新</strong>:想创新点的能力、检索发现新事物的能力、目标驱动的科研能力、提出新技术的能力 <a
href="https://pengsida.notion.site/idea-da6ce171c13846b7a7ffaa7473ffa6ea">[参考]</a>
<ul>
<li><strong>做研究要先懂得检索</strong>。不管自己想到什么事,都先检索看看有没有相关的解法或内容以作为参考,这样能给自己省很多功夫,并且拓宽很多思路。</li>
<li><strong>目标驱动的科研</strong>(goal-driven research)让自己的研究更有规划、有连续性,让自己的研究更容易出类拔萃。</li>
<li>实时关注相关领域的进展,<strong>其他领域的方法或者思路能够带来关注领域内新的灵感</strong>。从而提出新的技术来解决本领域的问题。</li>
<li>具体来说:
<ul>
<li>
<ol>
<li>规划科研方向的愿景(general
goal),制定达到这个愿景的路线图(roadmap)。一般而言,愿景容易定义,但制定路线图需要对领域有深刻的理解,一般由导师或者高年级博士来思考和制定。</li>
</ol>
</li>
<li>
<ol start="2">
<li>根据novelty-tree列出的路线图,选择有研究空间的任务,调研这个任务有没有重要的技术难题。<strong>选题是对一个科研项目影响最大的一步</strong>,而不是后面的想方法。
</li>
</ol>
<ul>
<li>去思考这个任务长远的目标,一个最终形态是怎样的。为什么当前工作只在这些数据上做,而不在其他数据上做。</li>
<li>应该尝试更多通用场景(general cases)。追求发现新的失败例子(failure
cases),<strong>从新的失败例子入手改进原有的技术</strong></li>
<li>(1)在新的任务设定或者新的数据上容易发现新的失败例子。(2)在新的数据上探索方法的可能性,让大家看到新的实验结论,这是很大的贡献。</li>
</ul>
</li>
<li>
<ol start="3">
<li>从技术层面上分析现在的技术路线(pipelines)在某个任务上不工作的原因,在技术模块(pipeline
module)层面思考可能的原因,然后在技术路线上或高层次(high-level)理解上思考可能的原因。</li>
</ol>
</li>
<li>
<ol start="4">
<li>上升到高层次理解和想法、技术路线、技术模块层面进行创新,想出一些技术贡献。怎么提升改进技术路线的能力?</li>
</ol>
<ul>
<li>首先要知道有哪些技术,这些技术在解决什么问题。然后组合其中的某些技术。</li>
<li>(1)构建challenge-insight tree。(2)选择challenge-insight
tree中的某些技术,通过创新性的组合来解决当前任务的技术难题。(3)<strong>把可能的pipeline都列出来,然后对比优劣势,选择一个pipeline。</strong>
</li>
<li>一个高水平科研工作者认为:技术的本质就是对方法做组合,把小的技术组合成大的技术,把老的技术组合成新的技术。**组合已有的技术并挖掘其在新的任务、新的数据上的性质,是一个很大的贡献。**组合不能是<code>input-&gt;A-&gt; intermediate output-&gt;B-&gt;output</code>这种完全A
+ B的组合(完全拼接式的组合)。组合需要是具有创新性的组合。正常情况下直接拼接两个方法也无法解决问题,否则这个问题就没啥技术挑战。</li>
</ul>
</li>
<li>
<ol start="5">
<li>在一些数据上验证这个技术贡献,调效果。不能期望论文故事线好听、应用有意思,审稿人就会放过我们的技术贡献。</li>
</ol>
</li>
<li>
<ol start="6">
<li>当出现新锤子的时候,非常值得拿新锤子来做自己路线图上的某一个里程碑任务(milestone
task),这样容易做出有影响力的工作。注意,不是在新锤子原有任务设定上做改进(比如在NeRF的task setting上调它所用数据集的view
synthesis的效果),而是<strong>拿新锤子来解决自己在做的里程碑任务的问题</strong>(仍然是目标驱动的研究方式)。</li>
</ol>
</li>
<li>
<ol start="7">
<li>想idea时需要注意的点(什么样的project不值得做)</li>
</ol>
<ul>
<li>提出idea并做一篇论文是为了给领域做出实际的贡献,不是为了论文本身。</li>
<li>如果一篇论文对领域没有贡献,那么做这篇论文就是在浪费自己的时间,因为我们不会通过这篇论文收获领域的respect,甚至可能收获负面评价。</li>
<li>做这种论文的好处:(1)熟悉投稿流程。(2)有几率收获一篇论文(但概率较小)。</li>
<li>做这种论文的坏处:(1)浪费时间。做这个project的时间可以用来做更有意义的事情。(2)可能被人负面评价。</li>
</ul>
</li>
<li>特别需要注意的点:不要形成依赖导师的心理,要锻炼自己独立自主做科研的习惯和能力。(某种角度上可以说比发论文本身还重要。而且其实自己要有这个能力才能大概率做出论文,不然这个项目基本无疾而终)
</li>
</ul>
</li>
</ul>
</li>
<li><strong>实践</strong>:代码能力、实验能力、分析实验不工作的原因的能力
<ul>
<li>实现自己的想法。</li>
<li>在实验中改进自己的想法。</li>
<li>在实验中积累对技术方法的认知,通过实验发现一些技术能解决的问题和不能解决的问题。</li>
<li>在实验中发现一个科研方向存在什么不足之处、存在什么难以解决的问题。</li>
<li>具体来说:
<ul>
<li>
<ol>
<li>如何设计探索性实验,保持清楚的实验思路,提升改进Idea的效率。</li>
</ol>
<ul>
<li>现在的实验是否同时包含了几个<strong>探索方向(exploration points)</strong>?怎么修改实验来减少要同时探索的点?</li>
<li>现在的实验是否同时包含了几个<strong>技术挑战(technical challenges)</strong>?怎么修改实验来减少其中的技术挑战?</li>
<li>我们目前重点想先搞清楚的探索点是什么,最想解决的技术挑战是哪个?</li>
</ul>
</li>
<li>
<ol start="2">
<li>把复杂的事情拆解成一组简单的事情,从简单到复杂。</li>
</ol>
<ul>
<li><strong>拆解复杂的实验</strong>:从简单的设定开始探索,慢慢加大难度,然后做实际的设定。能够有效降低实验和时间成本。</li>
<li><strong>拆解创新的想法</strong>:把自己的想法分解成各个部分,从可控的想法开始做起,再加探索性、创新性的框架/模块。</li>
</ul>
</li>
<li>
<ol start="3">
<li>在简单任务上做实验(toy experiment)</li>
</ol>
<ul>
<li><strong>简化实验设定</strong>,保留想解决的技术挑战。</li>
<li><strong>简化数据</strong>,保留想解决的技术挑战。</li>
<li>验证自己写的模型训练代码是否工作,先过拟合一个样本,然后再过拟合一个非常小的数据集上(比如20个训练样本)。</li>
</ul>
</li>
<li>
<ol start="4">
<li>实验结果分析</li>
</ol>
<ul>
<li>[结果] 失败案例(Failure case)的可视化长什么样?可能是什么导致的?相应的可能原因也可视化看看。3D可视化工具:
<ul>
<li><a
href="https://github.com/zju3dv/Wis3D">https://github.com/zju3dv/Wis3D</a>
</li>
<li><a
href="https://github.com/koide3/iridescence">https://github.com/koide3/iridescence</a>
</li>
<li><a
href="https://github.com/nerfstudio-project/viser">https://github.com/nerfstudio-project/viser</a>
</li>
</ul>
</li>
<li>[结果] 失败案例有没有什么规律,有没有什么固定的pattern?这些规律可能引出背后的技术原因。</li>
<li>[代码] 各个模块代码的中间输出是否符合预期?</li>
<li>[训练] 现在方法在测试集上效果不好,那训练集能效果怎样?能过拟合吗?</li>
<li>[训练] 在其他简单的数据上效果怎样?</li>
<li>[结果] 记得我们在数据A上效果还不错,为啥数据B上不行?两个数据的区别是啥?</li>
<li>[方法] 我记得算法A在这个数据上效果没这么差。为啥我们的方法这么差?需要ablation看看哪个模块有问题?也可能是代码写bug了。</li>
<li>[方法] 如果是把方法简化,能工作吗?效果怎样?</li>
<li>[方法] 有可视化过某个模块的输出吗?看看是否符合预期,或者是否存在什么奇怪的现象?</li>
</ul>
</li>
<li>
<ol start="5">
<li>实验结果不理想</li>
</ol>
<ul>
<li>请注意,快速迭代建立在有效实验的基础上。盲目的做实验可能让事情变得更糟。</li>
<li>要经常性地确认自己在正确的方向上:当前的算法思路真的对吗。要避免陷入local minima。建议经常找同学交流讨论。</li>
<li><img src="../assets/fig_guidance/experiments.png" alt="alt text"
style="width:600px" /></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><strong>展示</strong>:写作能力、展示能力、把一篇论文做得漂亮的能力、做演示(demo)的能力
<ul>
<li>做一篇有影响力、阅读量高的论文,发表在高水平会议、期刊上。</li>
<li>把自己的研究故事、提出的技术清晰地展示给同行。</li>
<li>用演示来吸引读者,提高论文的阅读量和关注度,从而提升论文的影响力。</li>
<li>具体内容见“论文撰写 Paper Writing”。</li>
</ul>
</li>
<li><strong>交流</strong>:和导师、同学交流讨论的能力
<ul>
<li>让大家帮助自己做科研。</li>
<li>交流讨论对于科研的重要性(解决自己的疑问、验证自己的想法、启发思路、促进同学之间的关系)。</li>
<li>具体来说
<ul>
<li>
<ol>
<li>如何高效地讨论</li>
</ol>
<ul>
<li><strong>讨论的目的:让大家帮助自己project的推进。不要把“讨论”当作工作汇报。</strong></li>
<li>讨论的时候,一些同学害怕“讨论”时间过短,而显得自己没做事情,而可能被导师责怪。所以,通过分享论文、分享繁琐细节的实验现象来凑时长(可能因为遇到一些问题而导致没什么进展才想着凑时长,也可能出于其他考虑才这么做)。
</li>
<li>如果真的没啥问题,请直接skip讨论,简单同步一下进展和接下来的规划。如果遇到了问题,就列出要讨论的问题,把“讨论”的重心放在“自己遇到的问题”上。讨论结束地很快也没事,效率越高越好。
</li>
<li>“讨论”不要分享论文、不要分享繁琐细节的实验现象。什么内容可以体现自己的思考:“智慧有深度的提问”、“对project的规划”、“对技术创新性的思考”。</li>
<li>需要预先做一个简单的ppt。ppt内容可以这么组织:(1)列出需要讨论的问题,和大家一起讨论解决。先抛出问题,然后带着问题去看细节,讲一些自己的思考。看细节的时候,列一些重要的实验现象在ppt里.(2)列出有意思的实验现象和结论。(3)对于科研项目的讨论,<strong>有必要每次讨论的时候review一遍technical
contribution</strong>(因为已经受够了review里被reviewer喷contribution不够,或者project做了几个月以后发现没contribution而导致几个月白费)。(4)列出自己下一周的计划。
</li>
<li>实验室讨论原则:(1)充分的沟通交流。交流的时候不要害怕老师、高年级同学,不要因此而不敢问问题。有问题请及时问。实验室的老师、学长都非常友好,乐于解答问题。讨论交流的唯一目的是:
正确、高效,能解决你对project的疑问。(2)平等的交流,不是汇报与被汇报的关系。如果科研上有自己的想法,请表达出来。如果觉得老师、学长有说错的地方,请有礼有节地质疑和讨论。不要一味地听信老师、学长的话,但更不要表面服从而底下做自己的想法,这样会浪费很多交流时间和实验成本。实验室的讨论追求高效真诚的沟通。
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>

<h4><a href="#contents">[回到目录]</a></h4>
<hr>
<h3 id="论文撰写">四、论文撰写 Paper Writing</h3>
Expand Down
Loading

0 comments on commit 5f259ec

Please sign in to comment.