我已经完成了两门神经网络课程,并阅读了大量相关资料。我对Tensorflow和Keras的使用以及构建高级神经网络(多输入、大数据、特殊层等)感到得心应手。我对其背后的数学原理也有相当深入的理解。
我的问题在于,我知道如何构建神经网络,但不知道“专家”为特定应用创建一个网络的过程是什么。
我能做到的是:
- 收集大量数据并进行清理。
- 训练神经网络。
- 微调超参数。
- 将其导出用于实际应用。
我所欠缺的是如何设计神经网络中的层(宽度如何、类型是什么…)。我知道这在某种程度上是试错法和参考他人成功的经验。但一定存在人们可以用来设计非常有效的架构*的过程。例如最先进的神经网络。
我正在寻找一个免费的资源,帮助我理解创建一个非常好的架构*的过程。
*这里的架构指的是构成网络的不同层及其属性
回答:
我写了硕士论文关于这个话题:
Thoma, Martin. “Analysis and Optimization of Convolutional Neural Network Architectures.” arXiv preprint arXiv:1707.09725 (2017).
长话短说:有一些用于分析的技术(第二章第2.5节)和学习拓扑结构的算法(第三章),但在实践中,大多数时候还是靠试错法和直觉。