参与:Jane W、Rick、蒋思源 深度学习是发展迅速的一个计算机科学和数学交叉的领域。它是更宽泛的机器学习领域一个相对新的分支。机器学习的目的是教计算机完成基于给定数据的各种任务。本教程是为那些知道一些数学,又懂一些编程语言,并想研究深度学习的人准备的。 文中的链接请点击网址: 预备知识
你必须有大学数学知识。你可以在深度学习这本书的前几章中回顾这些概念: 深度学习,第 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 的课程,没有单独的通用机器学习的介绍性讲座,但是定义和解释了所有必要的概念。 1. 训练和测试模型(K 最近邻/kNN)★★ 2. 线性分类(支持向量机/SVM)★★ 3. 优化(随机梯度下降/ stochastic gradient descent)★★ 5. 机器学习基础 ★★★ 可视化的主成分分析讲解 ★ 如何有效地用 t-SNE 算法 ★★ 大多数流行的机器学习算法都是在 Python 库 Scikit-learn 中实现的。从头开始实现这些算法助于理解机器学习的原理。 Python 的实用机器学习教程(Practical Machine Learning Tutorial with Python),atv,包含了线性回归、kNN 和支持向量机。首先介绍了如何从 scikit-learn 调用算法,然后从头实现算法。★ Coursera 上 Andrew Ng 的课程的许多作业使用 Octave 语言。也可以在 Python 中实现这些算法。★★ 神经网络基础 神经网络是强大的机器学习算法。它们构成了深度学习的基础。
一个交互可视化的教程,介绍了神经网络的基础——显示简单的神经网络如何做线性回归 ★ 1. 前馈神经网络(feedforward neural network)★★ 2. 训练神经网络(直到 2.7)★★ 4. 反向传播(backpropagation)★★ 5. 神经网络的架构 ★★ 1. 使用神经网络来识别手写数字 ★ 2. 反向传播算法的原理 ★ 4. 神经网络以计算任何函数的可视化证明 ★ 6. 深度前馈网络 ★★★ 理解为什么从头开始实现反向传播算法很重要 ★★ 计算图(computational graph)中的微积分:反向传播 ★★ 玩转神经网络!★ 尝试从头实现单层神经网络,包括训练过程。 只用 Python / NumPy 实现 softmax 分类器以及一个简单的神经网络——用 Jupyter notebook ★ Andrej Karpathy 的神经网络黑客教程讲述了如何在 Java 中实现反向传播。★ 在 Python 中从头开始实现一个神经网络 ★ 改进神经网络的学习方式 (责任编辑:本港台直播) |