吴恩达《神经网络与深度学习》课程笔记

课堂笔记方便自己回忆

课程相关

课程地址见 https://mooc.study.163.com/course/2001281002#/info

该专项课程的Coursera地址:https://www.coursera.org/specializations/deep-learning

什么是神经网络?

用神经网络进行监督学习

监督式学习与非监督式学习本质区别就是是否已知训练样本的输出y。在实际应用中,机器学习解决的大部分问题都属于监督式学习,神经网络模型也大都属于监督式学习。

应用实例

一般的监督式学习(房价预测和线上广告问题)--使用标准的神经网络模型

图像识别处理问题,我们则要使用卷积神经网络(Convolution Neural Network),即CNN。

类似语音这样的序列信号时,则要使用循环神经网络(Recurrent Neural Network),即RNN。

其它的例如自动驾驶这样的复杂问题则需要更加复杂的混合神经网络模型。

Structured Data通常指的是有实际意义的数据。例如房价预测中的size,#bedrooms,price等;例如在线广告中的User Age,Ad ID等。这些数据都具有实际的物理意义,比较容易理解。而Unstructured Data通常指的是比较抽象的数据,例如Audio,Image或者Text。 

为什么深度学习会兴起?

在处理海量数据和建立复杂准确的学习模型方面,深度学习有着非常不错的表现。然而,在数据量不大的时候,例如上图中左边区域,深度学习模型不一定优于传统机器学习算法,性能差异可能并不大。

所以说,现在深度学习如此强大的原因归结为三个因素:

  • Data

  • Computation

  • Algorithms

其中,数据量的几何级数增加,加上GPU出现、计算机运算能力的大大提升,使得深度学习能够应用得更加广泛。另外,算法上的创新和改进让深度学习的性能和速度也大大提升。举个算法改进的例子,之前神经网络神经元的**函数是Sigmoid函数,后来改成了ReLU函数。之所以这样更改的原因是对于Sigmoid函数,在远离零点的位置,函数曲线非常平缓,其梯度趋于0,所以造成神经网络模型学习速度变得很慢。然而,ReLU函数在x大于零的区域,其梯度始终为1,尽管在x小于零的区域梯度为0,但是在实际应用中采用ReLU函数确实要比Sigmoid函数快很多。

构建一个深度学习的流程是首先产生Idea,然后将Idea转化为Code,最后进行Experiment。接着根据结果修改Idea,继续这种Idea->Code->Experiment的循环,直到最终训练得到表现不错的深度学习网络模型。如果计算速度越快,每一步骤耗时越少,那么上述循环越能高效进行。

第一章笔记 http://www.javashuo.com/article/p-pxfzrxlk-hx.html