http://meta-guide.com/software-meta-guide/100-best-github-deep-learning
https://en.wikipedia.org/wiki/Deep_learning
http://redditmetrics.com/r/MachineLearning
http://redditmetrics.com/r/MachineLearning
http://www.dumeiwen.com/it/news/2016/1230/358446_5.html
一个交互可视化的教程,介绍了神经网络的基础——显示简单的神经网络如何做线性回归 ★
前馈神经网络(feedforward neural network)★★
训练神经网络(直到 2.7)★★
反向传播(backpropagation)★★
神经网络的架构 ★★
使用神经网络来识别手写数字 ★
反向传播算法的原理 ★
神经网络以计算任何函数的可视化证明 ★
深度前馈网络 ★★★
理解为什么从头开始实现反向传播算法很重要 ★★
计算图(computational graph)中的微积分:反向传播 ★★
玩转神经网络!★
尝试从头实现单层神经网络,包括训练过程。
只用 Python / NumPy 实现 softmax 分类器以及一个简单的神经网络——用 Jupyter notebook ★
Andrej Karpathy 的神经网络黑客教程讲述了如何在 Java 中实现反向传播。★
在 Python 中从头开始实现一个神经网络 ★
改进神经网络的学习方式
训练神经网络并不容易。有时根本不能学习(欠拟合/ underfitting),而有时能准确地学习你给算法的数据,但是算法学到的「知识」不能泛化到新的、没见过的数据(过拟合/ overfitting)。有许多方法来解决这些问题。
2.8-2.11. 正则化(regularization),初始化参数(parameter initialization)等 ★★
7.5. Dropout 方法 ★★
6(前半章). 设置数据和损失函数(loss)★★
3. 改进神经网络学习的方式 ★
5. 为什么深度神经网络难以训练?★
7. 深度学习的正规化 ★★★
8. 优化训练的深度模型 ★★★
11. 实用方法 ★★★
MNIST 上的 ConvNetJS Trainer 演示——不同的优化算法性能的可视化 ★
梯度下降优化算法的概述 ★★★
神经网络、流形(Manifold)和拓扑(Topology)★★★
有许多框架提供标准算法,并针对现代硬件的良好性能进行了优化。这些框架中的大多数提供 Python 接口,除了著名的 Torch 是个例外(其需要 Lua)。一旦你知道如何实现基本的学习算法,现在是选择一个建模框架的时候了。
Theano 提供用于构建各种神经网络的低层级原生库(low-level primitives)。它由蒙特利尔大学(University of Montreal)的机器学习团队维护。参见:用 Theano 和 GPU 加速你的神经网络——用 Jupyter notebook ★
TensorFlow 是另一个低层级框架。它的架构类似于 Theano。它由谷歌大脑团队维护。
Torch 是使用 Lua 语言的流行框架。主要的缺点是 Lua 的社区不像 Python 的那么大。Torch 主要由 Facebook 和 Twitter 维护。
还有更高层级的框架,它们运行在这些低层级框架之上:
Lasagna 是一个建立在 Theano 之上的更高级框架。它提供了简单的函数,从而可以用少量代码创建大型网络。
Keras 是一个更高级框架,建立在 Theano 或 TensorFlow 之上。
如果你需要更多关于选择框架的建议,请参见斯坦福大学 CS231n 课程的第 12 讲。★★
卷积神经网络(Convolutional neural networks)
卷积神经网络(「CNN」)是一种特殊的神经网络,它使用了一些妙技来更快、更好地学习。ConvNets 从根本上变革了计算机视觉,并且也被大量应用于语音识别和文本分类任务中。