欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 人工智能 > 卷积神经网络 >内容正文

卷积神经网络

卷积神经网络精确率不增反降-凯发k8官方网

发布时间:2024/4/11 卷积神经网络 83 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 卷积神经网络精确率不增反降_深度学习 第四门课:卷积神经网络(convolutional neural networks)... 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

“本文大约有 4864 字。

01引言

在这两周时间里,我主要的学习内容如下:

  • 重新复习了一遍前三门课;

  • 学完第四门课卷积神经网络(convolutionalneural networks);

  • 学完第五门课第一周循环序列模型(recurrentneural networks)。

课程整体的学习进度如下,我计划下两周时间可以基本学完课程的所有内容,以及完成全部的编程作业,而现在的课后编程作业完成到了第四门课的resnet部分,我花了些时间学习了tensorflow的基础知识。

02前三门课的部分补充

2.1 深层神经网络中反向传播部分公式的推导和理解

重新学习一遍前面的内容之后,对深层神经网络的反向传播的理解更加深刻了。如下是反向传播中5个式子的推导,所谓反向传播,我的理解是逐层传递da,基于da计算出dzdwdb等。对反向传播过程要做到非常非常的熟悉。

2.2 准确率(accuracy)、精确率(precision)和召回率(recall)

李航老师的《统计学习方法》一书中,有对这三项指标的定义。精确率的定义如下,准确率(accuracy)是一个最直观的指标,但是当不同类别比例非常不均衡时,占比大的类别往往成为影响accuracy的最大因素。然后是精确率(precision)和查全率(recall)。精确率是指分类正确的正样本个数占分类器判定为正样本的样本个数的比例。查全率是指分类正确的正样本个数占真正的正样本个数的比例。李航老师给出的定义更加的直观。       我按照自己的理解,画了一个例子。需要补充的一点是,某个点对应的精确率和召回率是不能全面的衡量模型的性能的,可以通过p-r曲线的整体表现,对模型进行更为全面的评估。03卷积神经网络(convolutional neuralnetworks)

3.1 为什么需要卷积?

神经网络中的卷积层的两个主要优势在于参数共享和稀疏连接,下面来简单的解释这两个概念。参数共享:每个特征检测器(filter/过滤器)以及它的输出都可以在输入图片的不同区域中使用同样的参数,以便提取垂直边缘或者其它特征。它不仅适用于边缘特征这样的低阶特征,同样适用于高阶特征。整张图片共享特征检测器,提取效果也很好。稀疏连接:一次卷积运算只涉及输入图片的部分区域,图片中的其他区域不会对输出产生任何影响。

3.2 过滤器和边缘检测

为了检测图像中的垂直、水平或者任意角度边缘信息,需要构造一个过滤器(filter)。除了上图中的两个实例过滤器外,还有增加权重的sobel和scharr等过滤器。随着深度学习的发展,学习的其中一个目标就是去检测出复杂图像的边缘。对于一个3×3的过滤器,可以把过滤器矩阵中的数字当成9个参数,使得反向传播算法能够让神经网络学习任何它所需要的3×3过滤器。将过滤器当成参数的思想,已经成为计算机视觉中最为有效的思想之一。过滤器f通常为奇数维,如:1×1/3×3/5×5等。

3.3 padding、stride和pooling

如有一个(n × n)的图像,用(f × f)的过滤器做卷积,那么输出的维度就是(n – f 1) × (n – f 1)。如果n = 6,f = 3,那么卷积输出则为4×4。这存在两个问题,一是图像在每次识别边缘或其它特征后都缩小;二是边角的像素在卷积时,只被使用过一次,这就意味着丢掉了图像边缘位置的许多信息。解决这些问题的方法是,可以在卷积之前沿着图像边缘再填充一层像素,这就是padding。valid意味着不填充,same意味着填充后,卷积输出的图片大小和输入图片大小是一样的。卷积步长(strided convolution)很好理解,如下图表示步长为2。总结一些,如果输入图像为(n × n),过滤器为(f × f),padding为p,步幅为s,则卷积后输出的图像为:池化pooling,卷积神经网络也经常使用池化层来缩小模型大小,提高计算速度,同时提高所提取特征的鲁棒性。下面是两种池化类型:最大池化(max pool)和平均池化(average pool)。2d 卷积推广到 3d 卷积也是很好理解的,其中有一点需要注意的是,输入图像和过滤器必须是一样的通道数。如下就是一个3维卷积的例子,使用了两个过滤器。

3.4 简单的卷积神经网络

一个卷积神经网络包括卷积层、池化层和全连接层。许多计算机视觉研究正在探索如何将这些基本模块整合起来,构建高效的神经网络,整合这些模块需要有深入的理解。如下是一种神经网络实例。可以看到,随着层数增加,高度和宽度都会减小,而通道数会增加,然后得到一个全连接层。神经网络另一种常见模式就是一个或多个卷积后面跟随一个池化层,然后一个或多个卷积层后面再跟一个池化层,然后是几个全连接层,最后是一个softmax。04神经网络的实例探究

4.1 lenet-5

大约有6万个参数,使用的是sigmoid和tanh激活函数。

4.2 alexnet

alexnet包含约6000万个参数,使用了relu激活函数,采用了较为复杂的方法在两个gpu上进行训练。论文中还提到,经典的alexnet结构还有另一种类型的层,叫做“局部响应归一化(local response normalization)”,即lrn层。

4.3 vgg-16

vgg-16是oxford的visual geometry group提出的,16表示有13个卷积层 3个全连接层。vgg-16网络没有那么多超参数,这是一种只需要专注于构建卷积层的简单网络。首先用3×3,步幅为1的过滤器构建卷积层,采用same卷积。然后用一个2×2,步幅为2的过滤器构建最大池化层。因此vgg网络的一大优点是它确实简化了神经网络结构。对于以上三种经典的网络结构论文的阅读顺序,吴恩达老师给出的建议是从介绍alexnet的论文开始,然后就是vgg的论文,最后是lenet的论文。

4.4 残差网络(resnets)

resnet的发明者是何凯明(kaiming he)、张翔宇(xiangyu zhang)、任少卿(shaoqing ren)和孙剑(jiangxi sun)。构建一个resnet网络就是通过将很多的残差块堆积在一起,形成一个很深神经网络。下图是一个残差块。理论上网络深度越深越好,但实际上,对于一个普通网络来说,深度越深意味着优化算法越难训练。实际上,随着网络深度的加深,训练错误会越来越多。但有了resnet就不一样了,即使网络再深,训练的表现仍不错。resnet在训练深度网络方面非常有效。接下来简单了解一下resnet的原理。如果使用l2正则化或权重衰减,那么它会压缩、w[l 2] 的值,如果 w[l 2] = 0, b[l 2] = 2、激活函数为relu,那么 a[l 2] = a[l]。因此可以保证网络的效率不会降低。残差网络起作用的主要原因就是这些残差块学习恒等函数非常容易。

4.5 inception网络

inception网络不需要人为决定使用哪个过滤器或者是否需要池化,而是由网络自行确定这些参数,给网络添加这些参数的所有可能值,然后把这些输出拼接起来,让网络自己学习它需要什么样的参数,采用哪些过滤器组合。inception模块的输入为28×28×192,输出为28×28×256。使用1×1卷积来构建瓶颈层,可以大大降低计算成本。以inception网中5×5的过滤器为例。瓶颈层的引入,使得输出28×28×32的计算量从1.2亿次乘法降低到了1240万次,计算成本降低了10倍之多。现在,使用瓶颈层的优势,来构建一个inception module。而inception所做的,就是将这些模块都组合在一起,如下图所示。还有一个特别的inception网络是由google公司所研发的,它被叫做googlelenet,这个名字是为了向lenet网络致敬。05目标检测

5.1 定位分类问题

定位分类问题:以汽车分类定位为例,不仅要判断图片是不是一辆汽车,还要在图片中标记出它的位置,用边框把汽车框起来。通过卷积网络进行对象检测,采用的是基于滑动窗口的目标检测算法,即以某个步幅滑动方框窗口遍历整张图片,对这些方框区域进行检测。这样无论汽车在什么位置,总有一个窗口可以检测到它。为了解决普通滑动窗口庞大计算量的问题,即使用滑动窗口卷积。该卷积的原理是不需要再将图片分成一个个子集,分别执行前向传播,而是将这些子集作为一张图片输入给卷积神经网络进行计算,其中的公共区域可以共享很多计算,一次得到所有的预测结果。

5.2 yolo算法(you only look once)

滑动窗口法卷积实现虽然有很高的效率,但是可能无法输出精确的边界框。一个能得到更精确边界框的算法是yolo算法,基本思路是将输入图像使用网格(3×3为例)划分后,将图像分类和定位算法应用于每一个格子中。把对象分到一个格子的过程是:观察对象的中点,然后将对象分配到其中点所在的格子,即使对象可以横跨多个格子,也只会分到其中之一的格子。与图像分类和定位算法有些类似,它显示地输出边界框的坐标(bx, by, bh, bw),所以这能让神经网络输出可以具有任意宽高比的边界框,输出更加精确的坐标,不会受到滑动窗口步幅大小的限制。接下来来简单了解一下如何精确的指定边界框。如下图,我们约定左上角是(0, 0),右下角是(1, 1),橙色点为对象中点,坐标为(bx, by),边框的高度为bh,宽度为bw。bx、by、bh和bw单位都是相对于格子尺寸的比例。因为对象中点必须分到一个格子中,所以bx和by必须在0到1之间。bh和bw可能会大于1,如下图编号3所示的边界框,就是大于1的。

5.3 交并比(iou)和非极大抑制

交并比就是两个边界框的交集和并集之比。定义交并比是为了评价对象定位算法是否精确,iou = 1,表示预测的边界框和实际边界框完美重合。iou越高,边界框越准确。非极大抑制就是,首先找出pc最高的一个边界框,这就是一个可靠的检测,非极大抑制就会逐一审视剩下的边界框,所有和这个最大的边框有很高并交比,高度重叠的其它边界框就会被抑制。06|人脸识别和神经风格转换

6.1 人脸识别

人脸识别所面临的一个挑战是需要解决一次学习问题,需要通过单单一张图片或单单一个人脸样例去识别这个人。解决这个问题的方法是学习similarity函数,这个函数以两张图片作为输入,然后输出两张图片的差异值,当两张图片的差异值小于某个阈(yù)值 ,那么就能预测是同一个人。函数d的作用是输入两张图片,然后输出它们的相似度。实现这个函数功能的一个方式就是使用siamese网络,即对于两个不同的输入,运行相同的卷积神经网络,然后比较它们。两张图片所对应的siamese网络有相同的参数,网络的学习目标是:如果两个图片 x(i) 和 x(j) 是同一个人,那么得到的编码距离就越小,相反,如果两个图片是不同的人,那么距离应该尽量的大。已经了解到了siamese网络的学习目标,接下来就是定义目标损失函数,然后应用梯度下降学习参数。这里应用的是三元组损失,表示同时看三张图片,即anchor图片、positive图片和negative图片(a、p、n)。我们想要[f(a), f(p)] 之间距离小于等于[f(a) , f(n)],同时为了保证网络中所有编码不会总是输出0,通常加入一个间隔参数a,这个间隔参数的作用是拉大(a, p)和(a, n)之间的间距。得到损失函数定义如下:定义三元组数据集需要成对的a、p,所以需要确保训练集里有同一个人的多个照片。在训练时,遵循a、p是同一个人,a、n是不同的人这一原则,如果随机的选择进行训练,那么损失函数的 [d(a, p) a <= d(a, n)] 将非常容易达到。因此,应该尽量选择难训练的三元组a、p和n,即d(a, p) 非常接近 d(a, n)。

6.2 神经风格迁移

c表示内容图像、s表示风格图像、g表示生成的图像,如下是神经风格迁移的例子。要构建一个神经风格迁移系统,需要为生成的图像定义一个代价函数,通过最小化代价函数,可以生成想要的任何图像。定义一个关于g的代价函数j来评判模型的好坏,然后使用梯度下降法去最小化j(g),以便于生成图像。代价函数有内容代价和风格代价两部分组成。风格迁移网络的代价函数有一个内容代价和风格代价,内容代价定义如下,如果内容图片c和生成图片g在l层的激活值相似,那么就意味着两个图片的内容相似。接下来看看风格代价。将图片风格定义为l层中各个通道之间激活项的相关系数,相关系数这个概念提供了一种去测量不同的特征的方法。比如通过垂直纹理、橙色或者其它特征去测量这些特征在图片中的各个位置同时出现或不同时出现的频率。在通道之间使用相关系数描述通道风格,测量生成图像中某些特征同时出现或不同时出现的频率,进而衡量生成的图像风格与输入的风格图像的相似程度。分别定义风格图像和生成图像关于l层的矩阵(nc × nc),如下图所示。如果两个通道中的激活项数值都很大,那么 g 也会变得很大(相关),如果不相关,就会变得很小。现在我们有了2个矩阵,分别是来自风格图像s和生成图像g。最后,将这两个矩阵s、g带入到风格代价函数中去计算,就得到这两个矩阵之间的误差。风格代价函数式子如下:最后,将这些进行一个组合,就得到了一个神经风格迁移的代价函数。
以上就是这两周的学习笔记了,所里规定使用 word 编写,所以排版转到这里后有些乱。ps:关注微信公众号「蓝本本」,和我一起学习、进修和放纵好奇心。题图:photo by negative spacefrom pexels.
landon——学习、进修和放纵好奇心!@  蓝本本  ——

总结

以上是凯发k8官方网为你收集整理的卷积神经网络精确率不增反降_深度学习 第四门课:卷积神经网络(convolutional neural networks)...的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图