基于光网络的深度学习算法研究

孟海东+冀小青+宋宇辰
摘 要: 光网络是一种轻便的、通用的和纯基于Matlab的深度学习框架。其思想是为深度学习研究提供一个易于理解、易于使用和高效的计算平台。实现此框架可以支持大部分深度学习架构例如多层感知器网络(MLP)、卷积神经网络(CNN)和循环神经网络(RNN)。该框架支持CPU和GPU无缝转换。实验证明此框架在计算机视觉、自然语言处理以及机器人技术中有不同的应用。
关键词: 计算机视觉; 圖像理解; 卷积神经网络; 多层感知器
中图分类号: TN915.63?34; TP311 文献标识码: A 文章编号: 1004?373X(2017)14?0170?04
Abstract: The optical network is a lightweight, versatile and purely Matlab?based deep learning framework. The idea underlying its design is to provide an easy?to?understand, easy?to?use and efficient computational platform for deep learning research. The framework supports major deep learning architectures such as multilayer perceptron(MLP) networks, convolutional neural networks (CNN) and recurrent neural networks (RNN). The framework also supports the straightforward switch between both CPU and GPU for computation. The experiment result indicates that the framework has different applications in computer vision, natural language processing and robotic technology.
Keywords: computer vision; image understanding; convolutional neural network; multilayer perceptron
0 引 言
深层神经网络[1]已经给出了许多机器智能问题的主要进展,最新的神经网络模型的实现主要强调效率。这些框架可以由20万~50万行代码组成,并经常涉及多个编程语言[2?4]。它需要付出巨大的努力来彻底理解和改进模型。一个简单的和自我解释的深层学习框架是高度预期的且加快深层神经网络模型的理解和应用。
在此提出的光网络是一个轻便的、通用的和纯基于Matlab的深层神经网络模型。简洁、高效的Matlab编程技术已被用来实现所有的计算模块。许多神经网络流行的类型,如多层感知器、卷积神经网络、神经网络都在光网络中得以实现,是结合随机梯度下降的几个变化(SDG)为基础的优化算法。
自从光网络仅用Matlab实现,主要的计算用几百行代码来矢量化和执行,数量级比现有的框架更简洁。所有基本操作都可以轻松定制,只需有Matlab编程基本知识。数学化研究人员可以专注于数学建模的一部分而不是工程部分。
应用程序的用户可以很容易地理解和修改任何部分的框架,开发新的网络架构,使他们适应新的应用。除了简单,光网络还具有以下特点:光网络包含最现代的网络架构;计算机视觉中的应用、自然语言处理和强化学习已被证明;光网络提供了一个综合的优化算法的收集;光网络支持在CPU和GPU之间计算的简单切换;快速傅里叶变换来有效地计算卷积,从而使大卷积核被支持;光网络自动化的超参数优化了新型选择性的SGD算法。
1 模 块
主要的计算模块包括前馈过程和向后/反向传播过程。前馈过程评估模型,反向传播报告网络梯度。随机梯度下降算法是用来优化模型参数。
1.1 核心计算模块
光网络能够专注于数学部分而不是低层次的工程细节。为了使本文更完备,在此说明光网络中的主要计算模块。本文的所有网络和相关实验都是建立在这些模块的基础之上。
1.1.1 线性感知器层
一个线性感知器层可以表示为y=Wx+b。在这里,x表示input_dim×1大小的输入数据,W表示output_dim× input_dim大小的权重矩阵,b是一个output_dim× 1大小的偏置向量,y表示output_dim× 1大小的线性层输出。
从线性感知器输入映射到最终的网络输出可以表示为z=f(y)=f(Wx+b),f是一个非线性函数,它表示在更深层次的网络的计算;z是网络输出,通常是一个损失值。
1.1.2 卷积层
卷积层由一个多维滤波器组kio将输入特征图Nmap_in映射到输出特征图Nmap_out。每个输入特征图xi与相对应的滤波器组kio进行卷积,卷积的结果是求和并添加偏置值Bo生成o?th输出图: 。允许使用大的卷积核,快速傅里叶变换(FFT)是用来计算卷积(及相关)。根据卷积定理[5],在空间域卷积等价于在频域的逐点乘法。因此,ki*xi可以用傅里叶变换计算:ki*xi=F-1{F{ki}·F{xi}}。在这里,F表示傅里叶变换,“”表示逐点乘法运算,卷积层支持填充和跨越。
从o?th输出特征图到网络输出的映射可以表示为z=f(yo)。这里f是从o?th输出特征图yo到最终的网络输出的非线性映射。与第1.1.1节类似,,,需要在反向的过程中计算。
1.1.3 Max?pooling层
最大pooling层计算在窗口中的最大元素与步幅大小,一个定制的im2col_ln功能是实现转换pooling补丁为列向量,来矢量化在Matlab中的pooling计算。内置的最大功能是这些列向量可以返回pooling结果和这些最大值的指数,然后,在原来的批量数据恢复相应指数。此外,零填充可应用于输入数据。
不失一般性,从Max?pooling层输入到最终的网络输出的映射可以表示为z=f(y)=f(Sx),其中S是选择矩阵,x是一个列向量,它表示输入数据到这层。
在反向的过程中,被计算并传递给浅层:。
当pooling范围小于或等于该步长大小时,可以用Matlab中简单的矩阵索引技术计算出。具体来说,与输入数据相同大小的一个空的张量dzdx被创建。dzdx(from)=dzdy,from是pooling指数,dzdy是一个记录pooling结果的张量。当pooling范围大于步长大小时,x中的每一个条目都可以被汇集多次,并且反向传播梯度需要为这些多个汇集条目积累。在这种情况下,计算可以利用Matlab自带的功能accumarray()。
1.1.4 修正线性单元
修正线性单元(ReLU)作为一个主要的非线性映射函数被实现,一些其他的函数包括sigmoid和tanh这里的讨论就省略了。ReLU函数是很独特的函数,如果输入大于0,则输出0,否则y=ReLU(x)=x·ind(x>0)。在反向的过程中,如果输入数据是非负的,则梯度传递到较浅层,否则,梯度被忽略。
1.2 损失函数
通常,一个损失函数会和最深核心计算模块的输出相连。目前,为了达到分类任务光网络还支持softmax 中的LogLoss函数。
1.3 优化算法
随机梯度下降(SGD)为基础的优化算法是训练深层神经网络的主要工具。标准的SGD算法和它的一些流行的变型如adagrad[6],rmsprop[7], Adam[8],同样实现了深度学习的研究。值得一提的是,在此实现了一个新的选择性的SGD算法便于参数尤其是学习速率的选择。
2 实 验
2.1 多层感知器网络
在MNIST数据上[9]构造一个多层感知器网络来测试光网络的性能。网络从MNIST图像数据集取得28×28输入,在接下来的两层分别有128个节点。然后,128维特征连接10个节点来计算softmax输出。实验结果见图1。
和测试阶段的损失和错误率
2.2 卷积神经网络
在cifar?10数据[10]上由4个卷积层构建一个卷积网络来测试光网络的性能。此结构与来自MatConvNet的一个报告相同[3]。32,32,64,64在前三层有5×5大小的卷积核,最后一层有4 × 4大小的内核。ReLU函数应用到每一个卷积层之后作为非线性映射函数。光网络自动选择和调整学习速率并可以达到非常精确。与有固定的学习速率的SGD标准比较,选择性SGD具有更好的精度。最重要的是,使用选择性SGD避免手动调谐的学习速率。图2为实验结果。计算在一个Intel i5 6600K CPU和Nvidia Titan X GPU(12 GB内存)的台式电脑上进行。当前版本的光网络用这种网络结构在GPU上每秒可以处理750个图像,大约比使用的CPU速度快5倍。
2.3 LSTM网络
长短期记忆(LSTM)[11]是一个流行的递归神经网络模型。由于光网络的通用性,LSTM网络作为一个特定的应用程序可以在光网络包中实现。值得注意的是,在光网络中的核心计算模块用于执行时域前向过程和反向传播为LSTM。
在一个LSTM模型中的前向过程可以用公式表示为:
和测试阶段的损失和错误率
优化LSTM模型,在LSTM中通过时间的反向传播实现和计算最关键值:
采用一个关键的迭代属性来计算上述值:
一些其他的梯度可以通过使用上述计算输出的链规则计算:
LSTM网络测试一个字符语言建模任务,该数据集由选自莎士比亚作品的20 000个句子组成,每个句子断成67字(和标点符号),LSTM模型可以根据前一个字符预测下一个字符。网络模型中使用30个隐含节点并且RMSProp用于训练。在后10次训练,下一个字符的预测精度提高到70%。
2.4 Q?网络
作为强化学习中的应用,创建一个和MLP网络一致的Q?network[12]。然后将Q?network应用到经典的Cart?Pole的问题中[13]。Cart?Pole系统的动力学可以在一个两层网络数百次迭代中学习到。对Q?network更新过程的一次迭代为:
式中,act是由概率ε随机选择的。所需的网络输出值Qnew是利用观测到的reward和由此产生的状态的贴现值γV(statenew)计算出来的,通过均衡器预测当前的网络。通过使用最小平方损失函数:
3 结 论
为了深层神经网络模型的理解与发展,光网络提供了一个易于扩展的生态系统。在Matlab环境下,整个计算过程可以很容易地跟踪和可视化。这些设置的主要功能可以对深度学习研究界提供独特的便利。
參考文献
[1] KRIZHEVSKY A, SUTSKEVER I, HINTON G E. Imagenet classification with deep convolutional neural networks [J]. Advances in neural information processing systems, 2012, 25(2): 1097?1105.
[2] JIA Y, SHELHAMER E, DONAHUE J, et al. Caffe: Convolutional architecture for fast feature embedding [C]// Proceedings of the ACM International Conference on Multimedia. [S.l.]: ACM, 2014: 675?678.
[3] VEDALDI A, LENC K. Matconvnet: Convolutional neural networks for Matlab [C]// Proceedings of the 23rd Annual ACM Conference on Multimedia. [S.l.]: ACM, 2015: 689?692.
[4] BASTIEN F, LAMBLIN P, PASCANU R, et al. Theano: new features and speed improvements [J]. arXiv preprint arXiv, 2012, 20: 42?51.
[5] MALLAT S G. A wavelet tour of signal processing: the sparse way [J]. Academic press, 1998 , 31 (3) :83?85.
[6] DUCHI J, HAZAN E, SINGER Y. Adaptive subgradient methods for online learning and stochastic optimization [J]. The journal of machine learning research, 2011 (12): 2121?2159.
[7] TIELEMAN T, HINTON G. Lecture 6.5?rmsprop: Divide the gradient by a running average of its recent magnitude [J]. Neural networks for machine learning, 2012, 4 (2): 20?26.
[8] KINGMA D, BA J. Adam: A method for stochastic optimization [C]// Proceedings of the 3rd International Conference for Learning Representations. San Diego: [s.n.], 2015: 1412?1418.
[9] LECUN Y, BOTTOU L, BENGIO Y, et al. Gradient?based learning applied to document recognition [J]. Proceedings of the IEEE, 1998, 86(11): 2278?2324.
[10] KRIZHEVSKY A, HINTON G. Learning multiple layers of features from tiny images [M]. [S.l.: s.n.], 2009.
[11] HOCHREITER S, SCHMIDHUBER J. Long short?term memory [J]. Neural computation , 1997, 9(8): 1735?1780.
[12] MNIH V, KAVUKCUOGLU K, SILVER D, et al. Human?level control through deep reinforcement learning [J]. Nature 2015, 518(7540): 529?533.
[13] BARTO A G, SUTTON R S, ANDERSON C W. Neuronlike adaptive elements that can solve difficult learning control problems [J]. IEEE transactions on systems, man and cybernetics, 1983, (5): 834?846.