开发者学习笔记【阿里云人工智能工程师ACA认证(2023版):深度学习概述(一)】
课程地址:https://edu.aliyun.com/course/3112108/lesson/19266
深度学习概述(一)
内容介绍:
一、课程目标
二、深度学习与深度学习框架的概述
三、深度学习框架的选择
四、神经网络概述
五、本节回顾
一、课程目标
我们先来明确这次课程的学习目标,在学完这次课程之后,
1、理解深度学习框架的定义与特点,并能够根据业务需求选择合适的框架
2、列举常见的激活函数(如Sigmoid、Tanh、ReLU等)的特点,并能够根据业务需求选择合适的激活函数
3、区分传统神经网络与卷积神经网络的结构,并能够列举卷积神经网络的层级结构
4、掌握卷积神经网络中卷积层、池化层、全连接层的计算方法
5、根据不同的业务场景选择不同维度的卷积神经网络(如,一维卷积神经网络、二维卷积神经网络、三维卷积神经网络)
6、根据业务需求选择不同类别的循环神经网络(如,一对一、一对多、多对一、多对多)
7、理解经典循环神经网络(如LSTM)的层级结构,并且能够将其应用到不同的业务场景
8、理解生成对抗网络的工作流程,并且能过将其应用到不同的业务场景
总的来看,本节课的课程是深度学习的框架,激活函数,然后是好几种神经网络的结构,包括传统的神经网络、卷积神经网络、循环神经网络、生成对抗网络。
我们这一章的学习顺序是先了解深度学习,然后是多层感知积卷积神经网络、循环神经网络、生成对抗神经网络。
最后是有一个简单的机器学习在PAI平台上的实现。
二、深度学习与深度学习框架的概述
1.深度学习概述
深度学习概述,先来了解什么是深度学习,这个概念一定要清晰。
深度学习我们又叫它 deep learning,这个名字是直译过来的, deep 是深的意思,这个 learning 就是学习的意思,它的缩写是DL。
深度学习是机器学习的一个分支,深度学习它是从早期的人工神经网络发展,然后来这个网络的结构变得越来越复杂,它的学习的数据量越大,计算资源越充沛,这样得到的学习效果就更加的好。所以深度学习慢慢的就成了一个热点。且相对于传统的机器学习的算法,深度学习在很多的领域都会取得且已经取得了更好的效果,得到了很多的突破。所以我们在学习深度学习的时候,也跟传统的机器学习进行对比。
传统的机器学习和深度学习都是首先要数据,都需要对数据进行预处理,但是传统的机器学习它会去做特征提取,做特征提取其实是件很不容易的事情,要对数据进行大量的分析,要有很好的数学的基础,然后选择分类器,这个过程很艰难。
深度学习也是有数据,但是深度学习这里主要是它用的是这个人工神经网络,主要工作是去设计模型,设计完模型后再用模型,再用数据对这个模型进行训练,训练完之后就可以去做推理,就可以得到这个结果。虽然都是机器学习,但是这个就是学习的思路,做的方式差异很大。我们这里给出这个定义,深度学习,它是以神经网络为架构,对资料进行表征学习的算法,这个资料就是数据,
这里的表征学习又叫特征学习,指的是将原数据转换成能够被机器学习有效的开发的一种数据的集合。
在表征学习的算法出现之前,这个机器学习的研究人员要用手动特征工程,从这个原始数据里的领域知识来建立特征,这种方式它很困难,很昂贵,很耗时,需要强大的专业知识。
我们讲这个表征学习,特征学习,它就相对于特征提取来说的人工智能人工神经网络,它是表征学习的一个主要的分支,是一条主线,神经网络的概念虽然在很早很多年前就被科学家提出,但是到一九八几年的时候才有科学家去发现这个反向传播算法BP,它可以在网络的隐藏层里面学习到用的关于数据的内在表征。
一个好的表征学习能够帮我们更容易提取出这个数据里面的有用信息,拿这个信息去做分类或者是预测,您可以粗糙的去理解,也就是相对传统机器学习,这个深度学习,它不是自己去做这个特征的提取,它是用神经网络去从数据里面先去学习这个特征,从数据里面把特征抽取出来。
先看深度学习的优点,它的学习能力强,这是从结果来看,深度学习有很强的学习能力,它的表现非常好。
第二点是覆盖范围广,适应性好。深度学习它的神经网络的层数很多,宽度很广,理论上它是可以映射到任意的函数,所以它能够解决很复杂的问题。
第三点是它是数据驱动的,它的上限高,深度学习它是高度依赖数据的,数据量越大,它的表现就越好,在图像识别、面部识别等这些领域里面表现尤为突出。
第四点是它的可移植性好。由于它的表现非常优异,很多的框架都可以使用,像是Tensorflow, Pytorch 这些框架都是可以兼容很多平台。即这个深度学习做好的这个模型在很多的地方都可以用好。
再看它的缺点,第一条是它的计算量大,深度学习,它学习需要这样的数据和算力,所以它的学习成本非常高,特别是一些大型模型的训练,对这个 GPU 的数量和它的显存要求非常高。
这里讲到边形差,有一些应用的场景,它这个对算力是有很高的需求的。比如在这个电动车上,它在做自动驾驶的时候,它也是需要实时的处理路况,所以它的硬件的要求很高,它要能够做实时的推力,所以它这个硬件是自己定制的。
第三个缺点是它的模型的设计复杂,特别是最近几年,这个新的模型层出不穷,各种各样的,新的模型就要去进行不断的研发,投入人力、物力时间。
第四点是它容易存在偏见,因为真正的学习它是非常依赖数据的,而且这个训练完之后,得到这个模型,它的可解释性不高。如果你的数据训练是不均衡这种情况,然后会出现一些歧视的问题、偏见的问题。从个人的角度上看,深度学习的知识的学习就是你学习这部分的知识,其实感受跟传统的机器学习的感受是差别很大的。传统的机器学习,你会学一个知识点,一种算法,这种算法应用在这个场景,它算法是怎么样的?然后每一个都是比较独立的知识,深度学习你会觉得都是光神经网络,很多基础的知识,比如激活函数,梯度下降,这个网络怎么训练等,这些都是类似的。
然后面对的就是统一的应用场景,这个神经网络的使用的这个场景的神经网络的结构会不一样,然后技术的变化一般也在神经网络的结构上的调整,可能会有什么新的想法,对一些网络的调整,这个网络结构的调整对一些应用场景有很大的改进的作用。
且有一个特点就是他进行的表征学习,这个可解释性比较差,可能你用了大量的数据,然后需设计一个网络结构,训练出的模型效果很好,但是你要会具费很大的劲去解释这个模型表达的是什么,这个特征学习到的是什么,不管怎么样在这个深度学习相关技术的向前的发展的这个过程中,很多问题得到很好的解决。比如在图像识别、人脸识别、智能语音,还有自然语言处理等方面。深度学习的概述我们就讲到这里。
2. 深度学习框架的定义及特点
深度学习的框架是一种界面,库或者是工具。为什么学习深度学习马上就要使用到这个框架,用到界面库或者是工具,让我们举个例子来理解深度学习框架的概念。
比如我们现在有一个任务,摆在我们面前的任务是对图像做一个分类,这个图像里面有猫和狗,我们需要把图像对应的归到是哪一个类,这时这个搜索完之后,我们会得到这个指引,用卷积神经网络对这种图像的分类任务非常的有效。
我们就开始来做这件事情,我们要去实现这个卷积神经网络的模型吗,如果我们从头开始去写一个卷积神经网络,需要可能几天,快可能要几周才能得到一个很好的模型,但是我们可能没有办法等那么久,这个时候就需要用到深度学习框架,深度学习框架它就能够让我们不用去深入的了解底层的算法的细节,可以很容易的快速的来构建深度学习模型。
如果你是一个开发人员,可以用深度学习框架,用它预先构建和优化好的组件集合来定义模型,这样可以更容易、更快速地来构建深度学习模型。
这个深度学习框架是哪里来的,是谁做的,一般都是一些大的公司或者是科研机构、互联网公司,他们本来在这个人工智能上,在深度学习上面就有很多的研究积累,可能内部也在使用,可能会开源出来,然后得到社区的支持,然后再不断的持续的去改进。所以说深度学习的框架有很多,而且是不断的在优化,在改进的过程中,一个好的深度学习框架,我们总结应该有下面 5 个关键的特征。
第一个是要针对性能进行优化,这个也是我们在选择框架对比框架的时候很看重的一点,就是这个框架的性能到底是怎么样,特别是深度学习,是很消耗很占用计算资源的,算力资源的,所以要有很好的对性能的优化。
第二个是基于理解与编码,这个框架是我们要用的,这个框架的设计,它的使用的方式、使用的方法的代码,怎么去使用它,这个很重要,易于理解的框架、利于编码的框架肯定是更受欢迎。特别是很多进入到人工智能这个领域的人,他原来并不是开发者,可能掌握的语言,像Python,他的学习的曲线并不是很陡,就比较容易学习,他们更希望这个框架也会好用,不会有太高的这个编程的学习成本。
第三个是这个特征是有强大的社区生态,这个也很重要,因为很多的框架的涌现,好多的框架的涌现就层出不穷,也有背后可能是不同的公司支持,但是很重要的是要有这个社区生态,要有很多的人参与到这个框架的开发和应用里面。特别是对一些开源的框架可以关注,如果它开源一直是活跃度很高,就说明这个框架是非常有生命力的,它的开发人员,它的社区也是不断的支持它的改进。另外我们也可以看到有很多的知名的框架,它的已经形成了一个生态链。这个深度学习框架有了后,很多的科研人员,还有一些真实应用的案例,在生产场景中的案例还有一些论文的实现,都是用同样的框架,也会推动着使用这个框架来做开发和真实应用的人变得越来越多。
第四个是要有并行的这个进程来加快运算,这个也是就是框架到现在一定要能够支持这种大规模的分布式的计算才可以。
第五个是自动的计算渐变,这个渐变指的就是梯度gradient,这个应该已经是基本的要求,就是你作为一个框架最基本的梯度下降,这个地方是不应该让这个使用框架的人再去自己写。
这是这个好的深度学习框架的特征,大家选框架的时候可以从这几个方面去考虑,常见的主流的深度学习框架有Tensorflow、Torch, caffe 等,我们在下一节会对他们进行详细的介绍。