1.1.3 深度学习的概念
MindSpore 是开源的深度学习框架,为了方便非人工智能专业读者阅读、学习,本小节首先介绍深度学习的一些常用概念。
1.人工智能、机器学习和深度学习的关系
人工智能、机器学习和深度学习的关系如图1-5所示。
图1-5 人工智能、机器学习和深度学习的关系
人工智能是指机器所展示出来的智能,与其相对的是包括人类在内的动物所表现的智能。早期,人工智能最成功的应用是专家系统——一种模拟人类专家知识和分析能力的程序。
机器学习是人工智能中的一门多领域交叉学科,涵盖概率论、统计学、近似理论和复杂的算法知识,主要研究软件应用怎样在没有明确编程的情况下更精准地基于输入数据给出预测输出。
深度学习是机器学习算法中的一类,通过使用多层网络从原始输入中逐步抽象出高级别的特征。例如,在图像处理中较低层可以识别边缘信息,较高层可以识别与人类相关的概念。
2.神经网络
神经网络是人工智能领域的一种技术,它教会计算机用受人类大脑启发的方式处理数据。深度学习基于神经网络算法,即在一个看起来像人类大脑的分层结构中使用互相连接的节点或神经元来处理数据。
神经网络有以下3个组件。
① 输入层:用于收集输入数据的模式,模拟生物神经网络中来自其他神经元的输入。
② 处理层:又称隐藏层,用于对输入层传来的数据进行处理,并负责提取数据的特征。隐藏层不直接接收外界的信号,也不直接向外界输出信号,因此是不可见的。隐藏层由一组节点和它们之间的连接部分组成。
③ 输出层:输出最终的结果,负责建立从隐藏特征到预测目标的映射。
图1-6是一个简单的神经网络。
图1-6 一个简单的神经网络
神经网络由一系列节点或神经元组成。神经元即神经元细胞,是神经系统最基本的结构和功能单位,可联络和整合输入信息并传出信息。每个节点包含一组输入数据、权重值和偏差(也称为偏置)值。
当输入数据 x进入节点时会乘以一个权重值w,再加上一个偏差值b,最后得到输出数据y。输出数据可以作为最终结果显示,也可以传到神经网络中的下一层。神经网络中一个节点的输出数据的计算方法如图1-7所示。
图1-7 神经网络中一个节点的输出数据的计算方法
权重和偏差都是神经网络的参数,具体说明如下。
权重:人类大脑在处理输入信号时对不同信号的关注程度是不一样的。在神经网络中,权重是定义不同特征(输入字段)重要程度的参数,它决定了特征在预测最终值中的重要性。
偏差:节点的输出数据与预期值可能会有差距。偏差的作用就是修正这个差距,使输出数据更加接近预期值。
神经网络通常会在开始学习前进行初始化,随机设置权重和偏差的值。随着训练的推进,这两个参数会逐步向预期值和正确的输出数据进行调整。
权重和偏差对输入数据的影响各不相同。简单地说,偏差用于补齐函数输出值与计划输出值之间的差异;权重则可以指定节点间连接的重要性,可以表示输入数据的变化对输出数据的影响。如果权重比较小,则相关输入数据的变化对输出数据的影响就比较小;如果权重比较大,则相关输入数据的变化对输出数据的影响就比较大。
3.人工神经网络
在实际应用中,神经网络通常不会如图1-6所示那么简单。为了模拟人脑的结构,复杂的神经网络通常包含更多的隐藏层,形成深度神经网络,具体如图1-8所示。这就是“深度学习”概念的由来。
深度神经网络能够逐层解构特征,逐层分解问题,将复杂问题分解成多个基本问题,进而提高学习能力和理解能力。
图1-8所示的深度神经网络又称ANN(人工神经网络)。ANN是指由大量的处理单元(神经元)互相连接而形成的复杂网络结构,是对人脑组织结构和运行机制的某种抽象、简化和模拟。大多数现代深度学习模型都是基于人工神经网络的。
图1-8 深度神经网络
深度学习模型中的每一层都学习将它的输入数据转换为比上一层稍微抽象和更加复合的表现形式。比如,在图像识别应用中,原始输入数据是图像的像素矩阵;第1个隐藏层可以对图像进行边缘检测;第2层可以对边缘的排列进行合成和编码;第3层可以对鼻子和眼睛进行编码;第4层可以对包含人脸的图像进行识别。当然这只是类比的例子,真正实用的深度学习模型要远比这复杂得多。通过设置层数和层的大小可以决定模型抽象的程度。深度学习中的“深度”是指数据转换经过的层数。在深度学习技术中,有一个 CAP(信用分配路径)深度的概念。CAP 是指从输入到输出所经过的一系列转换的链,用于描述输入数据和输出数据之间可能的因果关系连接。对于前馈神经网络,CAP深度等于隐藏层的层数加1,这里将输出层也考虑在内;对于循环神经网络,一个信号可能会不止一次地从一个层传播,因此 CAP 深度是无限大的。
在人工神经网络中,一个节点的输出数据的计算方法如图1-9所示。
图1-9 在人工神经网络中,一个节点的输出数据的计算方法
在人工神经网络中,每个神经元都由一个求和函数和激活函数组成。求和函数用于计算每个输入数据乘以对应的权重值的累加之和,得到一个标量值后会将其传递给激活函数。如果一个神经元有n个输入数据x1、x2…xn,则计算输出数据的公式如下。
w1、w2…wn分别是输入值x1、x2…xn对应的权重值,b是偏差值,f是激活函数。如果f是线性函数,则该神经元用于执行线性回归或者线性分类。激活函数的作用就是给神经元引入非线性因素,使神经网络可以逼近任何非线性函数,从而使神经网络可以应用到众多的非线性模型中。具备非线性因素的神经网络模型可以更深度地抽象出数据的特征。