如何设计深度学习实验
For insights, not for numbers!
- 保证实验的泛化性
- 尽量在大数据集上验证
- 尽可能在多数据集上做(寻找问题)
- 验证复现重要的结论
- 追求的多样化
- 方法能否更简单、跳出已有空间、有 更好的视觉效果 (可视化结果)?
- 大胆的猜想
- 根据已有实验结果做猜想,如
Attention is all you need
- 能否做一些极端例子的检测(发现问题)
- 如何挖掘实验结果中隐藏的信息,需要平时看论文时深入思考分析,数据背后反映了一个什么问题,能找到的话就是一个很好的
idea
控制变量
- 只验证一个变量
- 发掘已有工作的问题
- 有没有没发掘出来的,有价值的研究点(如都用的trick却没人研究过)
- 排除干扰因素
- 实验所有变量做好记录
- 版本控制要做好,一个commit只改动一个点,实验的不同版本提交到github并命名
- 总结变量的重要性
- 数据分布(idea如数据通路的处理、凸优化、贝叶斯等优化技巧)
- 前、后处理
搭环境(与时俱进docker)
- 系统层面
- Linux优先,windows考虑WSL
- 管理CPU/GPU资源:
slumr
调度系统
- terminal:
terminius
- 网络层面
- 熟悉SSH/SCP协议
- 熟悉远程编译
- 远程可视化:
jupyterlab
- IDE层面
- 常见功能:自动同步、
Github
版本管理、代码对比、自动保存历史
验证IDEA
- 确保任务的可行性(确保
baseline
可以跑出有意义结果)
- 不断调整idea(方向一致如
deform cnn
)
- 分模块验证
管理实验
- 表格驱动的实验方法
- 实验前先做表格
- 记录主要实验变量,超参,
trick
- 一组实验总结出一个结论,驱动下一组实验
- 合理利用可视化工具
- 关注早期的实验结果
- 可以固定一个小epoch进行比较,最后再跑完整个实验
- 结合可视化手段,分析每个阶段大概做的如何
Author:
CY
Permalink:
http://example.com/2022/07/12/How%20to%20design%20experiments/
License:
Copyright (c) 2019 CC-BY-NC-4.0 LICENSE
Slogan:
Do you believe in DESTINY?