我该如开始使用深度学习?
你从哪里开始取决于你已经知道了什么。
真正理解深度学习的先决条件是线性代数、微积分和统计学,以及编程和一些机器学习。应用它的先决条件是学习如何部署模型。
在DL4J的场景中,你应该很了解JAVA并且对类似IntelliJ IDE的工具和自动化构建工具Maven感到舒服。 Skymind 的SKIL还包括使用Python的机器学习工具的托管Conda环境。
下面你会找到一个资源列表。这些章节大致按它们有用的顺序组织起来。
免费的机器和深度学习在线课程
- 吴恩达在YouTube上的机器学习课程
- Geoff Hinton 在YouTube上的神经网络课程
- Patrick Winston人工智能介绍 @MIT (面向那些对人工智能的调查感兴趣的人)
- Andrej Karpathy斯坦福卷积神经网络课程 (面向那些对图片识别感兴趣的人)
- ML@B: 机器学习速成课程: 第一部分
- ML@B: 机器学习速成课程: 第二部分
- 梯度下降,神经网络如何学习,深度学习, 第二部分
数学
深度学习所涉及的数学基本上是线性代数、微积分和概率,如果你在本科阶段学习了这些,你将能够理解深层学习论文中的大部分思想与符号。如果没有在大学里学习过,就不要害怕。有很多免费的资源(有一些在这个网站上)。
- 看得见的理论: 概率与统计的可视化介绍
- 吴恩达 6部分线性代数综述
- Khan Academy的线性代数课程
- 机器学习所涉及的线性代数; Patrick van der Smagt
- CMU的线性代数综述
- 用于机器学习的数学
- 拟真线性代数
- 概率速查表
- 最佳线性代数书
- 马尔可夫链,视觉解释
- 机器学习的MCMC介绍
- 特征向量、特征值、主成分分析、协方差和熵
- 马尔可夫链蒙特卡洛(MCMC)与机器学习
编程
如果你还不知道如何编程,你可以从Java开始,但你可能会发现其他语言更容易。Python和Ruby资源可以在更快的反馈循环中传达基本思想。“学习Python的硬方法”和“学习编程(Ruby)”是两个很好的开始。
- Java学习的硬方法
- Python学习的硬方法
- Pyret: 一个Python学习环境
- Scratch: 一个来自MIT的可视化编程环境
- 学习Ruby编程
- 命令行介绍
- 附加命令行教程
- 一个Vim基础教程 (Vim 是一种用命令行访问的编辑器。)
- 计算机科学介绍 (CS50 @Harvard edX)
- 机器原理概论
如果你想不使用JAVA而直接使用深度学习,我们推荐Theano和各种可以顶替它的Python框架,包括Keras 和 Lasagne。
Java
一旦你有了编程基础,就可以着手Java,这是世界上使用最广泛的编程语言。世界上大多数大型组织都使用巨大的Java代码库。(总是有JAVA的作品)(大数据栈—Hadoop, Spark, Kafka, Lucene, Solr, Cassandra, Flink –在很大程度上是为Java的计算环境JVM编写的。
- Think Java: 基于Web的交互式开发环境
- 学习 Java 的硬方法
- Java 资源
- Java Ranch: 一个Java 初学者社区
- Java编程介绍 @Princeton
- 深入浅出学Java
- Java技术手册
- Java初学者编程250步
Deeplearning4j
带着那些,我们推荐你通过它的 例子来走近DL4J。
你也可以下载一个 智能层免费版, 它是支持 Python, Java 和 Scala 机器学习和数据科学的工具 。 SKIL是一个可以在prem和云端工作的机器学习后端,可以装载你的软件,提供一个机器学习模型服务器 。
其它资源
我们所知道的关于深度学习的大部分内容都包含在学术论文中。你可以在这里找到一些主要的研究小组。
虽然个别课程对他们所能教的东西有限制,但互联网却没有。大多数的数学和编程问题可以通过Google和搜索如 Stackoverflow 和 Math Stackexchange。