青藏高原对我国的气候有什么影响( 七 )


5.3 卷积神经网络(Convolutional Neural Networks, CNN)
以上介绍的编码器都是全连通网络 , 可以完成10×10的图像识别 , 如手写体数字识别问题 。然而对于更大的图像 , 如100×100的图像 , 如果要学习100个特征 , 则需要1,000,000个参数 , 计算时间会大大增加 。解决这种尺寸图像识别的有效方法是利用图像的局部性 , 构造一个部分联通的网络 。一种最常见的网络是卷积神经网络(Convolutional Neural Networks , CNN)[15][16] , 它利用图像固有的特性 , 即图像局部的统计特性与其他局部是一样的 。因此从某个局部学习来的特征同样适用于另外的局部 , 对于这个图像上的所有位置 , 都能使用同样的特征 。
具体地说 , 假设有一幅100×100的图像 , 要从中学习一个10×10的局部图像特征的神经元 , 如果采用全连接的方式 , 100×100维的输入到这个神经元需要有10000个连接权重参数 。而采用卷积核的方式 , 只有10×10=100个参数权重 , 卷积核可以看作一个10×10的小窗口 , 在图像上上下左右移动 , 走遍图像中每个10×10的位置(共有91×91个位置) 。每移动到一个位置 , 则将该位置的输入与卷积核对应位置的参数相乘再累加 , 得到一个输出值(输出值是91×91的图像) 。卷积核的特点是连接数虽然很多 , 有91×91×10×10个连接 , 但是参数只有10×10=100个 , 参数数目大大减小 , 训练也变得容易了 , 并且不容易产生过拟合 。当然 , 一个神经元只能提取一个特征 , 要提取多个特征就要多个卷积核 。
下图揭示了对一幅8×8维图像使用卷积方法提取特征的示意过程 。其中使用了3×3的卷积核 , 走遍图像中每个3×3的位置后 , 最终得到6×6维的输出图像:
如图所示是Hinton的研究小组在ImageNet竞赛中使用的卷积神经网络[2] , 共有5个卷积层 , 每层分别有96 , 256 , 384 , 384和256个卷积核 , 每层卷积核的大小分别为11×11 , 5×5 , 3×3 , 3×3和3×3 。网络的最后两层是全连接层 。
6 深度学习的训练加速
深层模型训练需要各种技巧 , 例如网络结构的选取 , 神经元个数的设定 , 权重参数的初始化 , 学习率的调整 , Mini-batch的控制等等 。即便对这些技巧十分精通 , 实践中也要多次训练 , 反复摸索尝试 。此外 , 深层模型参数多 , 计算量大 , 训练数据的规模也更大 , 需要消耗很多计算资源 。如果可以让训练加速 , 就可以在同样的时间内多尝试几个新主意 , 多调试几组参数 , 工作效率会明显提升 , 对于大规模的训练数据和模型来说 , 更可以将难以完成的任务变成可能 。这一节就谈谈深层模型的训练加速方法 。
6.1 GPU加速
矢量化编程是提高算法速度的一种有效方法 。为了提升特定数值运算操作(如矩阵相乘、矩阵相加、矩阵-向量乘法等)的速度 , 数值计算和并行计算的研究人员已经努力了几十年 。矢量化编程强调单一指令并行操作多条相似数据 , 形成单指令流多数据流(SIMD)的编程泛型 。深层模型的算法 , 如BP , Auto-Encoder , CNN等 , 都可以写成矢量化的形式 。然而 , 在单个CPU上执行时 , 矢量运算会被展开成循环的形式 , 本质上还是串行执行 。


特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。