北京 | 深度学习与人工智能研修

12月23-24日

再设经典课程 重温深度学习阅读全文>

正文共6058个字,10张图,预计阅读时间:16分钟。

注意:本文已经更新,新版结合深度学习简介和发展历程,给出了更详尽的学习资料参考。新版链接:深度学习简介与学习资料参考(http://peteryuan.net/deep-learning-intro/)

本文主要介绍一些与神经网络和自然语言处理相关的经典教程、资料,以便初学者能有个比较清晰的学习参考。

从机器学习到深度学习

深度学习脱胎于神经网络,而神经网络又是一种机器学习的经典算法。因此,如果希望从理论上更深刻地掌握深度学习,建议了解相关的机器学习知识。

机器学习

Andrew Ng.(吴恩达)的机器学习教程

机器学习入门方面,Ng的教程应该算是比较经典的资料了。网上有两种版本的课程资料:

1、Stanford CS229 Machine Learning (http://cs229.stanford.edu/)来自Stanford官网,其中materials(http://cs229.stanford.edu/materials.html)部分有详细的课件可以学习参考。

2、Coursera 机器学习(https://www.coursera.org/learn/machine-learning) Ng教程的Coursera版本,如果习惯Coursera的学习模式的话,可以采用该教程学习。此外,网易公开课也有机器学习(http://open.163.com/special/opencourse/machinelearning.html)的课程,一共20集,均有中文翻译的字幕。

为了与后续的神经网络、深度学习等知识进一步衔接,建议在学习机器学习时,重点关注这些知识点:

机器学习基本概念(模型 -> 训练 -> 测试) 有监督学习与无监督学习 Linear Regression与Softmax Regression 目标函数的概念,如何训练一个模型 梯度下降等优化算法 过拟合与欠拟合的理解 模型的约束与正则(Regularization)

深度学习

尽管深度学习现在已涌现出多样的模型,但其最基础的模型DNN(Deep Neural Network)则脱胎于神经网络中的MLP(Multi-Layer Perceptron)模型。在学习深度学习相关内容时,建议先粗略了解下神经网络的发展历史,所谓的三起三落,对于每次的兴起或是衰落,如果能清楚地知道其兴衰原因,就能对神经网络与深度学习有个宏观的了解,便于迅速把握其脉络。

首先推荐两个深度学习入门的博客:

1、Deep learning学习笔记整理 (http://blog.csdn.net/zouxy09/article/details/8775360)这篇文章比较详细地介绍了神经网络到深度学习的背景知识,特别是从特征学习这个角度讲到了深度学习的重要意义。文中也涉及到不少常见的深度学习模型,这部分简要了解即可。

2、神经网络浅讲:从神经元到深度学习(http://www.open-open.com/lib/view/open1452752687042.html) 这篇文章侧重于从神经网络历史发展的角度,简述了神经网络与深度学习相关的内容。

下面介绍几个比较经典的深度学习教程:

Neural Networks and Deep Learning (Michael Nielsen)

这个资料可以作为神经网络/深度学习的极佳入门资料。因为其中有不少动画演示,目前暂时只能在网页端查看,作者本人也表示并没有出pdf等版本的打算。该教程以图像领域经典的mnist手写数字识别任务为例,几乎是从零开始,介绍了神经网络与深度学习中很重要的一些基本概念。该教程的主要内容如下:

1) Using neural nets to recognize handwritten digits 2) How the backpropagation algorithm works 3) Improving the way neural networks learn 4) A visual proof that neural nets can compute any function 5) Why are deep neural networks hard to train? 6) Deep learning

个人觉得,该教程的主要亮点在于,不依赖任何第三方机器学习的库(仅使用了numpy),一步步搭建起深度学习网络模型,对BP(反向传播)算法做了比较详细的阐释和推导,并且利用case study描述了为什么神经网络可以从理论上去逼近任何一个函数(但并不是数学意义上的证明)。

由于该教程立足于入门,因此仅介绍了DNN,并没有介绍深度学习其他众多的模型,现在经常使用的ReLU激活函数、dropout技术等都没有介绍。实现上,也没有采用向量化实现(这会严重影响程序执行效率)。但这并不妨碍该教程成为一个经典的入门材料。学习时,建议按照该教程思路,能够自己将神经网络实现一遍。

前几天重新看了下这个教程,发现作者已经加入了关于ReLU, dropout, Theano等不少新的内容,力荐这个教程啊!以及,众网友们合作出了该教程的LaTeX中文版pdf,可以从这里(https://github.com/zhanggyb/nndl/releases)下载。

Stanford UFLDL(Unsupervised Feature Learning and Deep Learning)教程

这个教程从名字上就强调了深度学习的重要意义——特征学习。该教程作者也是Andrew Ng,如果从Ng的机器学习教程入手,再学习该教程会有比较好的连贯性。教程在Stanford官网有个主页,如主页所述,教程有新版,旧版的英文版和中文版。新版相对于旧版,在知识架构了做了比较大的改动,但具体到详细的知识点,差别不是太大。

Deep Learning Tutorials

Deep Learning Tutorials(http://deeplearning.net/tutorial/)教程是Bengio团队LISA lab维护的一个深度学习教程。该教程最大的特色是,使用基于theano工具,将教程中的各个模型均实现了一遍,因此很适合详细地去了解每个模型的细节。实际上,theano工具便是该团队开发的。学习该教程时,建议按照如下的顺序(教程主页已经有阅读顺序的建议):

[重要] Machine Learning, Deep Learning and Theano basics [重要] Logistic Regression -> MLP (Multi-Layer Perceptron) -> Deep CNN (Convolutional Networks) Auto Encoders -> Stacked DAE (Denoising Autoencoders) RBM (Restricted Boltzmann Machines) -> DBN (Deep Belief Networks) Other Models

以上是几个比较经典的深度学习教程。如果希望系统地按照课程学习方式来学习相关知识,可以参考Deep Learning大牛Hinton老师的Coursera课程Neural Networks for Machine Learning(https://link.jianshu.com/?t=https://www.coursera.org/course/neuralnets)。值得注意的是,如果仅是服务于个人的研究工作的话,里面涉及到的模型不必面面俱到,比如Restricted Boltzmann Machines现在使用的已经不是太广泛了。06年导致Deep Learning火起来的unsupervised layer-wise pre-training方法,也往往可以用良好的初值选取策略、ReLU和dropout等技术来替代(但并不完全等价)。

自然语言处理

应当说,Deep Learning最早是在图像和语音领域火起来的,但近些年的研究也逐渐发现,Deep Learning在NLP (Natural Languang Processing)领域也开始取得可喜的效果。实际上,图像、语音、文本,本来就是信息记载的不同载体,Deep Learning能综合运用在这些领域的不同任务上,不足为怪。这里引用下Deep Learning Tutorials中的一句话:

Deep Learning is about learning multiple levels of representation and abstraction that help to make sense of data such as images, sound, and text.

重要部分我已经加粗显示了。

实际上,在使用神经网络技术之前,NLP的研究经历了从规则到统计的过程。这段有趣的历史可以参考吴军博士的《数学之美》中的前7章内容。在学习Deep Learning应用于NLP之前,建议先了解下简单的统计语言模型的知识,包括语言模型、n-gram、VSM (Vector Space Model)和One-Hot等基本概念。关于统计语言模型,可以参考我们是这样理解语言的-统计语言模型(http://www.flickering.cn/nlp/2015/02/%E6%88%91%E4%BB%AC%E6%98%AF%E8%BF%99%E6%A0%B7%E7%90%86%E8%A7%A3%E8%AF%AD%E8%A8%80%E7%9A%84-2%E7%BB%9F%E8%AE%A1%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/)这篇文章。

Deep Learning for NLP课程推荐:

Stanford University CS224d: Deep Learning for Natural Language Processing

CS224d是专门介绍Deep Learning for NLP的课程,从基本的语言模型、词的向量表示开始,介绍了深度学习的相关知识,以及在NLP中常见的模型。目前而言,在NLP中常见的模型包括CNN、Recursive NN和Recurrent NN模型,尤以卷积、循环网络居多。

词嵌入

DL应用于NLP,最激动人心的成果当属词嵌入(Word Embeddings)概念的产生了。简单来说,就是用一个低维、稠密的向量来表示一个word,这种表示是通过神经网络语言模型学习而来的。当得到这些词向量之后,研究者发现它有着很好的特定,比如蕴含语义特征(man-woman $\approx$ king-queen),用这些词向量代替原来的特征,可以在各种任务中取得state of art的效果,等等。

此外,词向量的获取往往依赖于语言模型,因此便产生了神经网络语言模型的概念。从2001/2003年Bengio的工作开始,有不少基于神经网络的语言模型已被提出,也产生了不少开源工具来产生词向量,如word2vec与GloVe等。

详细知识点不再展开,推荐相关教程、资料如下:

1、Deep Learning, NLP, and Representations(http://colah.github.io/posts/2014-07-NLP-RNNs-Representations/) 来自colah's blog,简要概述了DL应用于NLP的研究,重点介绍了Word Embeddings,网上可找到该文的中文版。

2、Deep Learning in NLP (一)词向量和语言模型 (http://licstar.net/archives/328)总结了词向量和常见的几种神经网络语言模型。

3、我们是这样理解语言的-3神经网络语言模型(http://www.flickering.cn/nlp/2015/03/%E6%88%91%E4%BB%AC%E6%98%AF%E8%BF%99%E6%A0%B7%E7%90%86%E8%A7%A3%E8%AF%AD%E8%A8%80%E7%9A%84-3%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/) 与上一文章类似,可参考阅读。

语义组合

在获取词向量之后,我们得到了word的向量式表示,因此下一个很自然的问题是,如果利用这些word是表示,获取更高层次概念(如phrase, sentence, document)的表示,这其中涉及的概念即为语义组合(Semantic Composition)。

目前,常见的语义组合方法可以分为以下4类:

1、简单的加权组合 如直接拼接、平均或weighted sum等。

2、卷积神经网络(CNN) 可参考Understanding Convolutional Neural Networks for NLP(http://www.wildml.com/2015/11/understanding-convolutional-neural-networks-for-nlp/)这篇文章学习了解。

3、递归神经网络(Recursive NN) 借助语法树等树状结构,Richard Socher等人的研究为主。

4、循环神经网络(Recurrent NN) 借助有记忆单元的神经元结点保存历史(或未来)的信息,常用的模型是LSTM (Long Short Term Memory)与GRU (Gated Recurrent Unit)。相比于CNN等模型,LSTM与GRU的学习可能稍微难一点,可以参考知乎-有哪些LSTM(Long Short Term Memory)和RNN(Recurrent)网络的教程。

上面的这些模型在CS224d课程中也均有比较详细的介绍。

总结来说,如果希望比较详细地了解神经网络、深度学习的细节,还是需要不少学习的。现在很多第三方的库(如Caffe、Theano、Keras、Lasagne、TensorFlow等)使得许多深度学习模型可以快速实现,但这些库往往屏蔽了诸多算法的细节(如BP、Gradient Descent、AdaDelta等),如果希望进一步做一些比较深入的工作,对相关模型的深入了解还是必不可少的。

原文链接:http://www.jianshu.com/p/b80b1d0a063a

查阅更为简洁方便的分类文章以及最新的课程、产品信息,请移步至全新呈现的“LeadAI学院官网”:

www.leadai.org

请关注人工智能LeadAI公众号,查看更多专业文章

大家都在看

LSTM模型在问答系统中的应用

基于TensorFlow的神经网络解决用户流失概览问题

最全常见算法工程师面试题目整理(一)

最全常见算法工程师面试题目整理(二)

TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络

装饰器 | Python高级编程

今天不如来复习下Python基础



点击“阅读原文”直接打开报名链接

学习资料参考:从深度学习到自然语言处理相关推荐

  1. SQL SERVER深入学习学习资料参考

    SQL SERVER深入学习学习资料参考 1.微软Webcast<sql server 2000完结篇>. 尽管微软Webcast出了很多关于Sql Server的系列课程,但是最为深入讲 ...

  2. [资料汇总]机器学习深度学习视频资料大汇总

    ##第一部分 基础语言 pandax视频教程 链接: https://pan.baidu.com/s/1pLqavVX 密码: fathpython入门到精通 链接: https://pan.baid ...

  3. [资料汇总]机器学习深度学习视频资料汇总

    ##第一部分 基础语言 pandax视频教程 链接: https://pan.baidu.com/s/1pLqavVX 密码: fathpython入门到精通 链接: https://pan.baid ...

  4. [翻译] 神经网络与深度学习 第六章 深度学习 - Chapter 6 Deep learning

    目录: 首页 译序 关于本书 关于习题和难题 第一章 利用神经网络识别手写数字 第二章 反向传播算法是如何工作的 第三章 提升神经网络学习的效果 第四章 可视化地证明神经网络可以计算任何函数 第五章 ...

  5. [转载] python学习-基础教程、深度学习

    参考链接: 在Python中使用NLTK对停用词进行语音标记 人工智能学习线路图 Python教程 Python 教程Python 简介Python 环境搭建Python 中文编码Python 基础语 ...

  6. 打造企业级云深度学习平台——小米云深度学习平台的架构设计与实现

    作者:陈迪豪,小米深度学习工程师,负责小米云深度学习平台的架构和实现,目前专注于TensorFlow和Kubernetes社区. 责编:何永灿,欢迎人工智能领域技术投稿.约稿.给文章纠错,请发送邮件至 ...

  7. 【自学者】学习小结(关于深度学习、视觉和学习体会)

    以下仅仅是考研上岸到开学一个月期间的自学体会,仅作为参考,仅代表当时观点,不代表现在观点,有空的话我会出一期现在的一些小建议博客,仅作为小建议,本人不是很厉害,只是想分享当时的经验,大佬请自动绕过,最 ...

  8. 吴恩达Deeplearning.ai课程学习全体验:深度学习必备课程 By 路雪2017年8月14日 11:44 8 月 8 日,吴恩达正式发布了 Deepleanring.ai——基于 Cours

    吴恩达Deeplearning.ai课程学习全体验:深度学习必备课程 By 路雪2017年8月14日 11:44 8 月 8 日,吴恩达正式发布了 Deepleanring.ai--基于 Course ...

  9. 深度学习(二)——深度学习常用术语解释, Neural Network Zoo, CNN, Autoencoder

    Dropout(续) 除了Dropout之外,还有DropConnect.两者原理上类似,后者只隐藏神经元之间的连接. 总的来说,Dropout类似于机器学习中的L1.L2规则化等增加稀疏性的算法,也 ...

最新文章

  1. OSPF LSA序列号问题
  2. MySql分表、分库、分片和分区的区别
  3. Thread类(线程)
  4. Oracle中table变量在JDBC中的运用
  5. [原]TCP/UDP使用细节备忘
  6. Git基础知识教程整理(Git基本操作)
  7. vs2015html5环境配置,visual studio 2015 PreView环境搭建图文教程
  8. 用Linux同时编辑两个文档,如何使用Vim编辑多个文件
  9. VS2010团队开发调试器无法继续运行该进程,项目文件“”已被重命名或已不再解决方案中
  10. 美团靠外卖和到店业务赚来的钱
  11. Linux基础三(软件安装管理)
  12. C++包含头文件尖括号和双引号的区别
  13. 阿里云推出全球云网络人才赋能计划,打造云网络认证体系
  14. [置顶] 原来JAVA对象转JSON格式的字符串如此简单,返回来暂时不会做,留下纪念下
  15. Win10打开或关闭任务栏系统图标
  16. python word转excel题库_【Python应用软件】Word表格怎么转换Excel#Word表格汇总Excel
  17. java栈溢出_java 内存溢出 栈溢出的原因与排查方法
  18. 【BZOJ1814】Ural 1519 Formula 1 (插头dp)
  19. 51单片机的键盘分类和运用
  20. 华硕服务器怎么装系统教程视频,华硕怎么安装linux系统教程视频

热门文章

  1. wordpress插件翻译不生效_谷歌浏览器自带翻译功能如何设置?不喜欢用插件的快来看...
  2. pythonfor循环输入_Python之for循环的使用
  3. python 数学基础_Python3数学基础 - 随笔分类 - 既生喻何生亮 - 博客园
  4. python日志模块 限制日志记录数_python日志记录-logging模块
  5. tkinter中text属性_python tkinter基本属性详解
  6. 计算机的限制而被取消win7,win7系统本次操作由于这台计算机限制而被取消的解决方法...
  7. 一个vue请求接口渲染页面的例子
  8. 漫谈ElasticSearch关于ES性能调优几件必须知道的事(转)
  9. spring aop的两种写法aspect和advisor
  10. [工作积累] UE4 TAA ReProjection的精度处理