Page 36 - 《软件学报》2020年第9期
P. 36
张政馗 等:面向实时应用的深度学习研究综述 2657
度学习算法参赛了.2013 年,深度学习被麻省理工(MIT)评为“年度十大科技突破之一”.2015 年 10 月,特斯拉在
Model 系列车型上开启了自动驾驶功能(autopilot),标志着基于深度学习的自动驾驶技术已开始进入了商用阶
段.2016 年和 2017 年,Google 的子公司 DeepMind 基于深度学习研发的 AlphaGo 击败了围棋大师李世石和柯洁,
一度引发了全世界对人工智能的恐慌.2019 年 1 月,DeepMind 研发的 AlphaStar 击败了经典战略游戏《星际争
霸》的职业电竞选手,标志着人工智能在部分信息博弈中已经可以战胜人类了.
1.2 深层神经网络
深度学习是“一类通过多层非线性变换对高复杂性数据建模算法的合集”,深层神经网络(DNN)是实现“多
[3]
层非线性变换”的最常用的一种方式,两者互为代名词 .DNN 的两个非常重要的特征是多层和非线性 [30] :多层
是为了符合分布式知识表达(第 1.1 节)的要求,非线性是为了解决更加复杂的问题.因为在现实世界中,绝大部分
的问题都是无法线性分割的,而任何线性模型的组合仍然还是线性的.为 DNN 提供非线性表达能力的是激活函
数(activation function).图 1 展示了一个神经元的输出是输入数据加权和与偏置加和之后经过激活函数非线性
变换得到的结果.激活函数的特点是可微分并且单调.常用的激活函数有 Sign,Sigmoid,Tanh,ReLU,P-ReLU,
Leaky-ReLU,ELU,Maxout 等.损失函数(loss function)是用于度量 DNN 输出结果向量与样本期望向量之间差距
的函数.常用的损失函数有交叉熵(cross entropy)、均方差(mean square error,简称 MSE)、Log、L1 Loss、L2 Loss、
Elastic Net 等.构造一个深层神经网络就是确定网络的 3 个组成部分:DNN 的架构(或称为拓扑结构)、激活函数
与损失函数、训练 DNN 的算法.DNN 的使用一般分为训练和推理两个阶段.训练 DNN 即为网络中的神经元找
[1]
到最优权值配置,主流的训练算法是梯度下降算法 和反向传播算法(第 1.1 节).训练得到的网络也称为推理网
络(inference network),可以用于对测试数据集或实际数据的推理.
Fig.1 Neuron with activation function
图 1 含有激活函数的神经元
[1]
神经网络主要分为两种类型 :(1) 前馈神经网络(feedforward neural networks),即有向无环图,信号只能沿
着最终输出的那个方向传播;(2) 反馈神经网络(feedback neural networks),即网络中有回路,输出层的信号经过
一步时移(shift)再接入到输入层.常用的 DNN 模型如卷积神经网络(CNN)属于前馈神经网络,递归神经网络
(RNN)和长短期记忆模型(LSTM)都属于反馈神经网络.CNN 可以有效地降低传统前馈神经网络的复杂性,并广
泛应用于图像分类和物体识别等场景.CNN 网络的架构可以用公式 来表示:输入层→(卷积层+→池化层?)+→
[3]
全连接层+,其中,“卷积层+”表示一层或多层卷积层(CONV),“池化层?”表示没有或一层池化层(POOL).卷积层
的核心是卷积核,尺寸一般为 3×3,5×5,7×7.相比全连接方式,卷积核的参数非常少,各层通过卷积核共享机制可
以极大减少训练阶段需要优化的总参数量.池化层可以非常有效地缩减矩阵的尺寸(主要用于减小矩阵的长和
宽),从而减少最后全连接层中的参数,并有防止过拟合的作用.常用的池化策略有最大池化和平均池化等.RNN
引入了“记忆”的概念,主要用途是处理输出内容和历史内容有关联的场景,比如时间序列分析、语音识别、机器
翻译、自然语言处理等.RNN 实现递归的结构非常简单,一般是若干个激活函数层叠加在一起组成隐藏层(DNN
可以划分成输入层、隐藏层、输出层.隐藏层就是输入层和输出层之间的多层神经元结构),循环元素在隐藏层
[1]
上执行相同的任务,但是输出依赖于当前的输入和历史记忆.RNN 的推理过程可以用两个公式 表示:S t =f(UX t +
WS t−1 ),O t =Softmax(VS t ).其中:S t 代表时刻 t 的隐藏层状态;O t 代表时刻 t 的输出;X t 是时刻 t 的输入;f 是激活函数;U
表示输入层到隐藏层的权重;V 表示隐藏层到输出层的权重;W 表示隐藏层到隐藏层的权重,负责 RNN 的记忆调