点击量:1019
引言
2017年8月8日,吴恩达正式发布了Deepleanring.ai,一个发布在Coursera上的深度学习系列课程Deep Learning Specialization,希望将人工智能时代的基础知识传播到更多人身边。网上对这门课的评价很高,算是深度学习的必备课程了,所以想入门深度学习的同学千万不要错过。但在enroll这门课之前,个人强烈建议先学完同样由Andrew Ng教的Machine Learning,这门课才是最基础的机器学习课程,里面包含了很多最基本,最重要的思想和概念。学完了这门课再来上这门深度学习会感觉比较轻松吧,整体难度并不大,所以在课程发布的前几周我就全部学完了(那时候只发布了前三课),主要是因为课程开放的前一周是免费的,所以学的非常快。但同时也很仓促,也因此没有做笔记。导致的结果就是现在你再问我这些课程到底讲了什么,我已经忘得差不多了。现在又得重新花时间去学习,这是很浪费时间的。所以在学习新知识的过程中,适当地记录和梳理是非常有必要的。从今天开始,我会把这门深度学习课程的学习笔记整理到博客里,并不会面面俱到,只会记录于我而言很重要的知识点。
Deep Learning Specialization系列的深度学习课程分为五个子课程:
- Neural Networks and Deep Learning
- Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
- Structuring Machine Learning Projects
- Convolutional Neural Networks
- Sequence Models
本文总结第一个课程:Neural Networks and Deep Learning,这块比较基础,大部分内容已经在Coursera Machine Learning Week 4&Week 5中被cover过了,具体的也可以参考我的文章:Machine Learning-神经网络(Neural Network)。
Week1-Introduction to Deep Learning
Supervised Learning with Neural Networks
- 目前,深度学习技术主要在以下领域有着很成功的应用:
| Input(x) | Output(y) | Application | Model |
|---|---|---|---|
| Home Features | price | Real Estate | Standard NN |
| Ad, user info | Click on ad?(0/1) | Online Ad | Standard NN |
| Image | Recognzing Object | Photo tagging | CNN |
| Audio | Text transcript | Speech recognition | RNN |
| English | Chinese(or other) | Machine translation | RNN |
| Image, Radar info | Position of other cars | Autonomous driving | Custom |
从上面的几个例子可以看出,针对不同的应用场景,我们会选择不同的神经网络模型。对于房价预测,广告预测这种一般的监督学习问题,我们往往采用标准的神经网络模型,即Standard NN。而对于图像处理,一般是采用卷积神经网络(Convolution Neural Network),即CNN。对于处理类似于语音和翻译这种时序信号,我们一般会采用带有记忆功能的循环神经网络(Recurrent Neural Network),即RNN;而对于自动驾驶,我们可能会选择一些复杂的,高度自定义的网络模型。
- 结构化(Structured Data)和非结构化数据(Unstructured Data)
结构化数据:一般指的就是数据库里的数据
非结构化数据(Unstructured Data):比如语音,图片,文本等
-
为什么现阶段深度学习能取得很大的成功?(Why is Deep Learning taking off ? )
下面这个图表中,横轴表示标签数据量(Amount of labeld data),纵轴则表示算法的性能。

这个图表能解读出很多东西:
- 在数据量很小的情况下,神经网络和传统的机器学习算法在性能上差别并不大(不分伯仲)
- 传统的机器学习算法在数据量达到一定程度之后,性能的提升非常缓慢
- 神经网络的性能随着数据量的增加会有一个很大的跃升,并且远超传统的机器学习算法
- 在大数据集下,越大的神经网络,性能越好
接下来,与其问为什么最近深度学习取得了巨大的成功,不如先问问为什么之前默默无闻?我们都知道,神经网络并不是什么新奇的算法,这玩意儿早在上个世纪五六十年代就被提出来了,之后一直不温不火。为什么呢?这得先从神经网络的特点说起,相比于传统的机器学习算法,神经网络其实是比较臃肿的,它有如下特点:
- 训练很复杂,参数众多,调参很麻烦
- 训练时需要很大的计算量
- 性能的提升很大程度上取决于训练数据集的大小
而我们知道在2000年以前,在那个时代人类并没有能力收集到大量的数据,那时的我们一直生活在小数据时代,而且计算机的运算能力也跟不上。一些传统的机器学习方法(比如SVM,线性回归,逻辑回归等)在小范围数据集下,针对某些特定的问题已经能得到非常好的效果了,所以神经网络根本派不上用场。但是,随着大数据时代的来临,这一切有了很大的改变,深度学习的成功主要归结于以下几点:
- Data
大数据、数字化时代的到来,得益于互联网,智能终端的发展,在过去的20年人类收集到了大量的数据,这是之前的时代所无法比拟的 - Computation
得益于CPU和GPU的升级 - Algorithms
算法的进步,举个例子,之前神经网络中的激活函数采用的是Sigmoid,后来换成了ReLU(Rectified Linear Unit,线性整流函数)。因为sigmoid函数有个特点,函数曲线越往两端越平滑,那么它的导数(梯度)就会很小,从而导致梯度下降非常缓慢。而ReLU则没有这个问题,它在大于0的区域导数是一个恒定的常数,而在小于0的区域导数为0,因此采用ReLU作为激活函数的神经网络,梯度下降会很快。
Week2-Netural Networks Basics
Logistic Regression as a Neural Network
这一部分主要内容是机器学习的一些基本概念,比如Binary Classification, Logistic Regression, cost function,梯度下降和导数等等,这些不再赘述。
Python and Vectorization
这部分主要讲解如何使用Python进行向量化运算,还有Jupyter的使用。
Week3-Shallow Neural Networks(浅层神经网络)
详细介绍了神经网络的结构(三层,single hidden layer),正向传播,反向传播,随机初始化等。
Week4-Deep Neural Networks(深度神经网络)
所谓深度神经网络不过是多了几层的hidden layer而已,计算方法和浅层神经网络没什么本质的区别。
Parameters(参数)和Hyperparameters(超参)
-
Parameters指的是神经网络学习得到的参数,比如W[1],b[1],W[2],b[2]…
-
Hyperparameters则指的是神经网络本身的参数,比如:learning rate(学习曲率),iterations(迭代次数),hidden layer的数量,hidden units,每一层神经元的数量,激活函数:sigmoid, ReLU…,minibatch size,正则化方法等等