0%

吴恩达《深度学习专项》笔记+代码实战(一):深度学习入门

最近在学吴恩达的《深度学习专项》(Deep Learning Specialization)。为了让学习更有效率(顺便有一些博文上的产出),我准备写一些学习笔记。笔记的内容比较简单,没有什么原创性的内容,主要是对课堂的知识进行梳理(这些文章的标题虽然叫”笔记“,但根据我之前的分类,这些文章由于原创性较低,被划分在”知识记录“里)。如果读者也在学这门课的话,可以对照我总结出来的知识,查缺补漏。之后几节课有课后作业,我会在笔记里讲解我的编程思路,给读者一些编程上的启发。

文章中的正文主要是对课堂内容的总结。引用里的内容和每篇笔记的总结是我个人的观点或评论。

什么是神经网络

我们把一个有输入有输出的计算单元叫做“神经元”。神经元可以简单地理解成一个线性函数。比如要预测房价和房屋面积的关系,我们可以近似地用一个线性函数去拟合。这个函数就是一个神经元。

事实上,一个神经元不仅包含一个线性函数,还包括一个激活函数。这里提到了激活函数 ReLU 的概念,其具体内容应该会在后面介绍。

神经元的堆叠,构成了神经网络,如下图所示。

在用一个神经元来表示房价和房屋面积的关系时,神经元的输入是房屋面积,输出是房价。而用多层神经元时,每个神经元的意义可能都不一样。比如中间的神经元可能会根据输入的邮政编码、地址特征,输出一个表示房屋地段的中间特征。在神经网络中,这些特征都是自动生成的(意味着我们只需要管理神经网络的输入和输出,而不用指定中间的特征,也不用理解它们究竟有没有实际意义)。

以前的一些机器学习要手动设置特征。而神经网络这种自动生成特征的性质,是其成功的原因之一。

用神经网络做监督学习

要理解监督学习,其实应该要对比无监督学习。本节实际上是介绍了监督学习的几个例子。

常见的神经网络有三类:

  1. 标准神经网络(即全连接网络)可以用于房屋分类、广告分类问题。(这些问题一般输入是结构化的)
  2. 卷积神经网络(CNN)一般用于图像相关的问题,比如图片猫狗分类,自动驾驶中识别其他车辆的位置。
  3. 循环神经网络(RNN)一般用于处理有时序的序列数据,比如和声音、文字有关的应用都需要RNN。

结构化数据,就是所有其数据项都是人能理解的(房子的面积、价格)。对比来看,无结构化的数据的具体含义是无法直接解释的,比如图像每一个像素值、声音某时刻的频率和响度、某一个文字/单词。

为什么最近深度学习“起飞”了?

这张图足以解释深度学习腾飞的原因。随着数据量的增加,所有方法都有性能的上限。而对于神经网络来说,结构越复杂的神经网络,其性能上限越高。复杂的神经网络(深度学习方法)在海量数据不断产生的今天更具优势。

光有大量的数据,没有使用数据的方法是不够的。总结来看,深度学习在近几年得到发展的原因有下:

  • 互联网的发展使得数字数据大量增长。
  • GPU等计算设备使得处理数据的硬件变强。
  • 深度学习的算法不断更新迭代,从软件层面上加快了数据处理。(比如激活函数的改进,从sigmoid到ReLU)

深度学习本质上还是以实验为主。计算能力上来了,研究人员做实验做得快了,各种各样的深度学习的应用也就出来了。各种应用又鼓舞着更多人参与深度学习研究。也就是说,是计算能力的提升使得近年来深度学习进入了良好的正反馈循环中。

总结

第一周的课没有什么深奥的内容,主要是给对深度学习不太熟悉的同学们介绍了下背景知识。

在我看来,这周的课需要记住的东西有:

  • 神经元有输入和输出的计算单元。神经元堆叠成了神经网络。
  • 大致有三种不同类型的神经网络,适用于不同的任务。
  • 神经网络的性能随其规模和数据量而增长。
  • 计算效率的提高使深度学习近期得到飞速发展。