前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DeepLearningAI 学习笔记 1.1 深度学习概论

DeepLearningAI 学习笔记 1.1 深度学习概论

作者头像
ApacheCN_飞龙
发布2019-02-15 10:10:42
3630
发布2019-02-15 10:10:42
举报

1.1 深度学习概论

视频:第一周 深度学习概论 整理:飞龙

什么是神经网络?

“深度学习”指的是训练神经网络,有时候规模很大,那么神经网络究竟是什么呢?在这个视频中,我会讲些直观的基础知识。

我们从一个房价预测的例子开始。假设有一个六间房屋的数据集,已知房屋的面积,单位是平方英尺或平方米,以及房屋价格。你想要找到一个函数,根据房屋面积来预测房价。

如果你懂线性回归,你可能会说,好吧,用这些数据来拟合一条直线。于是,你可能会得到这样一条直线。但奇怪的是,你可能也知道,价格永远不会为负,因此直线不大合适,它最后会让价格为负。我们在这里弯曲一点,让它结束于 0。这条粗的蓝线,就是你要的函数,根据房屋面积预测价格。

这里的直线拟合得很好。你可以把这个函数看成一个非常简单的神经网络,你刚刚用它来拟合房屋价格。这几乎是最简单的神经网络了。

让我画在这里,我们把房屋的面积,作为神经网络的输入,称之为x。通过这个节点,这个小圈圈,最后输出了价格,用y表示。这个小圆圈就是一个独立的神经元,你的网络实现了左边这个函数的功能。这个神经元所做的,就是输入面积,完成线性运算,取不小于 0 的值,最后输出预测价格。

神经网络的文献中,经常看得到这个函数。这个函数一开始是 0,然后就是一条直线。这个函数被称作 ReLU 函数,全称是“修正线性单元”。“修正”指的是取不小于 0 的值,这就是这个函数长这样的原因。不理解 ReLU 函数的话不用担心,这门课的后面你还会看到它。

这是一个单神经元网络,规模很小的神经网络。大一点的神经网络是把这些单个神经元堆叠起来形成的。你可以把这些神经元想象成单独的乐高积木,你通过搭积木来构建一个更大的神经网络。

来看一个例子,我们不仅仅用房屋的面积来预测价格,现在你还有一些房屋的其它特征,知道了一些别的信息,比如卧室的数量。你可能想到,有一个很重要的因素会影响房屋价格,就是“家庭人数”。这个房屋能住下一个三口之家,四口之家或者五口之家,这个性质和面积大小相关。还有卧室的数量,能否满足住户的家庭人数需求。

你可能知道邮编,在一些国家也被叫作邮政编码。邮编或许能作为一个特征,说明了步行化程度,这附近是不是高度步行化的?你是否能步行去杂货店,或者是学校?是否需要开车?有些人喜欢高度步行化的地方。另外还有富裕程度,在美国是这样的,其它国家也可能一样。邮编体现了附近学校的质量。

我画的每一个小圈圈,都可能是一个 ReLU,即“修正线性单元”,或者其它的不那么线性的函数。基于房屋面积和卧室数量,你可以估算家庭人口。基于邮编,可以评估步行化程度,也可以评估学校质量。最后你可能会认为,人们愿意在房屋上花费多少钱,和他们关注什么息息相关。在这个例子中,家庭人口、步行化程度以及学校质量,都能帮助你预测房屋的价格。

在这个例子中x是所有的这四个输入,y是预测的价格。通过把这些独立的神经元叠加起来,或者上一张幻灯片里面的简单的预测器(神经元),现在有了一个稍微大一点的神经网络。神经网络的部分神奇之处在于,当你实现它之后,你要做的只是输入x,就能得到输出y。不管训练集有多大,所有的中间过程它都会自己完成。

那么你实际上做的就是这样,这里有四个输入的神经网络,输入的特征可能是卧室的数量,邮政编码和周边的富裕程度。已知这些输入的特征,神经网络的工作就是预测对应的价格。

同时请注意到,这些圈圈,在一个神经网络中,它们被叫做“隐藏单元”。每个的输入都同时来自四个特征,比如说,我们不会具体说,第一个节点表示家庭人口,或者说家庭人口仅取决于特征x1x2。我们会这么说,对于神经网络,你自己决定这个节点是什么。我们只给你四个输入特征,随便你怎么计算。因此我们说这一层,输入层,以及在中间的这一层,在神经网络中连接数是很高的。因为输入的每一个特征,都连接到了中间的每个圈圈。

值得注意的是,对于神经网络,只有你喂给它足够多的关于xy的数据,得到足够的xy训练样本,就非常擅长于计算从xy的精准映射函数。这就是一个基本的神经网络,你可能发现,自己的神经网络在监督学习的环境下是如此有效和强大。也就是说,你只要尝试输入一个x,即可把它映射成y,像我们在刚才房价预测的例子中看到的。

在下一个视频中,你会看到更多监督学习的例子。有些例子会让你觉得,你的神经网络对你的应用场合非常有帮助。

用神经网络进行监督学习

神经网络有时被媒体炒作得很厉害,考虑到它们的使用效果,有些说法还是靠谱的。事实上到目前为止,几乎所有由神经网络创造的经济价值,都基于其中一种机器学习,我们称之“监督学习”。那是什么意思呢?我们来看一些例子。

在监督学习中,输入x会习得一个函数,它映射到输出y。比如我们之前看到的,应用于房价预测的例子。输入房屋的一些特征,就能输出或者预测价格y。下面是一些其它例子,这些例子中神经网络效果拔群。

很可能,今天通过深度学习获利最大的,就是在线广告。这也许不是最鼓舞人心的,但真的很赚钱。给网站输入广告信息,网站会考虑是否给你看这个广告,有时还需要输入一些用户信息。神经网络在预测,你是否会点击这个广告,这方面已经表现得很好了。通过向你展示,以及向用户展示最有可能点开的广告,这就是神经网络在很多家公司,赚取无法想象的高额利润的应用方式。因为有了这种能力,向你展示最有可能点击开的广告,直接影响到了不少大型线上广告公司的收入。

过去的几年里,计算机视觉也有很大进展,这要感谢深度学习。你输入一个图像,然后打算输出一个下标,可以是从 1 到 1000,来表明这张照片,是 1000 个不同的图像中的某一个。它可以用来给照片打标签。

深度学习最近在语音识别方面的进展也是非常令人兴奋的。你可以将音频片段输入神经网络,它可以输出文本。机器翻译也进步很大,这得感谢深度学习,让你有一个神经网络,能实现输入英语句子,它直接输出一个中文句子。

在无人驾驶技术中,你输入一幅图像,比如汽车前方的一个快照,还有一些雷达信息。基于这个,训练过的神经网络,能告诉你路上其他汽车的位置。这是无人驾驶系统的关键组件。

神经网络创造这么多价值的案例中,你要机智地选择xy,才能解决特定问题。然后把这个监督学习过的组件,嵌入到更大型的系统中,比如无人驾驶。可以看出,稍微不同的神经网络,也可应用到不同的地方。比如说,应用到房地产上。我们上节课看到,我们用了通用标准的神经网络架构,是吧?对于房地产和在线广告,用的都是相对标准的神经网络,正如我们之前见到的。

图像领域里,我们经常应用的是卷积神经网络,通常缩写为 CNN。对于序列数据,例如音频中含有时间成分,对吧?音频是随着时间播放的,所以音频很自然地被表示为一维时间序列。对于序列数据,你经常使用 RNN,循环神经网络。

对于语言,英语和汉语,字母或单词,都是逐个出现的。所以,语言最自然的表示方式也是序列数据。更复杂的 RNN 经常会用于这些应用。对于更复杂的应用,比如无人驾驶,你有一张图片,可能需要 CNN “卷积神经网络结构” 架构去处理。雷达信息会更不一样,你需要一些更复杂的,混合的神经网络结构。

所以,为了更具体地说明,标准的 CNN 和 RNN 结构是什么。在文献中,你可能见过这样的图片,这是一个标准的神经网络。你可能见过这样的图片,这是一个卷积神经网络。在后续的课程,我们会去了解这幅图的含义和如何实现它。卷积网络通常用于图像数据。你可能也会看到这样的图片,后续的课程也会去实现它。循环神经网络非常适合处理一维序列数据,其中包含时间成分。

你可能也听说过,机器学习被应用于结构化数据和非结构化数据,下面是这些术语的含义。结构化数据,是数据的数据库,例如在房价预测中,你可能有一个数据库或者数据列,告诉你房间的大小和卧室数量,这就是结构化数据。在预测用户是否会点击广告的例子中,你可能会有用户信息比如年龄,还有广告信息,还有你要预测的标签y,这就是结构化数据,意味着每个特征,比如说房屋大小、卧房数量、用户的年龄,都有着清晰的定义。

相反,非结构化数据指的是,比如音频、原始音频、图像,你想要识别图像或文本中的内容。这里的特征可能是图像中的像素值,或者是文本中的单个单词。从历史角度看,与结构化数据比较,非结构化数据让计算机理解起来更难。但人类进化到现在,很擅长理解音频信号和图像。文本是一个更近代的发明,但人们真的很擅长解读非结构化数据。

神经网络的兴起过程中,最令人兴奋的事情之一就是,多亏了深度学习,多亏了神经网络,计算机现在能更好地解释非结构化数据。和几年前对比的话,这给我们创造了很多令人兴奋的应用机会。语音识别、图像识别、自然语言文字处理。现在能做的事情,比两三年前要丰富多了,我认为,因为人们生来就有能力,来理解非结构化数据。

你可能知道,神经网络在非结构化数据上的成功,尤其是媒体。当神经网络识别了一只猫时,那真的很酷。我们都知道,那意味着什么。神经网络在很多短期经济价值的创造,是基于结构化数据的,比如更好的广告系统,更好的获利建议,有更好的能力去处理很多公司拥有的海量数据库,并用这些数据准确预测未来趋势。

在这门课中,我们会学到很多技巧,可以应用到结构化数据,也可以应用到非结构化数据。为了更清楚地解释算法原理,我们会多用非结构化数据的例子。但当你自己的团队评估了各种神经网络的应用之后,希望你的算法能够同时学习结构化和非结构化数据。神经网络彻底改变了监督学习,正创造着巨大的经济价值。

其实呢,基本的神经网络背后的技术理念,大部分都不是新概念,有些甚至有几十年历史了。那么,为什么它们现在才流行,才行之有效呢?下一集视频中我们将讨论,为什么是最近神经网络才成为你可以使用的强大工具。

为什么深度学习会兴起?

如果深度学习和神经网络背后的基本技术理念,已经有好几十年了,为什么现在才突然流行起来呢?在这个视频中,让我们看一些让深度学习流行起来的主要因素。这将会帮助你在自己的组织中,发现好机会来应用这些东西。

在过去的几年里很多人问我,为什么深度学习突然这么厉害了?我回答的时候通常给他们画个图。横上代表完成任务的数据数量,纵轴代表机器学习算法的性能,比如垃圾邮件过滤的准确率,广告点击预测的准确率,用于无人驾驶中判断其他车辆位置的神经网络的准确率。

根据图像可以发现,把传统机器学习算法的表现,比如说支持向量机,或logistic回归作为数据量的一个函数,你可能得到这样的曲线。它的性能一开始增加数据时会上升,但是一段时间之后它的性能进入平台期。假设水平轴拉的很长很长,那是因为这些模型无法处理海量数据。而过去20年在我们的社会中,我们遇到的很多问题,早期只有相对较少的数据量,多亏了数字化社会,现在收集海量数据轻而易举。

我们人类花了很多时间在数字王国中,在电脑上,在网站上,在手机软件上,数字设备上的活动都能创造数据,同时也归功于便宜的相机,被内置到移动电话,还有加速仪,以及物联网中的各种传感器。我们收集到了越来越多的数据,过去20年,很多应用中我们收集到了大量的数据,远超过传统学习算法能发挥作用的规模。

神经网络模型的话,我们发现,如果你训练一个小型的神经网络,那么性能可能会像这样。如果你训练一个稍微大一点的神经网络,一个中等规模的神经网络,性能表现也会更好一些。你训练一个非常大的神经网络,性能就会是这样,还会越来越好。

注意到两点,一点是如果你想达到这么高的性能水平,有两个条件。第一个是需要训练一个规模足够大的神经网络,以发挥数据规模量巨大的优点。另外,要到x轴的这个位置需要很多的数据。因此我们经常说,规模一直在推动深度学习的进步。

说到“规模”,我指的不仅是神经网络的规模,我们需要一个有许多隐藏单元的神经网络,有许多的参数,许多的连接,而且还有数据“规模”。事实上,要在神经网络上获得更好的表现,在今天最可靠的手段,往往就是要么训练一个更大的神经网络,要么投入更多的数据。这只能在一定程度上起作用,因为最终你耗尽了数据,或者最终你的网络规模太大,需要的训练时间太久。但提升规模已经让我们在深度学习的世界中获得了大量进展。

为了使这个图从技术上更准确一点,我还要加点说明。我在x轴下面已经写明了的数据量,技术点说,这是“带标签的数据”量。在训练样本时,我们有输入x和标签y。我介绍一点符号约定,这在后面的课程中都会用到。我们使用小写的字母m,表示训练集的规模,或者说训练样本的数量。这个小写字母m这就是水平轴。

图像还有其他细节,训练集不大的这一块来说,各种算法的性能相对排名并不是很确定。训练集不大的时候,效果会取决于你手工设计的组件,会决定最终的表现。因此很有可能,假设有些人训练出了一个SVM,可能是因为手工设计组件很厉害,有些人训练的规模会大一些,可能训练集不大的时候,SVM表现更好。在这个图形区域的左边,各种算法之间优劣并不是定义得很明确,最终的性能更多取决于手工设计组件的技能,以及算法处理方面的一些细节。只有在大数据领域,非常庞大的训练集,也就是在右边m非常大时,我们才能见到,神经网络稳定地领先其它算法。

如果某个朋友问你,为什么神经网络这么流行?我鼓励你也给他们画这样一个图像,可以这么说,在深度学习崛起的初期,是数据和计算能力规模的进展。训练一个特别大的神经网络的能力,无论是在CPU还是GPU上,是这些发展才让我们取得了巨大的进步。

但是渐渐地,尤其是在最近这几年,我们也见证了算法方面的极大创新。我也不想忽略算法方面的巨大贡献。有趣的是,许多算法方面的创新,都为了让神经网络运行得更快。举一个具体的例子,神经网络方面的一个巨大突破是,从sigmoid函数转换到这样的ReLU函数。这个函数我们在之前的视频里提到过,形状就像这样。如果你无法理解,刚才我说的某个细节,也不需要担心。但使用sigmoid函数,机器学习问题是,对于这个区域 sigmoid函数的斜率,梯度会接近0,所以学习会变得非常缓慢,因为用梯度下降法时,梯度接近0时,参数会变化得很慢,学习也会变得很慢。而通过改变激活函数,神经网络用这个函数,修正线性单元ReLU,它的梯度对于所有为正值的输入输出都是1,因此梯度不会逐渐趋向0。而这里的梯度,这条线的斜率,在这左边是0。我们发现,只需将sigmod函数转换成ReLU函数,便能够使得“梯度下降法”运行得更快。

这就是一个例子,有点简单的算法创新的例子,但是最终算法创新所带来的影响,是增加计算速度。有很多像这样的例子,我们通过改变算法,使得代码运行得更快。这也使得我们,能够训练规模更大的神经网络,或者在合理的时间内完成计算。即使在数据量很大,网络也很大的场合,快速计算很重要的另一个原因是,训练神经网络的过程,很多时候是凭直觉的。你有了关于神经网络架构的想法,然后你写代码实现你的想法。然后跑一下实验,可以告诉你,你的神经网络效果有多好,知道结果之后再回去,改你的神经网络中的一些细节。然后你不断重复这个循环。当你的神经网络需要很长时间去训练,需要很长时间才能走一圈循环的话,在实现神经网络时,迭代速度对你的效率影响巨大。

如果你有一个想法,直接去试,10分钟后就能看到结果,或者最多花上一天。如果你训练你的神经网络,用了一个月的时间,有时候确实需要那么久。如果你能很快得到结果,比如10分钟或者一天内,你就可以尝试更多的想法。那你就很可能发现,适合你的应用的神经网络。所以计算速度的提升,真的有帮助提高迭代速度,让你更快地得到实验结果。这也同时帮助了神经网络的从业人员,和有关项目的研究人员,在深度学习的工作中迭代得更快,也能够更快地改进你的想法。所有这些都极大推动了,整个深度学习社区的研究,快到令人难以置信。

人们一直在发明新的算法,持续不断地进步,是这些力量支持了深度学习的崛起。但好消息是,这些力量还在不断发挥作用,让深度学习更进一步。我们看数据,我们的社会还在产生更多的数字化数据。我们看计算,GPU这类专用硬件还在继续发展,网络速度更快,各种硬件更快。我很有信心,我们实现超级大规模神经网络的能力,或者从计算能力这个角度看,也在继续进展。我们看算法,我希望深度学习研究社区,能在算法上持续创新。基于这些,我们可以乐观地回答,深度学习还会继续进步很多年。

让我们继续,最后一个课程视频中,我们会谈到通过这门课,你能学到什么。

关于这门课

学习进度来到了这个“微专业”第一门课第一周的最后。快速地介绍一下,下一周将要学习什么内容。在第一个视频里我已经说过,本“微专业”一共有五门课,目前是第一门课。这门课将教会你最重要的基础知识,深度学习最重要的基础。第一门课的结尾,你将掌握如何建立并运用一个深度神经网络。

下面是第一门课的一些细节,这门课有四个星期的学习材料。目前你就要完成第一周的学习了,学完了深度学习的入门介绍。在每一周的结尾,都会有十道多选题,可以用来检验自己对材料的理解。当你看完这个视频的时候,希望你能看看这些问题,

在第二周你会学习到,神经网络的编程基础,了解神经网络中,“正向传播”和“反向传播”的结构,还有算法的过程,以及如何高效实现神经网络。从第二周开始,你也会开始做一些编程练习,练习学到的知识,自己实现算法,亲自调试到完美运行。当我学习算法的时候,那让我很过瘾,通过代码编程,亲自看到它完美运行。我希望你们也喜欢。

在学习了神经网络编程的框架之后,在第三周,你会编写单隐层神经网络,你需要学习所有必需的关键概念,才能实现神经网络。最后在第四周,你将建立了一个多层的深层神经网络,让它为你服务。

恭喜你完成了这段视频,我希望你现在对深度学习,有一个高层次的理解。也许有些人会想,自己想到了,哪里可以应用深度学习。我希望看完这段视频后,你会去看那10个多项选择题,它们就在课程网站上,来检查你的理解。不用复习,第一次做不知道所有答案,你可以多做几次,直到你都做对了为止。我觉得这些问题很有用,能保证我理解了所有概念,我希望你也可以做到。

再次祝贺你看到了这里,期待在第二周的视频中也看到你。

课程资源

希望你能够喜欢这门课程。为了帮助你完成课程,我想要确保,你知道有下面这些课程材料。

首先如果你有任何疑问,想和这个课程的其它同学讨论,想和包括我在内的教学人员讨论,或者想要归档一个错误报告,论坛是去做这些事情最好的地方。我和其他教学人员 会定期关注论坛,这也是一个,从与你一同学习本课程的同学获取答案的好地方。如果你想要回答同学们的问题,可以从课程首页来到课程的论坛。

如果你看到左侧的这个菜单栏,你的可能会看起来和我的有些不一样,但都会有这个论坛模块。当你点击它的时候,就会打开课程论坛。

在论坛上提问是问问题的最好方法,出于某些原因你可能想直接联系我们,或是想让我们知道一些问题,尽管把邮件发送到这个邮箱地址。我保证我们会阅读每一个邮件。我们会尽力去解决经常出现的问题,由于电子邮件的数量很多,我不能保证我们能够迅速回复每一封邮件,但是我们会阅读你发送的每一封邮件。

另外有些其它公司,想要给大批的职员培训深度学习的话,如果你在公司是负责培训工作,想深度学习专家来培训上百或者更多的雇员,尽管通过这个电子邮箱联系我们,我们看看能否帮到你。我们在开发大学课程,但处于早期的阶段,如果你是大学领导,或者管理人员,想在学校提供一门深度学习课程,请尽管通过这个邮箱地址联系我们。

我会提供更多的资源,来完成这门课程,也许我会在论坛见到你噢,祝你好运。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年11月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 深度学习概论
    • 什么是神经网络?
      • 用神经网络进行监督学习
        • 为什么深度学习会兴起?
          • 关于这门课
            • 课程资源
            相关产品与服务
            语音识别
            腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档