我对神经网络完全陌生,但对理解它们非常感兴趣。然而,上手一点也不容易。
谁能推荐一本好书或任何其他类型的资源?有必读的吗?
我很感谢任何提示。
如何开始使用神经网络
神经网络已经存在了一段时间,并且这些年来它们发生了巨大的变化。如果你只在网上闲逛,你最终可能会觉得“神经网络”是指经过反向传播训练的多层前馈网络。或者,您可能会遇到几十个很少使用、名称奇怪的模型中的任何一个,并得出结论认为神经网络更像是一个动物园而不是一个研究项目。或者说它们是新奇事物。或者...
我可以继续。如果你想要一个清晰的解释,我会听Geoffrey Hinton的。他一直存在并且(因此?)在将他研究的所有不同模型编织成一个有凝聚力的、直观的(有时是理论的)历史叙述方面做得很好。在他的主页上,有指向他做过的 Google 技术讲座和 Videolectures.net 讲座的链接(关于RBM和深度学习等)。
从我的角度来看,这是理解神经网络的历史和教学路线图,从开始到最先进:
在我看来,这些都是非常好的书。
- R. Rojas:神经网络
- CM Bishop:用于模式识别的神经网络
这两本书有一些相似之处:它们都有大约 500 页长,而且都是 1995 年以来的旧书。尽管如此,它们仍然非常有用。这两本书都是从零开始,解释什么是神经网络。它们提供了清晰的解释、很好的例子和很好的图表来帮助理解。他们以多种形式和形式详细解释了训练神经网络的问题,以及它们能做什么和不能做什么。两本书相得益彰,一本书想不通的,在另一本书中往往能找到。
Rojas 有一节,我特别喜欢,关于在矩阵形式的多个层上实现反向传播。它还有一个很好的关于模糊逻辑的部分,以及一个关于复杂性理论的部分。但是 Bishop 还有很多其他不错的部分。
我想说,罗哈斯是最容易接近的。Bishop 更数学,也许更复杂。在这两本书中,数学主要是线性代数和多变量函数的微积分(偏导数等)。如果没有这些主题的任何知识,您可能不会发现这两本书中的任何一本都非常有启发性。
我建议先阅读罗哈斯。
显然,这两本书都对算法有很多话要说,但对代码中的具体实现都没有说太多。
对我来说,这些书提供了使在线课程(例如 Hinton 在 Coursera 上的课程)易于理解的背景。这些书还涵盖了比在线阅读更多的领域和更详细的内容。
我希望这会有所帮助,并且很乐意回答有关这些书籍的任何问题。
正如其他人所指出的,网上有很多(好的)资源,我个人做了一些:
- Ng 在 Coursera 上的 ML 课程简介
- 在 Coursera 上 Hinton 的神经网络课程
- Ng的深度学习教程
- 阅读原文Parallel Distributed Processing中的相关章节
我想提请注意这样一个事实,即这些论述大多遵循经典处理,其中层(总和和非线性一起)是基本单位。在大多数库(如 torch-nn 和 tensorflow)中实现的更流行和更灵活的处理,现在使用具有自动微分的计算图来实现高度模块化。从概念上讲,它更简单,更自由。我强烈推荐这种治疗的优秀斯坦福 CS231n 开放课程。
对于严格的学习理论处理,您可能需要参考Anthony 和 Bartlett 的神经网络。