games003课程笔记03-技术方法的设计方法
games003 科研基本素养 “lec.3 技术方案的设计方法” 笔记
1. 什么是方法设计
选定课题后,需要设计一种新颖的pipeline(技术流程)来打到SOTA Performance。
一个理想的方法,需要并重work程度和技术创新程度。(一定要注重技术创新,切不能雕花)
五个程度的技术创新(前三种创新命中率更高)
- 一个崭新的范式(新的学习模型,新的表示)
- 基于已有的pipeline提出非常新颖的模块(从其他领域借鉴过来)
- 将几个已有的模块组合成新的pipeline (与2.相比,这个更倾向于简单的拼接)
- 在已有pipeline中加入经过简单改进的模块
- 在已有pipeline中加入现有的模块
2.如何设计方法
分析原因
遵从第一性原理(找到本质原因,对症下药),分析为什么当前的SOTA效果不够好
如何找到技术原因
如何分析SOTA不work的原因
如何发现表层原因:二分查找法
先确认能够work的数据或者算法,然后将其与不work的数据或算法进行比较,查看他们之间的差异。
如何发现根本技术原因
通常有两个技术原因:
- 修改的代码有bug
xx算法
应用在xx数据
中确实存在问题
如何调试代码(《调试九法 软硬件错误的排查之道》)
- 彻底理解算法/代码(调试的基础)
- 确定能够持续重现bug的输入和设置
- 基于二分查找法缩小bug的范围
- 逐行调试(x_x)
如何与他人讨论实验结果
分析实验结果的典型问题列表
代码调试检查表
算法调试检查表 -> 观察failure cases中是否存在特定的pattern -> 使用3D可视化工具进行调试(Viser、Wis3D等)
设计方法
根据分析的原因,设计一种能打到SOTA的方法(创新地组合已有的技术,从另一个领域移植过来b( ̄▽ ̄)d)
如何设计方法
列出原因
列出本质技术原因:为什么原有的SOTA方法不work
列出技术
列出所有与技术原因相关的、有可能解决该问题的技术
选择新技术
选择近年来的新技术、需要是未被well-explored、有想象空间的技术
设计方法
每天仔细思考,如何基于这些技术构造pipeline
讨论
与周围的人进行广泛的讨论,获得insights,迭代优化pipelines
不断积累并等待灵感爆发
等待灵感爆发的时刻,脑海中涌现出一个有效且有意思的pipeline
判断合理性
判断提出的技术方法是否合理(多与他人沟通获得反馈 + 阅读论文获得相关技术的分析)
改进方法
通过读论文、讨论和做实验改进技术方法
如何通过实验改进方法
games003课程笔记03-技术方法的设计方法
http://example.com/2024/10/22/games003_03/