deeplearning.ai课程学习(1)
本系列主要是我对吴恩达的deeplearning.ai课程的理解和记录,完整的课程笔记已经有很多了,因此只记录我认为重要的东西和自己的一些理解。
第一门课 神经网络和深度学习(Neural Networks and Deep Learning)
第一周:深度学习引言(Introduction to Deep Learning)
1、常用神经网络的结构与对应的数据类型
数据类型
结构化数据:表格类型的数据,有明确的行和列。
非结构化数据:音频、视频、图像、文本等类型的数据。
网络结构
标准的NN结构如下图,包含输入层、隐藏层、输出层,前一层的所有节点和下一层的所有节点全部相连。可以认为标准的NN是全连接层组成的。
是最常见的网络结构,在数据量充足或者输入层的特征合适的情况下会获得较好的性能。它的输入一般都是
对于图像应用,我们经常在神经网络上使用卷积(Convolutional Neural Network),通常缩写为CNN。
正如其名,CNN会包含输入层、卷积层、输出层(还会有池化层)。CNN的最大特点就是使用了卷积来提取特征。
对于序列数据,例如音频,有一个时间组件,随着时间的推移,音频被播放出来。作为一维时间序列(两种英文说法one-dimensional time series / temporal sequence)。
在序列数据上经常使用RNN,一种递归神经网络(Recurrent Neural Network)。英语和汉语字母表或单词都是逐个出现的,所以语言也是最自然的序列数据。
当然,现实中的实际问题会有更复杂的情况,比如自动驾驶,会使用一些更复杂的混合的神经网络结构。
2、为什么深度学习会兴起?
假设有一个任务比如说准确率体现在垃圾邮件过滤或者广告点击预测,或者是神经网络在自动驾驶汽车时判断位置的准确性。如果把一个传统机器学习算法的性能与数据量的关系画出来,可能得到一个弯曲的线,如下图。它的性能一开始在增加更多数据时会上升,但是一段变化后它的性能就会像一个高原一样。假设你的水平轴拉的很长很长,它们不知道如何处理规模巨大的数据,而过去十年的社会里,我们遇到的很多问题只有相对较少的数据量。现在,我们的任何行为都会产生数据,并且被收集,使用。
神经网络展现出的是,如果你训练一个小型的神经网络,那么这个性能可能会像下图黄色曲线表示那样;如果你训练一个稍微大一点的神经网络,比如说一个中等规模的神经网络(下图蓝色曲线),它在某些数据上面的性能也会更好一些;如果你训练一个非常大的神经网络,它就会变成下图绿色曲线那样,并且保持变得越来越好。因此可以注意到两点:如果你想要获得较高的性能体现,那么你有两个条件要完成,第一个是你需要训练一个规模足够大的神经网络,以发挥数据规模量巨大的优点,另外你需要能画到x轴的这个位置,所以你需要很多的数据。
可以发现,想要在神经网络上获得更好的性能,往往就是要么训练一个更大的神经网络,要么投入更多的数据。另外这里说的数据是有标签的数据。
此外,红框部分想要说明的是,在数据量较小的情况下,各种算法的性能没有明确的好坏区分。此时决定算法性能的效果取决于你的特征工程以及后续的一些处理(模型融合)。
3、评估与迭代
最近几年,深度学习算法的创新主要在算法计算速度的提高上,例如激活函数从Sigmoid变为了ReLU一方面为了使梯度下降算法运行更快。
在拥有数据的前提下,算法的速度提高意味着在同样的时间内我们能尝试更多的想法,从而最后在应用是能够更好。
参考文献:
[1]. 课程视频:Coursera-deeplearning.ai / 网易云课堂
[2]. 深度学习笔记