深度学习入门指南

如何开始使用深度学习?

您的起点取决于您已经掌握了什么。

理解深度学习的先决条件是线性代数、微积分和统计学,以及编程和一些机器学习知识。应用深度学习的先决条件仅仅是学会如何部署模型。

就Deeplearning4j而言,您应该熟练掌握Java,并且熟悉像IntelliJ IDE和自动化构建工具Maven这样的工具。

下面是一些资源列表。这些部分大致按照它们将会有用的顺序组织。

免费的机器学习和深度学习在线课程

Andrew Ng的机器学习课程(YouTube)

Geoff Hinton的神经网络课程(YouTube)

Patrick Winston在麻省理工学院的人工智能介绍(对于那些对人工智能调查感兴趣的人)

斯坦福大学Andrej Karpathy的卷积神经网络课程(对于那些对图像识别感兴趣的人)

ML@B:机器学习速成课程:第1部分

ML@B:机器学习速成课程:第2部分

梯度下降,神经网络如何学习,深度学习第2部分

数学

深度学习涉及的数学基本上是线性代数、微积分和概率论,如果您在本科阶段学习过这些,您将能够理解深度学习论文中的大多数思想和符号。

如果您在大学没有学过这些,不要担心。有许多免费资源可用(包括本网站上的一些资源)。

《微积分简易教程》,作者Silvanus P. Thompson

Seeing Theory:概率和统计的可视化介绍

Andrew Ng的线性代数6部分复习

可汗学院的线性代数课程

机器学习的线性代数;Patrick van der Smagt

卡内基梅隆大学的线性代数复习

机器学习数学

沉浸式线性代数

概率速查表

最佳线性代数书籍

马尔科夫链,可视化解释

机器学习的MCMC简介

特征向量、特征值、PCA、协方差和熵

马尔科夫链蒙特卡罗(MCMC)和机器学习

将矩阵重新学习为线性函数

编程

如果您还不知道如何编程,可以从Java开始,但您可能会发现其他编程语言更容易。Python和Ruby资源可以在更快的反馈循环中传达基本思想。《用困难的方式学Python》和《学会编程(Ruby)》是两个很好的起点。

Scratch:来自MIT的可视化编程环境

学习编程(Ruby)

草莓蝉:一个学习基本编码(Javascript)的移动应用

命令行简介

额外的命令行教程

Vim教程和入门指南(Vim是一种可从命令行访问的编辑器。)

计算机科学简介(哈佛大学edX的CS50)

机器基础知识温和介绍

教学C语言

如果您想直接从这里跳入深度学习而不是Java,我们建议使用Theano以及基于它构建的各种Python框架,包括Keras和Lasagne。

Python

用困难的方式学Python

谷歌的Python课程

Udemy:完整的Python 3大师课程

麻省理工学院:计算机科学和Python编程介绍

David Beazley:Python教程

CS231n:Python Numpy教程

Pyret:Python学习环境

Java

一旦您掌握了编程基础,就可以学习Java,这是世界上最广泛使用的编程语言。

世界上大多数大型组织都在巨大的Java代码库上运行。(Java工作机会永远都会有。)大数据堆栈——Hadoop、Spark、Kafka、Lucene、Solr、Cassandra、Flink——大多是为Java的计算环境JVM编写的。

《Think Java》:交互式基于Web的开发环境

用困难的方式学Java

JShell介绍

5分钟了解JShell

Java资源

Java牧场:Java初学者社区

普林斯顿大学的Java编程入门

《Head First Java》

《Java in a Nutshell》

《250步骤中的完全初学者Java编程》

Deeplearning4j

掌握了这些后,我们建议您通过示例来学习Deeplearning4j。

我们对深度学习的大部分了解都包含在学术论文中。您可以在这里找到一些主要的研究团队。

虽然个别课程对所能教授的内容有限,但互联网并不受此限制。大多数数学和编程问题都可以通过谷歌搜索以及搜索Stackoverflow和Math Stackexchange等网站来解决。

参考资料

https://deeplearning4j.konduit.ai/multi-project/tutorials/beginners