课程视频
第一周PPT汇总
吴恩达深度学习专项课程共分为五个部分,本篇博客将介绍第一部分神经网络和深度学习专项的第一周课程:深度学习概论。本周内容比较简单,大多是一些介绍性的内容。通过本周的学习,你将会了解什么是神经网络?用神经网络进行监督学习以及为什么深度学习会兴起?
目录
1.什么是神经网络?
2.用神经网络进行监督学习
3.为什么深度学习会兴起?
首先看一个非常熟悉的房价预测的例子,训练集的输入特征只有面积,输出是房价,可视化该训练集如下图所示:
如果用之前学习的线性回归算法,很显然会想到用一条直线来拟合该训练集。但是,房价是没有负值的,这时可以用上图中的曲线来拟合,该曲线在面积小于0时恒为0,这样就构成了一个最简单的单神经元结构:
输入特征为房子面积,输出为房价,中间为隐藏神经元,该神经元对输入特征完成线性运算并修正小于0的输入为0.实际上,该神经元使用的是ReLU(修正线性单元,修正小于0的输入为0),之后我们会经常使用ReLU,它的图像如下:
以上是一个最简单的单神经元结构,复杂的神经网络结构是由这些简单神经网络结构组合而成,像乐高积木一样。
接下来看一个稍微复杂一些的神经网络,首先为训练集增加3个输入特征,包括卧室数量、地区邮编以及地区富裕程度。此时输入层有4个特征,输出层为房价,隐藏层设置3个隐藏单元(可变),神经网络结构如下:
注意各层之间的单元采用全联接的方式,神经网络的强大之处在于它能在标记训练集上,得到清晰的输入和输出之间的映射关系。
神经网络在监督学习问题上起到了很好的效果,以下列举了一些神经网络在监督学习问题上的一些应用:
针对不同的应用会使用不同的神经网络结构,如房价预测和广告点击预测一般使用标准神经网络结构(全联接网络);图像问题一般使用CNN(卷积神经网络结构);对于文本(单词序列)和语音(时间序列)这种序列数据一般使用RNN(循环神经网络);而对于无人驾驶这种复杂的应用,一般使用混合神经网络结构。
CNN一般用于处理图像数据,RNN一般处理一维序列数据。在之后的课程中我们会详细学习这3种神经网络结构的原理并尝试实现它们。
结构化数据:输入特征有非常清晰明确的定义,如房价预测(房子的面积和卧室数量等特征定义明确)和广告点击预测(用户年龄有清晰的定义):
非结构化数据:如音频、图像和文本,输入特征没有明确的定义,对于图像来说每个像素点可能是一个输入特征:
人类生来就有理解非结构化数据的能力,但对于计算机来说非常困难,但神经网络和深度学习的出现,使得计算机对非结构化数据的理解有了重大突破。
神经网络和深度学习的一些概念早在几十年前就有了,为什么深度学习会在近几年兴起呢?本小节将探讨一下这个问题。
数据层面:
上图的横轴代表标记数据集的规模(用m表示),纵轴代表算法的性能。
对于传统的机器学习算法(SVM,逻辑回归等),当数据集规模在一定范围内增大时,他们的性能是不断提高的,但是超过了某个数据规模,算法性能趋于平坦,此时继续增大数据量是没有意义的。
而对于神经网络来说,增大数据规模,他的性能是可以逐渐提高,对于大型的神经网络来说更明显。当你有海量的数据时,使用大规模神经网络,往往可以取得惊人的效果。
现在我们处于大数据的时代,可以轻松的获得海量的数据,这种数据规模远远超过了传统机器学习算法发挥作用的范围,此时需要使用神经网络结构来充分发挥海量数据的作用。
当数据集的规模较小时,这些学习算法的性能优劣是不确定的,这取决于算法设计的细节和手工设计组件的技巧,此时传统的机器学习算法如SVM有可能比神经网络表现要好;当数据集规模非常大时,神经网络算法就可以稳定的领先传统的机器学习算法。
所以,我们说是规模驱动了深度学习的发展,这里的规模指的是数据规模和网络规模。
计算力层面:
GPU的出现,加快了神经网络算法的训练速度,使训练一个大型网络不再困难。
算法层面:
神经网络算法的改进和创新,归根结底体现在计算力上,加快了神经网络的训练。
最简单的算法改进的例子就是把sigmoid激活函数转变为ReLU激活函数:
对于sigmoid的激活函数来说,当输入很大或很小时,梯度将会趋近于0,此时使用梯度下降法更新参数会非常慢,网络训练速度也会非常慢;而改进为ReLU激活函数后,对于正输入,他的梯度恒为1,不会出现梯度趋于0的问题,可以加快网络的训练速度。
对于一个具体的应用问题,使用深度学习方法来解决时。迭代过程如上图所示,首先有一个初步的想法,然后编程实现,通过实验的效果来评价模型的性能,进而改进想法和神经网络结构...以此不断循环迭代,直到设计出一个合适的、性能优良的神经网络结构。
而计算力和算法的进步,可以极大的缩短上述迭代的周期,加速神经网络的训练速度,从而使深度学习更好更快的发展。