深度学习(卷积神经网络ALEXNET)

Alexnet共有8层结构,前5层为卷积层,后三层为全连接层。

在这一讲中
我们将详细讲解深度学习发展中的重要里程碑
alex l2012 年hinton的学生alex reserve ski
构建了一个包含65万多个神经元代
估计参数超过6000万的大规模卷积神经网络
他以自己的名字命名了这个网络叫做artilt
用于解决一直net数据集1000内的分类问题
在2012年image测试比赛上取得了远超google和facebook两个大公司的成绩
相比于前面讲过的l e n t alex lt在网络结构上深了很多
及神经网络层数和每层神经元个数都多了很多
但是他的基本思想却和net完全一样
我们看懂了l net后
能很容易看懂alex net
这张图是alex斯莱特的结构
可以看到它也是由一些卷积层降采样成和全连接层组成的
需要注意的是
层与层之间也有非线性函数和batch normalization
在图中我们没有画出
下面举例说明阿里克斯莱斯的结构
例如在图中第一个卷积层中
所以china数量为三
第一个卷积层有96个
11x11x3的卷积核
卷积的步长
stride等于四四
根据上一讲的思考题
如果一个大m乘以大n的图像和一个小m乘以小n的卷积核
进行卷积操作
移动步长strike等于pq
那么输出的特征图长h和宽w分别为
h等于floor
大m减小m除以p再加1w等于floor
大n减小n除以q再加一代入计算
可以得出第一个卷积层获得的特征图
长和宽都是55
由于有96个卷积核
因此特征图的通道数及cho的数量是96
基于类似的方法
同学们可以自己分析一下alex net其他层的结构参数
从而看懂整个网络的结构
但是alex相比l1 let在以下方面有重要的改进
第一个改进以raw函数代替l net中的sigmoid或tn h函数redox
它等于max 0和x前面讲到sigmoid的函数和t n h函数
在绝对值较大的时候会出现梯度消失现象
这对成熟很多的深度网络的收敛是不利的
reno函数的全称是rectified nur unit
它是一个在自变量x小于零的时候
函数值为零
而在自变量大于零的时候
函数值就是自变量x相应的锐度函数的导数在x小于零的时候是零
在x大于零的时候等于一
这样在自变量大于零的时候
上一层的梯度就能够直接传导到下一层
避免了梯度消失的现象
另一个方面
锐度函数把自变量小于零时的函数值设置为零
假设某一层神经元的输出大于零和小于零的个数差不多
那么利用read函数可以关闭一半左右的神经元
使它们处于非激活状态
因此锐度函数保证了每一次网络中
只有很少的一部分神经元的参数被更新
这样做可以促进深度神经网络的收敛
这就像一个庞大的社会
如果每一个人都标新立异
那么社会的结构往往是不稳定的
但如果大多数人兢兢业业
而少部分人标新立异
那么社会结构在稳定的同时也会具有创造性
alex net的第二个改进是降采样成
用max pooling代替l net的平均降采样
alex为降采样操作起了一个新的名字
石化pl
意思是把临近的像素作为一个尺子来重新考虑
如下图所示
左边所有的红色像素值可以看作是一个池子
经过石化操作过后
变成右边一个蓝色的像素
在alex let中提出了最大石化max pooling的概念
即对每一个临近像素组成的池子选取像素最大值作为输出
相比平均磁化average po 6
最大磁化max poli
之所以能够促进网络的收敛
其原因与reno函数是类似的
在最大情况下
梯度将会直接传导到最大值
而不是平均分布到池子里的每一个元素
这样每次更新的参数将会进一步减少
从而保证了网络的稳定性
alex的第三个改进叫做随机丢弃drop out
为了避免系统参数更新过快
导致过拟合
alex每次利用训练样本更新参数的时候
随机丢弃一定比例的神经元
被丢弃的神经元将不参加训练过程
输入和输出该神经元的权重系数也不做更新
这样每次训练时训练的网络结构都不一样
而这些不同的网络结构却分享共同的权重系数
随机丢弃dropout的做法是对每一层
每次训练时以概率p丢弃一些神经元
图中画出了dropout概率p等于0.50的情况
做ort的技术减缓了网络收敛的速度
也以大概率避免了过滤和现象的发生
alex net的另一个改进是数据扩增
data augmentation
即增加训练样本
尽管2012年image net的训练样本数量有超过120万幅图像
但是相对于如此巨大的网络结构来说
训练图像仍然是不够的
alex等人采用了多种方法增加训练样本
包括一将原图水平翻转
二将256×256的图像
随机选取27×27的片段作为输入图像
运用上面的两种方法的组合
可以将一幅图像变为2048幅图像
同时还可以对每幅图像引入一定的噪声
构成新的图像
这样做可以较大规模增加训练样本
避免由于训练样本不够造成的性能损失
数据扩张
data tgmentation目前被广泛应用于深度模型的训练当中
由于gpu强大的并行计算能力
使得训练过程的时间缩短了数十倍
哪怕是这样训练的时间仍然持续了六天
在2013年最初的论文中
alex net的结构是如下所示
和我们前面的结构示意图相比
这张图是完全一样的
只是作者将每一层的特征图的通道平均分成了两份
分别画在了上面和下面
这样画是因为作者用了两块gpu
所以一块gpu管理上面的运算
另一块管理下面的运算
gpu graphic processing unit
有一个通俗的中文名字叫做显卡
它是一种专门在个人电脑工作站
游戏机和一些移动设备上进行图形运算的微处理器
它的特点是线性计算
并行化程度好
这个特点正好被alex lt用来做神经网络后向传播的梯度更新
利用gpu进行深度学习训练
这一重要的改进使专门生产gpu的公司如美国的nvidia公司变得炙手可热
从2015年开始
nvidia的股票持续上涨
到目前股票增值了将近20倍
近年来
gpu性能在不断增长
以及gpu相关的软件也不断的发展
相比2012年alex最初利用gpu训练时期早已不可同日而语
目前利用2万元左右的gpu设备
重复alex在2012年的实验只需要几个小时
这一节我们详细介绍了alex的结构
以及alex对于卷积神经网络的一系列改进
它们分别是锐度函数最大池化
max pool
随机丢弃dropout
数据扩张
data augmentation
以及利用gpu训练深度神经网络
目前这些改进已经被公认为训练深度神经网络的重要方法
在不同的深度神经网络的训练上获得一系列的应用
课程的最后出一道思考题给大家
我们前面详细计算了l net的代估计参数个数如图所示
请你根据这一讲提到的alex net的结构以及alex net的网络结构图
也计算一下每层参数的个数
本讲内容就到这里
谢谢大家不

发表评论

邮箱地址不会被公开。 必填项已用*标注