深度学习资料大全:从基础到各种网络模型

By 蒋思源2016年12月30日 13:52

深度学习是发展迅速的一个计算机科学和数学交叉的领域。它是更宽泛的机器学习领域一个相对新的分支。机器学习的目的是教计算机完成基于给定数据的各种任务。本教程是为那些知道一些数学,又懂一些编程语言,并想研究深度学习的人准备的。


文中的链接请点击网址:http://yerevann.com/a-guide-to-deep-learning/


预备知识


1.png


你必须有大学数学知识。你可以在深度学习这本书的前几章中回顾这些概念:



你必须知道编程知识以便开发和测试深度学习模型。我们建议使用 Python 进行机器学习。这里需要用到科学计算的 NumPy / SciPy 库。



当你满足了这些预备条件时,我们有四个备选建议用来学习深度学习。你可以选择下列选项中的任何一个或几个。星星数量表示困难程度。


2.png



有许多软件框架为机器学习和深度学习提供了必要的函数、类和模块。我们建议在研究的早期阶段不要使用这些框架,而是从头开始实现基本算法。并且大多数课程都能足够详细地描述算法背后的数学,因而这些算法可以很容易从头实现。



机器学习基础


机器学习是基于数据训练计算机的一门艺术和科学。它是计算机科学和数学交叉的相对确定的领域,而深度学习只是它的一个很小的子领域。机器学习的概念和工具对于理解深度学习非常重要。


3.png



1. 训练和测试模型(K 最近邻/kNN)★★

2. 线性分类(支持向量机/SVM)★★

3. 优化(随机梯度下降/ stochastic gradient descent)★★

5. 机器学习基础 ★★★



大多数流行的机器学习算法都是在 Python 库 Scikit-learn 中实现的。从头开始实现这些算法助于理解机器学习的原理。



神经网络基础


神经网络是强大的机器学习算法。它们构成了深度学习的基础。


4.png



1. 前馈神经网络(feedforward neural network)★★

2. 训练神经网络(直到 2.7)★★

4. 反向传播(backpropagation)★★

5. 神经网络的架构 ★★

1. 使用神经网络来识别手写数字 ★

2. 反向传播算法的原理 ★

4. 神经网络以计算任何函数的可视化证明 ★

6. 深度前馈网络 ★★★



尝试从头实现单层神经网络,包括训练过程。



改进神经网络的学习方式


训练神经网络并不容易。有时根本不能学习(欠拟合/ underfitting),而有时能准确地学习你给算法的数据,但是算法学到的「知识」不能泛化到新的、没见过的数据(过拟合/ overfitting)。有许多方法来解决这些问题。


5.png



有许多框架提供标准算法,并针对现代硬件的良好性能进行了优化。这些框架中的大多数提供 Python 接口,除了著名的 Torch 是个例外(其需要 Lua)。一旦你知道如何实现基本的学习算法,现在是选择一个建模框架的时候了。


6.png



卷积神经网络(Convolutional neural networks)


卷积神经网络(「CNN」)是一种特殊的神经网络,它使用了一些妙技来更快、更好地学习。ConvNets 从根本上变革了计算机视觉,并且也被大量应用于语音识别和文本分类任务中。


7.png



每一个重要框架都应用了卷积网络。通常理解用更高级库编写出来的代码更容易。


8.png



循环神经网络(Recurrent neural networks)


循环神经网络(RNN)是与序列一起使用的。通常用于语句分类(比如情感分析)和语音识别,但也用于文本生成,甚至图像生成。


9.png



循环神经网络也被用在了每一个现代框架中。


10.png



自编码器(Autoencoders)


自编码器是为无监督学习(例如数据未标记的情况)而设计的神经网络。可用它进行降维、预训练其他神经网络及数据生成等。以下资源还包括自编码器与图形模型的有趣混合体,称为变分自编码器(variational autoencoders),不过其数学基础是下一节的内容。


11.png



大多数的自编码器都很容易实现。我们建议你浏览完整案例前自己先试着实现一下。


12.png



概率图模型(Probabilistic graphical models/PGMs)


概率图模型(PGM)在统计学与机器学习的交叉领域形成一个独立的分支。一般说来关于 PGM 的书籍和课程有很多。这里我们提出的是:在深度学习中如何应用这些模型。Hugo Larochelle 的课程介绍了几个著名的模型,而《Deep Learning》一书则用了四章(16-19)来阐述该理论,并在最后一章介绍了十几种模型。这些课题都需要大量的数学知识。


13.png



更高层次的框架(Lasagne、Keras)不执行图形模型。但有很多为 Theano、Tensorflow 和 Torch 而编写的代码。


14.png



前沿


深度学习是一个非常活跃的科学研究领域。要想跟上顶尖的科研进程,就必须阅读新的论文并跟上重要的会议。通常每个新思想都是在 arXiv.org 的预印本论文上发表。然后其中一些提交给会议并进行同行评议。最好的那些会在会议上被提出并发表在期刊上。如果该作者不发布其模型的代码,许多人会试图实现它们并将其放在 GitHub 上。这得需要 1、2 年的时间,合理解释其思想和实现过程的高品质技术博客、教程和视频才会出现在网络上。


15.png



声明:本文由机器之心编译出品,原文来自Yerevann,转载请查看要求,机器之心对于违规侵权者保有法律追诉权。