引子

首先对比图像分类的步骤

机器学习领域
1特征提取(很考验使用者的经验)
2特征筛选
3输入分类器
简单来说就是基于机器学习

深度学习领域
特征的提取,筛选,分类集成于一体
简单来说就是基于神经网络

本篇论文遇到的问题与对应的解决方案
网络过拟合→使用数据增强+dropout
tanth,sigmoid梯度消失与训练速度慢问题→使用relu
gpu算力不足→使用多卡训练(alexnet是2012年提出的,那个时候的gpu算力与现在没法比)

论文框架

摘要(abstruct)部分
介绍了alexnet网络结构及成果

⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇
介绍(introduction)部分,
说明了神经网络在算力更好的GPU与更加强大的数据的加持下会有更好的结果(硬件与Garbage in,Garbage out)

⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇
ILSVRC与imagenet的介绍
⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇
relu两个GPU并行训练
⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇
防止过拟合的手段,dropout

https://blog.csdn.net/CSDNXXCQ/article/details/114012986?spm=1001.2014.3001.5501
见里面的防止过拟合的手段3即可
dropout的作用在于随机使一定比例的神经元输出为0
对于一个有A个节点的神经网络来说,使用dropout后就可以看作是2A个模型的集合

#示例:
layers.Dropout(0.2),#一般放在隐藏层后面#用于控制工作与不工作的神经元的比例

relu函数
在这里插入图片描述
要么是其本身要么是0

优势:
训练快
因为相对于tanh与sigmoid函数,relu的函数的表达式更加简单,导数也自然就更好求

增加神经网络的非线性
relu为非线性函数,加入神经网络以后将能使网络拟合非线性的映射,从而增加网络的非线性

防止梯度消失问题,这个问题的讲解见
https://blog.csdn.net/CSDNXXCQ/article/details/114012986?spm=1001.2014.3001.5501

使网络具有稀疏性
relu函数可以使一些神经元输出为0,从而增加网络的稀疏性

tensorflow2.x的代码实现

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

a = tf.linspace(-1.3, 1.2, 15)

print( tf.nn.relu(a) )
print( tf.nn.leaky_relu(a) )

```python

softmax
推导详见https://blog.csdn.net/CSDNXXCQ/article/details/113361323
作用:
将神经网络的输出变为概率分布
数据的和为1
负数变为正数

交叉熵Cross entropy
数值越小,两个概率越接近

⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇
超参数设置与权重及偏置的初始化
⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇
alexnet网络在比赛中获得的成就
⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇
结合实验,展示卷积核学习的内容得出结论,同一类的图像特征,欧几里得距离更近
⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇⬇
结论,神经网络可以很好地完成图像分类任务

主要内容

深度学习方法是一种用多层表达,通过简单非线性变换的构成获得每个变换的方法,将表达结果都放在一层里面(从未加工的输入数据开始),在一个更高的表达,稍微更抽象的层级里,当该作品(输入数据即input)经历了足够的转换之后,非常复杂的功能就会被算法学习到

神经网络一般用于有着复杂结构的高维度数据中,能够去做很多领域的事比如科学,金融,政务处理

出人意料的是,在自然语言处理方面,特别是话题分类,情感分析,问题回答与语言翻译等领域,深度学习对于多样化的任务已经产生了十分有前景的结果。

我们计算一个用于衡量误差(或者说,与真实值的巨距离)的在输出得分函数与期望的部分(或者说,真实值)的分数的目标函数。经过机器编辑器的内部的调整的参数去减少该算法的误差,这些可调整的参数一般被称之为权重,是可以被看做knob的定义为输入输出的机器函数的真实的数字,在典型的深度学习系统中,那里有数以百万计的可以调节的权重,以及数以百万计的在模型训练阶段就被打上标签的样本。

目标函数用于平均全面地训练样本,可以被看作一种有着高维度的权重数值的人文景观,那些负梯度向量表明那些不合理的方向的风景,带它更加接近那些低于平均误差的最小值。

在训练之后,系统(指多个神经元构成的神经网络)的表现用不同组合的样本上评价,我们称之为测试集,这些处理我们称之为机器的一般化处理能力,它的能力会在新数据输入时产生明智的而且从未在训练集中看到的结果

这些训练规则的副产物告诉我们2个小的影响是怎么影响构成的(小到去影响X和Y的)

对于这类问题(指特征处理),传统的选择是去手动设计一个优秀的特征提取器,这样做的话,需要丰富的工程技能以及丰富的领域专长

为了让分类器更强有力,一个就是可以使用一般非线性特征作为核心方法

在多层非线性的处理下,一个(层数)深度在5到20层的系统可以实施特别复杂的功能(他们是同时敏感的去微小地调整——将Samoyed从白狼中区别出来,以及漠不关心地去夸大不相干的变化,比如背景,姿态,灯光以及周围的物体),

现在,大多数受欢迎的非线性函数是被线性单元(relu函数)矫正的

特别地,对于大型的神经网络,可怜的最小局部值是一个非常罕见的问题,在忽略最初的条件的情况下,该系统几乎经常达到一个非常相似的质量

几个向下的弯曲方向是表现在非常大的数字中的,但是,他们中的大多数对于目标函数有着非常小的数值,因此,这些被卡在承受点的算法是无关紧要的。

通过使用这个重构的目标对更加复杂的特征侦测器进行的好几层的预训练

以及这个允许研究者以更快的速度去训练神经网络10到20次,在2009年,该方法已经被用于短时间映射窗口

对于一个物体的关键的洞察力的副产物(或者说梯度)伴随着对模型输出方面(或者说输入之后的模型),那个反向传播问题可以被应用于通过所有模型重复地传播梯度,从末端地输出结果开始(就是普通神经网络产生预测结果的地方)通过所有的方法到底部(外部的数据被输入的地方),一旦这些梯度被计算,它将径直地去计算每个模型的梯度

在标准演说识别中基准中,使用了一个小型的词汇表,该方法达到了突破性的结果,并且快速发展到去对一个大型词汇表的突破性结果

1维的信号和结果包括语言,2维的图片或者声谱图以及3维的影像或者体积的图像,这些是藏在卷积网络后面的四个关键要素,这些是占据优势的自然信号的内容,局部的连接,分享权重

当深度卷积的神经网络被应用到一组百万级的,来自网页的1000种不同的分类的图片数据中,几乎有着一半的误差比例的最好竞争/比较方法,他们达到了惊人的结果。这些成功的影响来自GPU(硬件),relu(函数)的使用,以及一个被成为dropout的新的正则化技术

卷积网络是很容易影响到高效的硬件实现(特别是)在硬件领域或者可编程的门阵列,一些公司,诸如英伟达,mobileye,intel,qualcomm和samsung正在发展卷积网络芯片用于能够实时地应用在智能手机,相机,机器人,自动驾驶车辆上

注意,不要使用分布式的表述

那些经过多层神经网络叠加的隐藏层经过学习之后去表达神经网络的输入,通过那种让预测变得容易把输出结果作为目标的方式

在自然语言(处理)程序中文本词向量的表达现在被非常广泛地运用

在介绍自然语言处理模型之前,处理语言的标准的统计模型方法就是不要利用不同的分布式表达:那基于对发生次数与短信号的长度到N的频率统计(被称为n模型)以及对V词汇表的排序,那么吸收文本内容的描述多于一大把词

自从深度学习被无监督学习蒙上阴影之后,在振兴深度学习的过程中,无监督学习有着起催化效应的效果

我们期待大量的特征进步来自端对端的训练系统并且用RNN连接卷积网络使用增强学习去决定看/扫描哪里。连接着深度学习和增强学习的系统是在他们初期的,但是他们已经胜过了被动式的系统,在玩许多不同的音乐游戏时,胜任了分类任务并产生了给人以深刻印象的结果

尽管深度学习与样本推理已经被用于研究演讲与手写字体识别很长时间,新的样本仍需要被基于规则的操作表达的符号的巨量的向量替代

神经网络处理图像分类流程

本论文的流程

在这里插入图片描述
一般流程
在这里插入图片描述

训练阶段

需要大量带标签的图像数据,比如猫的图片,狗的图片,狼的图片,然后将其种类分别标记(映射)为0,1,2,
也能对应得写成one-hot coding形式
正是因为有标签,故其为有监督学习

注意,尽可能地提高网络地泛用能力,减少局部过拟合
比如狗,有哈士奇,金毛,泰迪,
训练狗的部分时尽可能地将哈士奇,金毛,泰迪均衡放入,这是为了让神经网络更好地识别狗的特征,而不是单纯地将泰迪识别为狗

训练集用于神经网络的参数学习,
测试集用于测试网络的精确度与泛化能力
验证集是神经网络参数调参的依据

测试阶段

输入要测试的图片,看看神经网络经过运算以后放入分类器(softmax)判断的种类就知道是否正确了

本模型的衡量标准
top-1error
选择概率向量里面最大的那个作为预测结果
结果分类正确则预测正确

top-5error
选择概率向量里前五个大的那个作为预测结果
预测的结果中,只要出现了正确的类别即为预测正确

该论文的网络结构

alexnet网络结构图
在这里插入图片描述

里面有5个卷积层,3个全连接层,3个池化层

图片上标注的图片尺寸为224224,而实际上做实验真正输入的尺寸为227227
图上使用了两块GPU并行计算(即图上的两个通道),因为那个时候的GPU是算力不足的
更加贴合的结构图:
在这里插入图片描述
输入数据 —卷积层1—卷积层2—卷积层3—卷积层4—卷积层5—全连接层FC6—全连接层FC7—全连接层FC8(最后一个全连接层一般被称为logits即没有进行归一化的概率分布)

解读:
在这里插入图片描述
在这里插入图片描述

对卷积的知识补充:
先明确:所有的神经网络都是用矩阵的内积进行计算的
卷积的作用
在这里插入图片描述
卷积主要是对3维图像的处理,上图为示意

示例

将卷积层放入神经网络中
输入层–卷积层–池化层–全连接层
在这里插入图片描述

简单地理解就是,卷积是提取特征,池化是压缩特征

然后我们来看看卷积这个方法对图片数据做了什么
在这里插入图片描述

在这里插入图片描述

如上图,在对32x32x3地图片进行提取后,以3x3大小,步长为1的方式对图像做类似扫描的操作,力争在对图像的每一个部分进行特征提取
1 3 1
2 2 3
0 2 2
是提取的X

是提取到的权重参数,用于对图像进行打分看看适合辨别为哪个类别的哪个部分
0 1 2
2 2 0
0 1 2

卷积特征值的计算方法
1彩色图像都有三个颜色通道,分为RGB
即 red green blue
计算的时候这三个通道都分别计算然后相加,就是这个像素点的数值
在这里插入图片描述

这是用了两个不同的卷积核进行特征提取
在这里插入图片描述
下图则是用了6个卷积核
在这里插入图片描述

然后变为28 x 28 x 6即6张特征图堆叠在一起

一点小tips
输入特征map的颜色通道数与卷积核通道数一致,
卷积核的个数与输出的feature map的个数相等

参数计算

在这里插入图片描述

卷积的计算公式:
通用公式:
输入图片大小 W×W
Filter大小 F×F
步长 S
padding的像素数 P
N = (W − F + 2P )/S+1
输出的图片大小为NxN

卷积方式分为valid与same两种
same:
在这里插入图片描述
输入权重w / 步长s 之后向上取整
valid:

在这里插入图片描述
向上取整

连接数量的计算公式:
输出特征图的尺寸 x (卷积核大小x卷积核通道 +1) x 输出特征图的通道数

该网络的训练与测试

1,随机地从256256地原始图像中截取224224大小地区域,做数据增强处理,进行水平翻转及镜像,相当于增加了2*(256-224)^2 = 2048倍的数据量
由此缓解了了数据不足带来的过拟合问题,提高模型的泛化能力
2,对图像的RGB数据进行PCA处理,并对主成分做一个标准差为0.1的Gaussian perturbation,增加一些噪声,能使模型的错误率下降%1
3,在使用模型进行预测时,取图像数据四个角加中间这五个位置,并进行左右翻转,一共获得10张图片对其进行预测并对结果求均值

该网络超参数

batchsize = 128
weight deacy = 0.0005
learining rate = 0.01
epoches = 90

卷积核初始化方式:均值为0方差为1的正态分布(标准正态分布)
bias的初始化方式 :2,4,5卷积层以及全连接层初始化为1,剩余层初始化为0

该网络特点

1首次使用GPU进行网络加速训练
2使用了relu作为cnn的激活函数,而不是传统的Sigmoid激活函数以及Tanh激活函数,解决了sigmoid函数在网络较深时产生的梯度弥散问题
3首次提出LRN层,对局部神经元的活动创建竞争机制,使得其中影响比较大的值变得相对更大,并抑制了其他反馈较小的神经元,提高了模型的泛化能力
4在全连接层的前两层中使用了Droupout随机失活神经元操作,以减少过拟合(dropout技术就是该篇论文首次实用化,需要注意的是dropoout在这之前就有独立论文但是没有实用化)
5数据增强处理,使得图像数据有限的情况下尽可能地增加了图像数据的数量,由此缓解了了数据不足带来的过拟合问题,提高模型的泛化能力
6对图像的RGB数据进行PCA处理,并对主成分做一个标准差为0.1的Gaussian perturbation,增加一些噪声,能使模型的错误率下降%1

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐