1.吴恩达深度学习第一周

梦想与她 提交于 2020-01-20 02:54:08

1.1 欢迎

深度学习改变了传统的互联网业务,例如网络搜索和广告。但是深度学习同时也使得许多产品和企业以很多方式帮助人们。从获得更好的健康关注:深度学习读取x光图像,到生活中的个性化教育,到精准化农业甚至到驾驶汽车和其他方面。如果你想用深度学习来做这些令人窒息的操作,我(吴老师)将帮助你做到这一点。学完这套课程之后,你将能更加自信的继续深度学习之路。AI让我们在接下来的十年中创造更好的社会和时代。
AI是最新的电力,在几百年前,我们社会的电气化改变了每个行业(医疗,交通等)。AI领域发展最为迅速的就是深度学习了。因此,现在深度学习是广受欢迎的一种技巧。这个课程会帮你获得这种技能。
这门课程中你会学到:

  • 第一门课,神经网络和深度学习,第一部门中将会学习如何建立神经网络,包含一个深度神经网络,以及如何在数据上训练他们。最后,将会用神经网络辨认喵星人。
  • 第二门课,深度学习方面的实践,提升你的深度学习网络。学习构建深度学习网络以及如何让他表现良好。将会学到:超参数调整,正则化,诊断偏差,方差以及一些高级优化算法(如momentum,adam)。
  • 第三门课,将会用2周的时间,学习如何结构化你的机器学习工程,构建机器学习的策略改变了深度学习的错误。举个例子:分割数据的方式,分割为训练集,比较集或改变的验证集以及测试集合,在深度学习中贡献不同,影响很大,应该如何处理呢?如果你听说过端对端深度学习,你也会在第三门课中了解更多。
  • 第四门课,卷积神经网络,经常用于图像,学习如何搭建这样的模型
    *第五门课, 序列模型,应用于自然语言处理和其他问题,包括的模型有循环神经网络,LSTM模型(长短期记忆网络),将之应用于NLP(自然语言处理)问题。将这些模型应用于序列数据。

1.2 什么是神经网络

“深度学习”指的是训练神经网络,有时候规模很大。神经网络究竟是什么呢?从一个房价预测的例子开始,假设有一个6间房屋的数据集,单位是平方米,已知房屋价格,想要找到一个函数,根据房屋面积,预测房价的函数,利用线性回归的知识,很容易拟合出一根曲线。
在这里插入图片描述
房价不会为负数,所以起点有一段是0.可以把这个例子用神经网络实现。
在这里插入图片描述
中间这个小圆圈是独立的神经元,这个网络就实现了上面线性回归实现的功能。这个神经元所做的,就是输入面积,完成线性运算,取不小于0的值,最后得到预测价格。这个函数一开始是0,然后就是一条直线,这个函数被称作ReLU函数,全称是修正线性单元。修正指的是取不小于0的值,这就是这个函数长这样的原因。
上图是一个神经单元网络,是一个规模很小的神经网络。大一点的神经网络,是把这些单个神经元堆叠起来形成的,你可以把这些神经元想像成乐高积木,你通过搭积木来构建一个更大的神经网络。
再来看一个例子,不只用面积,再加上其他特征,比如卧室的数量,面积+卧室数量,就可以推导出家庭的规模。邮编在某些国家说明了步行化程度,邮编和富裕程度加起来可以推导出附近学校的质量,这个关系中的每个小圆圈都可能是一个ReLU,或者其他的不那么线性的函数。
在这里插入图片描述
最终,根据前面的特征,可以预测出房屋的价格,在这个例子中,x是所有的这4个输入,y是预测的价格,把这些独立的神经元叠加起来,就有了一个稍微大一点的神经网络。
神经网络的神奇之处在于当你实现了他之后,你只需要输入x,就能得到输出y,不管你的训练集有多大,所有的中间过程,他都会自己完成。那么你实际上做的就是:
在这里插入图片描述
左边4个输入,右边1个输出预测房子的价格,中间的圈,在神经网络中,被叫做隐藏单元,每个的输入都同时来自4个特征,比如说,我们不会具体指定某一个圈代表的是家庭人口或者他是被哪些特征影响的。我们会这么说:神经网络,你自己决定这个节点是什么,我们给你4个输入特征,随便你怎么计算。
因此我们说:左侧是输入层,右侧是输出层,中间是隐藏层,隐藏层的连接数是很高的,因为每个输入的特征都连接到了每一个圈圈。只有你喂给他足够多的数据,关于x和y的,也就是训练集,神经网络非常擅长计算从x到y的精准映射函数。
上面讲的就是一个最简单的神经网络,你会发现自己的神经网络在监督学习的环境下是如此有效和强大,你只要输入x就会给你y,就像这个房价的例子,接下来会有更多的监督学习的例子。

1.3 用什么神经网络进行监督学习

至今为止所有神经网络创造的价值都基于其中一种机器学习,叫做监督学习
在机器学习中,习得一个函数,映射到输出y,比如我们之前用于预测房价的例子。再接下来的例子中,神经网络效果超群,获得很大经济价值的就是在线广告,神经网络预测某种用户是不是会点广告进去,神经网络在这方面已经很好了。计算机视觉,输入图像,来分辨这是什么对象。语音识别方面,机器翻译方面,无人驾驶技术方面,雷达方面。
对于这些应用,你要机智的选择x和y,才能解决特定问题,然后把这个监督学习过的组件嵌入到大型系统中,比如无人驾驶。在一些领域,如广告推广,房地产的房价预测,用的都是标准的神经网络。图像领域里用卷积神经网络CNN。对于序列数据,如音频,有时间成分,音频是随着时间播放的,他是一维的时间序列,对于序列数据经常使用RNN(循环神经网络)。对于语言,英语和汉语,字母和单词,都是逐个出现的,语言最自然的表达方式也是序列数据,可以使用更复杂的RNNs。对于更复杂的应用,比如无人驾驶,你有一张图,你需要使用更复杂的CNN“卷积神经网络结构”架构去处理。雷达信息会更不一样。你需要一些更复杂的混合的神经网络结构。
所以,为了更标准的说明标准的CNN和RNN结构是什么,在文献中,你可能见过这样的图片,如下:
在这里插入图片描述
这是一个标准的神经网络。
在这里插入图片描述
这是一个卷积神经网络。在后续的课程中,我们会去了解这幅图的含义如何实现它。卷积网络通常用于图像数据。
在这里插入图片描述
这种图是循环神经网络,非常适合处理一维序列数据,其中包含时间成分,后续课程也会实现它。
机器学习被应用于结构化数据和非结构化数据,结构化数据是数据库里的数据,例如房价预测中,可能你的训练集的数据就是在数据库中,这就是结构化数据。
在这里插入图片描述
结构化数据意味着每个特征,比如房屋大小,都有清晰的定义。非结构化数据指的是音频,原始音频,图像,你想要识别图像或者文本中的内容,这里的特征可能是图像中的像素值或是文本中的单个单词,非结构化数据计算机理解起来更困难,但是人类很擅长理解音频和图像。神经网络的兴起,令人兴奋的一件事是多亏了深度学习和神经网络,计算机能更好的理解非结构化数据了。这让语音识别,图像识别,自然语言处理领域丰富的多,比两三年前要丰富多了。
课程中会学习很多的算法原理,帮助理解非结构化数据,会用很多例子让你明白。最后,神经网络改变了监督学习,创造经济价值,但是神经网络背后的技术概念都不是新概念了,有些甚至已经十几年历史了。为什么近期才会兴起呢?

1.4 为什么深度学习会兴起

为什么深度学习突然这么厉害了?看一个图,垂直轴代表机器学习的性能,比如垃圾邮件过滤的准确率。

在这里插入图片描述
对于传统的机器学习算法,刚开始增加数据的时候,准确率会上升。但是一段时间之后性能会进入平台期。那是因为这些模型没办法处理海量数据。在过去的20年我们遇到的很多问题,早期都只有相对较少的数据量。多亏了数字化社会,后来采集数据变得更简单,我们的数据越来越多。在过去20年我们采集到的数据远超传统机器学习算法能处理的规模。
在这里插入图片描述
如果使用神经网络的话,采用小规模,那么性能可能会这样(如下图黄色线:)。
在这里插入图片描述
随着神经网络规模的扩大,性能表现可以说是越来越好的。
在这里插入图片描述
需要注意两点:一点是如果你想达到这么高的性能水平,有两个条件,第一个是需要训练一个规模足够大的神经网络,发挥数据规模量巨大的优点。另外,想要达到那种规模的性能,需要你的数据量足够大,因此我们经常说:规模推动着深度学习的进步。说到规模,不仅是神经网络的规模,我们需要许多隐藏单元的神经网络,有许多的参数,许多的链接;还有数据的规模。
事实上,要在神经网络上有更好的表现,在今天最好的手段,往往就是训练一个更大的神经网络,要么投入更多的数据,这只能在一定程度上起作用,因为你最终耗尽了数据,或者最终你的网络规模太大,需要的训练时间太久。但是,提升规模,已经让我们在深度学习的世界中获得了大量的进展,
为了使这个图在技术上更准确一点,我还要加点说明,x轴代表数据量,准确点说是带标签的数据量,这里介绍一个约定,小写的m表示训练集的规模,这个m就是水平轴,在前面的那一段,各个算法的性能排名并不是很确定,训练集不大的时候,效果会取决于你手工设计的组件会决定最终的表现。因此很有可能,有些人训练一个svm,可能是因为手工设计组件很厉害,有些人的训练规模会大一些,可能训练集不大的时候,导致svm表现更好一些。因此,在这个图像的左边部分,各个算法的优劣,并不是定义的很准确,最终的性能取决于手工设计组件的技能以及算法处理的一些细节。只有在大数据领域,非常庞大的训练集,也就是在右边,我们才能见到神经网络稳定的领先其他算法。
如果有人问你为啥神经网络那么流行,你也可以给他用上面这个图。吴老师很推荐。
在深度学习崛起的初期,是数据和计算能力规模的进展,训练一个神经网络的能力,无论是cpu还是gpu,是这些发展让我们取得了巨大的进步。但是在最近几年,也见证了一些算法的极大创新。算法方面的创新,都为了让神经网络运行的更快。
举个例子,神经网络的巨大突破是从sigmod函数,转换到ReLU函数。
在这里插入图片描述
使用sigmod函数,使用的是函数在这个区域的斜率。梯度会接近0。所以学习会变得十分缓慢,因为用梯度下降法时,梯度接近0,参数会变化的很慢,学习也会很慢,而通过改变激活函数,神经网络用ReLU,他的梯度,对所有的正值输出都是1.因此梯度不会逐渐趋向于0,这里的梯度就是斜线的斜率。
在这里插入图片描述
我们发现只需要将sigmod函数转换成ReLU函数,就会使梯度下降法运行的更快,这就是一个有点简单算法创新的例子。但是最终算法创新带来的影响是增加计算速度。这也使得我们能训练规模更大的神经网络,或者在合理的时间内完成运算(即使数据量和规模都很大)。
快速计算的另一方面,训练神经网络的时候,很多时候都是凭借直觉的,你有了新想法,关于神经网络架构的想法,然后你写代码实现,然后跑实验,就可以告诉你你的神经网络效果如何。知道结果之后,再回去改,去改你神经网络中的细节,然后你不选重复这个循环。当你的神经网络需要很长时间去训练的时候,需要很长时间才能循环一圈的时候,在实现神经网络的时候,迭代速度对你的效率影响巨大。当你有想法,直接去试,10分钟能看到结果,或者最多一天。如果你用一个月,你肯定是接受不了的。最快的完成一圈,让你可以完成更多的想法。你最终就可以很快的发现适合你的神经网络。所以计算速度的提升,真的有利于提高迭代速度

在这里插入图片描述
是上面讲的这些促进了深度学习的发展,他们还在继续发挥作用。

1.5 关于这门课

微专业一共五门课!
在这里插入图片描述
目前是第一门课,讲最基础的。有四个周,目前已经完成第一个周,深度学习的入门介绍。每一周都有10几道多选题,用来检验自己对材料的理解。第二周你会学到神经网络的编程基础。了解神经网络中正向传播和反向传播的结构,还有算法的过程,以及如何高效的实现神经网络,第二周就有编程了,练习学到的知识。吴老师说很过瘾。在第三周,编写单隐藏层神经网络,你需要学习所有必须的关键概念,。第四周,你需要建立一个多层的深层神经网络。

1.6 课程资源

网站:https://www.coursera.org/recommendations 不免费
在这里插入图片描述

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!