http://yerevann.com/a-guide-to-deep-learning/
Deep learning is a fast-changing field at the intersection of computer science and mathematics. It is a relatively new branch of a wider field called machine learning. The goal of machine learning is to teach computers to perform various tasks based on the given data. This guide is for those who know some math, know some programming language and now want to dive deep into deep learning.
You must know standard university-level math. You can review those concepts in the first chapters of the book Deep learning:
Deep learning, chapter 2: Linear algebra
Deep learning, chapter 3: Probability and information theory
Deep learning, chapter 4: Numerical computation
You must know programming to develop and test deep learning models. We suggest using Python for machine learning. NumPy/SciPy libraries for scientific computing are required.
Justin Johnson's Python / NumPy / SciPy / Matplotlib tutorial for Stanford's CS231n ★
Scipy lecture notes - cover commonly used libraries in more details and introduce more advanced topics ★★
选自Yerevann
深度学习是发展迅速的一个计算机科学和数学交叉的领域。它是更宽泛的机器学习领域一个相对新的分支。机器学习的目的是教计算机完成基于给定数据的各种任务。本教程是为那些知道一些数学,又懂一些编程语言,并想研究深度学习的人准备的。
文中的链接请点击网址:http://yerevann.com/a-guide-to-deep-learning/
预备知识
你必须有大学数学知识。你可以在深度学习这本书的前几章中回顾这些概念:
深度学习,第 2 章:线性代数
深度学习,第 3 章:概率与信息论
深度学习,第 4 章:数值计算
你必须知道编程知识以便开发和测试深度学习模型。我们建议使用 Python 进行机器学习。这里需要用到科学计算的 NumPy / SciPy 库。
斯坦福 CS231n 课程,Justin Johnson 的 Python / NumPy / SciPy / Matplotlib 教程 ★
Scipy 讲义——更详细地描述了常用库,并介绍更多高级主题 ★★
当你满足了这些预备条件时,我们有四个备选建议用来学习深度学习。你可以选择下列选项中的任何一个或几个。星星数量表示困难程度。
Hugo Larochelle 在 YouTube 上的课程视频(Hugo Larochelle's video course)。虽然视频是在 2013 年录制的,但大部分内容仍然很新。视频详细地解释了神经网络背后的数学知识。附带幻灯片和相关材料。★★
斯坦福 CS231n 课程(卷积神经网络的视觉识别/ Convolutional Neural Networks for Visual Recognition)由李飞飞、Andrej Karpathy 和 Justin Johnson 教课。本课程侧重于图像处理,但涵盖了深度学习中的大多数重要概念。附带视频(2016 年)和讲义。★★
Michael Nielsen 的网络书籍《神经网络和深度学习》(Neural Networks and Deep Learning)是研究神经网络的最容易入门的书籍。它没有涵盖所有重要的主题,但包含直观解释和基本概念的代码实现。★
Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 的书《深度学习》(Deep Learning),是研究深度学习最全面的资源。它比所有其它课程涵盖了更多的内容。★★★
有许多软件框架为机器学习和深度学习提供了必要的函数、类和模块。我们建议在研究的早期阶段不要使用这些框架,而是从头开始实现基本算法。并且大多数课程都能足够详细地描述算法背后的数学,因而这些算法可以很容易从头实现。
Jupyter notebook 软件可以方便地交互编译 Python 代码。软件能很好地与流行的可视化库 matplotlib 集成。我们建议在这样的环境中实现算法。★
机器学习基础
机器学习是基于数据训练计算机的一门艺术和科学。它是计算机科学和数学交叉的相对确定的领域,而深度学习只是它的一个很小的子领域。机器学习的概念和工具对于理解深度学习非常重要。
视觉化介绍机器学习(Visual introduction to machine learning)——决策树 ★
Coursera 上最受欢迎的课程,Andrew Ng 的机器学习课程(Andrew Ng's course on machine learning)★★
Larochelle 的课程,没有单独的通用机器学习的介绍性讲座,但是定义和解释了所有必要的概念。
训练和测试模型(K 最近邻/kNN)★★
线性分类(支持向量机/SVM)★★
优化(随机梯度下降/ stochastic gradient descent)★★
机器学习基础 ★★★
可视化的主成分分析讲解 ★
如何有效地用 t-SNE 算法 ★★
大多数流行的机器学习算法都是在 Python 库 Scikit-learn 中实现的。从头开始实现这些算法助于理解机器学习的原理。
Python 的实用机器学习教程(Practical Machine Learning Tutorial with Python),包含了线性回归、kNN 和支持向量机。首先介绍了如何从 scikit-learn 调用算法,然后从头实现算法。★
Coursera 上 Andrew Ng 的课程的许多作业使用 Octave 语言。也可以在 Python 中实现这些算法。★★
神经网络基础
神经网络是强大的机器学习算法。它们构成了深度学习的基础