开发者学习笔记【阿里云人工智能工程师ACA认证(2023版):深度学习概述(二)】
课程地址:https://edu.aliyun.com/course/3112108/lesson/19266
深度学习概述(二)
三、深度学习框架的特点及选择
我们介绍一些主流的深度学习框架,然后了解他们的特点以及帮你去选择它适合你的业务场景。
1. Tensorflow框架的特点
Tensorflow 这个框架可谓是大名鼎鼎,它应该是人工智能领域里面最流行的开发框架。这个深度学习框架它是从以前的叫 Giano 发展而来的,它是谷歌公司开发的,他很早在 2015 年的时候就在 GitHub 上面开源,在 2017 年的时候发布了 1. 0 的版本, 2019 年的时候 Tensorflow 发布了 2. 0 的版本,相对于 1. 0 的版本, 2. 0 的版本改进很大。
它的 1. 0 的版本使用起来比较繁琐,然后调试也困难,文档接口也很混乱,到了 2. 0 版本之后就变得焕然一新。
这里给到 Tensorflow 的定义是:它是一个利用数据流图进行数值计算的开源软件库。这个数据流图英文是 data flow graphs,顾名思义,数据流图它是用有向图的这个节点和边来共同的描述数学计算。它的概念里面,这个节点是代表着数学操作,然后表示这个数据输入输出的端点,边表示流动的数据,节点之间相互这个流通的多位数组。在这种设计思想下,它所以这个 Tensorflow 它不只是一个这个神经网络的库。实际上,如果你要做的运算只要能表示成这种数据流图的方式,你就可以使用Tensorflow,这就是这个 Tensorflow 框架特点里面的机动性。
Tensorflow 它的可适应性非常强,它可以在很多异构的系统上很方便的移植。它可以用在不同的设备上,比如这个有 CPU 的,或者是用 GPU 的,移动的设备,安卓的设备,还有树莓派这种都可以用。 Tensorflow 它的核心是用 C + + , C + + 加上CODA,但是主要的编程语言还是Python,或者我们就是用 Python 来表达和控制训练模型,这是因为 Python 是就很多人用比较多的这个大数据的科学家或者是机器学习的专家使用Python。除了 Python 跟 C + + 之外,用很多主流的编程语言,比如Java,比如 c sharp,它们也可以跟这个 Tensorflow 进行交互。
第四个特点是它的最优化表现,TensorFlow 提供线程、队列、异步操作等,这些能够帮助你把你的硬件的资源的潜能全部都发挥出来。比如你在做机器学习的时候,你有一个 32 核的CPU,有个 4 个显卡的工作站,这个算力是很不错的。你用 Tensorflow 可以自由地把 Tensorflow 图里面的计算元素分配到不同的设备上去, Tensorflow 可以帮助你去管理,阿里云的 PAI 平台里面也内置Tensorflow,然后还是阿里优化过的Tensorflow,大家在用阿里云的 PAI 平台的时候就能体会到 Tensorflow 的强大。
2. torch框架的特点
torch 深度学习框架 torch ,英文的本意就是火炬,这个框架它底层也是用 C + + 实现的,然后用Lua,这个语言对接口进行封装,这个框架是 Facebook 的人工智能研究实验室来应用和维护的,很多的组织也都在使用TORCH,很多的网上的这个 RNN 的例子都是用 touch 来写的,所以 touch 是一个很好的学习 RNN 的一个途径。
touch 它的目标是让这个设计算法变得更简单,所以它里面包含大量的机器学习、计算机视觉信号处理、并行计算,图像、视频、音频的库,而且它拥有大量已经训练好的深度学习的模型。
Torch 因为他使用了Lora,可能这个语言的门槛会高,对于初学者不是很友好,它也有很多的优点,比如它支持循环神经网络、卷积神经网络,特别是对卷积神经网络的支持非常的好,构建模型简单,高度的模块化、快速高效的 GPO 的支持。它的运行速度快,不需要额外的进行编译,这个也是因为它用了Lua, 有个 Lua 的GIT,就是计时编译的一个工具。然后 touch 还可以嵌入到这个iOS、 Android 等一些后端设备的接口。
这个 touch 后有一个 Python 的版本叫Pytorch,这个 Pytorch 其实更火,它是可以认为是 torch 的一个 python 版,这是 p y pytorch,但是它相对于 TORCH 来是有很多新增的特性,这两者它的底层库 c 语言的这个区别不大,那Pytorch 很多的科研工作者是很喜欢用的。
3.caffe框架的特点
下面这个框架的名字叫caffe,但是这个很多人会把它读成可菲,caffe这个框架是一个清晰而高效的深度学习框架,它的最早的研发是加利福尼亚大学的伯克利分校,也是用 C + + 写的。 C + +/ cuda 架构也是支持 Python 接口,同时它还支持命令行,支持MATLAB 接口。
caffe 它的知名度非常高,它被广泛的应用于前沿的工业界和学术界,很多的提供源码的深度学习的论文都是用caffe来实现的。caffe它在计算机视觉的领域应用非常的多,可以用来做人脸识别、图片分类、位置检测、目标跟踪。虽然这个caffe,它主要面对的是学术圈和研究者,但是因为它的程序非常的稳定,代码的质量非常高,所以它也很适合那种对稳定性要求非常严格的生产环境。
它可以算是第一个主流的工业级的深度学习框架。因为它是基于 C + + 的,底层是 C + + ,因此它在各种硬件编译环境有很好的在这个移植性。它可以支持Linux,Mac,还有 Windows 的操作系统,也可以把它编译,然后部署到移动的设备,像是 Android on iOS 上。 caffe也有这个 Python 语言的接口pycaffe。caffe的配置它是这个用 layer 这个层,用这个顺序连接的层来描述神经网络结构,用配置文件来描述的。
以上是caffe这个框架的一些特点。
4.深度学习框架的选择
除了以上介绍的这个深度学习框架这 3 种之外,这个框架还有很多各种各样的,怎么去选择这个深度学习框架?需要考虑很多方面的因素,比如学习门槛、开发上手,开发的速度、上手的难度、易用性,文档是否是规范齐全的?是不是能够提供相关问题的一些解决的资源。
如果你的这个工业化应用多,要求这个资料齐全,你可以选caffe,这个框架是第一个主流的工业级的深度学习框架,如果是这个学术性高,社区活跃,你可以选torch框架,如果你是初学者,你要这个规范的例子文档齐全,这个时候你可以使用 Tensorflow 这个框架,可以实现这个在模型在不同设备上的应用。
四、神经网络概述
1.神经网络基础
神经网络是深度学习里面非常基础的概念,下面我们来了解,我们平时所说的这个神经网络,其实就是人工神经网络。如果英文的全文是 artificial neural network,缩写就是ANN,平时我们就会简称是神经网络NN,所以大家有的时候看到这个CNN、 RNN,NN,这个一般都指的是哪一种神经网络,就是这个 NN 的意思。
人工神经网络这个东西非常有趣,我们再去理解智能,再去研究智能的时候,发现这个人的大脑产生智能,主要是神经元,人的大脑里面有几亿个神经元的细胞,这些细胞组合在一起产生智能神经元的这个生物神经元长的是这个样子。
看我们下图,它这个左边是这个神经细胞,然后里面有细胞核,它有很多的树突跟其他的细胞相连。
跟其他的相连有这样的轴突,这样的线去相连,这个神经元的信号在这里有传导,发现了这种结构后,智能怎么来的?这个就可能不是那么好理解,但是这种结构可能会带来智能,这样在计算机的领域就开始去模仿生物的神经网络,叫模仿生物的神经网络的结构和功能来做这个数学或者是计算模型,这个神经元是这样的一个东西,我们把它抽象,神经元的抽象模型变成是这样,把我们把这个神经元的细胞当成一个计算函数,神经元细胞它接收到的信号,我们认为是计算函数的输入信号,这个神经元在发出的信号,我们认为它是输出信号。
如果这个大脑它很多的神经元组成,它带来了智能,我们是不是把这种神经元的抽象模型有很多个,把它组合在一起,让它构成网络,是不是就可以产生智能,整个思路就是这样,就是对生物神经网络的仿生,所以神经网络它的抽象模型是这样的,有很多然后输入输出,当然我们一般讲神经网络的时候,都指的是这种人工神经网络。他这样实证明确实是效果是很好的,这个神经网络也是深度学习的基础。
目前它在图像识别、语音识别等方面的应用都取得了很非常棒的效果。
这就是生物神经元,然后是神经元的抽象模型,然后是神经网络。下面我们来讨论这个神经网络的构成。
2.神经网络组成
首先这个神经元就是它是一个数学的抽象,是模拟这个生物的神经元的,神经元要负责计算和处理输入的信号,然后再产生一个输出,神经元就是这样的东西,网络神经元怎么把它连起来构成网络。
神经网络就是把不同的神经元联系连起来,一个神经元两端,一个神经元,然后一个神经元的输出是另外一个神经元的输入,比如左边一个,右边一个,左边这个神经元它的输出到了右边就成为右边的输入,就是这样把它串连起来。
它的输出可能这个神经元这个中间的连接是有全值的,每个权值我们用 w 就这个权重来表示,也就是神经元左边那个神经元,它的输出是a,然后经过这个连接后到了神经元的这个输入,右边那个神经元的输入就变成了A*W。
其实这个就像是细胞之间的细胞,这个神经元之间的连接就是一边做输入一边做输出,这样很多个神经元连接起来,它的连接方式就变成了有很多种。
从整体上来讲,一个神经网络那它是有很多的输入,有的神经元是可以接收这个输入的,然后有的神经元就外面的一层可能会负责去输出。神经元的连接的方式就决定了这个神经网络的特性。通过我们的不断的研究、实践探索,我们发现了各种各样的神经网络,就不同的连接有不同的特性,他们用在不同的领域有不同的这种功效。
所以在深度学习里,有很大一部分的这个知识点或者难点都是在如何去构造这个神经网络,这些神经元到底应该怎么去组合?
五、本节回顾
回顾本节的内容,通过本节的学习,我们先了解到:
1、深度学习概述
深度学习(Deep Learning,DL)是机器学习的分支,是一种以人工神经网络为架构,对资料进行表征学习的算法
2、深度学习框架的定义及特点
一种界面、库或工具,能够让开发人员利用预先构建和优化好的组件集合定义模型,更容易、更快速地构建深度学习模型
一个良好的深度学习框架应具备针对性能进行优化、易于理解与编码、强大的社区生态、并行化进程加快运算、自动计算渐变共5个关键特征
3、深度学习框架的选择
深度学习框架的选择往往需要考虑多方面的因素,如学习门槛、上手难度、开发速度、易用性等
4、神经网络基础
人工神经网络,简称神经网络,在计算机领域中,是一种模仿生物神经网络的结构和功能的数学或计算模型,目的是模拟大脑的某些机理与机制,实现某个方面的功能,例如图像识别、语音识别
5、神经网络组成
神经元:负责计算和处理输入信号
网络连接:负责将不同神经元连接起来,形成神经网络,连接两端各为一个神经元