网站首页 > 技术文章 正文
阅读前请保证已阅读上一篇文章
卷积神经网络CNN完全指南终极版(一)
【5】全连接层
上一篇文章我们说到卷积神经网络的前三层,现在开始讲解它的最后一层全连接层。
全连接层的形式和前馈神经网络(feedforward neural network)的形式一样,或者称为多层感知机(multilayer perceptron,MLP),纠结了很久要不要再具体介绍前馈神经网络,最终决定还是先假设读者朋友都已经有了这方面相关的知识,如果有需要的话我再单独写一篇文章介绍FNN。
还是回到上一篇中识别图片X的栗子。
原图片尺寸为9X9,在一系列的卷积、relu、池化操作后,得到尺寸被压缩为2X2的三张特征图。
从9X9,到2X2,看起来我们已经做了很多事情了哎!似乎胜利就在前方啦(? ?_?)?
等一下,想想我们最初和最终的目的到底是什么?是对这张照片进行识别,识别它到底是X还是O呢(其实也算是对它进行一个二分类)。那我们现在得到的是什么?是一个2X2的矩阵,好像和分类并没有什么毛线关系啊。
别急。
全连接层要做的,就是对之前的所有操作进行一个总结,给我们一个最终的结果。
它最大的目的是对特征图进行维度上的改变,来得到每个分类类别对应的概率值。
全连接层,顾名思义就是全部都连接起来,让我们把它与卷积层对比起来看。
这么说来的话前面的卷积层肯定就不是全连接了,没错,卷积层采用的是“局部连接”的思想,回忆一下卷积层的操作,是用一个3X3的图与原图进行连接操作,很明显原图中只有一个3X3的窗口能够与它连接起来。
那除窗口之外的、未连接的部分怎么办呢? 我们都知道,采用的是将窗口滑动起来的方法后续进行连接。这个方法的思想就是“参数共享” ,参数指的就是filter,用滑动窗口的方式,将这个filter值共享给原图中的每一块区域连接进行卷积运算。
敲一下黑板:局部连接与参数共享是卷积神经网络最重要的两个性质!
那么接下来再来看全连接神经网络。
还是拿9X9的输入原图做栗子,要进行全连接的话,那权值参数矩阵应该也是9x9才对,保证每一个值都有对应的权值参数来运算。(二者坐标直接一一对应)
(手残.....图画的好丑......意会到了就好,不要在意外表.....大概就是这个意思,但好像这个例子又举得不恰当,还是推荐大家直接去了解全连接神经网络。)
还是回来看接下来的操作,得到了2X2的特征图后,对其应用全连接网络,再全连接层中有一个非常重要的函数----Softmax,它是一个分类函数,输出的是每个对应类别的概率值。比如:
【0.5,0.03,0.89,0.97,0.42,0.15】就表示有6个类别,并且属于第四个类别的概率值0.89最大,因此判定属于第四个类别。
注意:本例中因为只有两个类别X和O,而且数据量到此已经非常少了,因此直接将三个特征图改变维度直接变成一维的数据。(相当于全连接层的每个参数均为1)
展开的数据即为属于类别X的概率值,值大小也在对应X的线条粗细中表现出来了。
以上所有的操作都是对标准的原图X来进行的,因此最终分类显示即为X毋庸置疑。
假设对一张看起来并不标准的图进行分类。如下
对于进行一系列操作后,假设得到的概率值如下所示:
0.9表示极其大可能是X,因此对应到X的黄色线条比对应到O的绿色线条要粗很多很多。
我们对结果进行统计分析后可判断这张图片里的字母为X。
【6】神经网络的训练与优化
前面说了那么多,其实只是一个大致的框架的设计而已,里面的参数具体是多少则是需要训练的。
那么神经网络到底需要训练什么呢?
训练的就是那些卷积核(filter)。
针对这个识别X的例子,我们可以人为定义三个3X3的卷积核,便可实现对X的特征提取。但是在实际运用中,比如识别手写字母,几乎不可能存在标准的写法,每个人的字迹都完全不同,因此原来的那三个标准的卷积核就变得不再适用了,为了提高CNN模型的通用性(机器学习中的“泛化能力”),就需要对卷积核进行改写。经过成千上万的训练集来训练,每一次加入新的数据,都有可能对卷积核里的值造成影响。
那么具体的训练方法是什么呢?
就是赫赫有名的BP算法---BackProp反向传播算法。
在训练时,我们采用的训练数据一般都是带有标签label的图片。如果图片中的字母是X,则label=x,如果图片中的字母是A,则label=A。 标签能直观地反映图片。
在最开始,训练前,我们定义一个大小为3X3的卷积核,那么里面具体的值是多少,我们都不知道,但又不能为0吧,所以就用随机初始化法来进行赋值,卷积核获取到了一个随机值,便可以开始工作。
卷积神经网络便可以开始工作了,输入一张带有标签的图片(假设图片内容是字母X)。经网络识别后判断是X的概率为0.3。本来应该是1.0的概率,现在只有0.3,问题就很明显了,存在了很大的误差。
一种简单定义误差error的计算公式为 error=(result?label)2
训练的终极目的就是使得这个误差最小,常用的方法是 梯度下降法。
内部设计的具体复杂公式在此不多做叙述。
简单地说可以参照下图,要使得误差error最小,就是让卷积核里的参数w往梯度下降最小的反向改变。
用这种方法来改变卷积核里的参数W使得误差最小。
在现有的各大深度学习框架中,CNN的优化可直接通过定义优化器解决,因此这里只是简单叙述原理以供了解。
猜你喜欢
- 2024-10-22 彻底搞懂CNN中的卷积和反卷积 cnn卷积计算公式
- 2024-10-22 Python MTCNN(人脸检测)项目附代码讲解(2)-NMS/IOU工具介绍
- 2024-10-22 谷歌大脑用强化学习为移动设备量身定做最好最快的CNN模型
- 2024-10-22 STFGNN:用于交通流预测的时空融合图神经网络
- 2024-10-22 通过 Python 中的 Keras 示例了解 CNN 基础知识
- 2024-10-22 CNN中一些特殊环节的反向传播(面试要点)
- 2024-10-22 为何Keras中的CNN是有问题的,如何修复它们?
- 2024-10-22 用Keras实现一个标准的CNN! keras实现gan
- 2024-10-22 二项式定理问题(1):通项公式 二项式定理问题
- 2024-10-22 CNN 可视化算法 Grad-CAM pointrcnn可视化
你 发表评论:
欢迎- 最近发表
-
- 吴谨言专访大反转!痛批耍大牌后竟翻红,六公主七连发力显真诚
- 港股2月28日物业股涨幅榜:CHINAOVSPPT涨1.72%位居首位
- 港股2月28日物业股午盘:CHINAOVSPPT涨1.72%位居首位
- 港股3月2日物业股涨幅榜:CHINAOVSPPT涨1.03%位居首位
- 港股3月2日物业股午盘:CHINAOVSPPT涨1.03%
- 天赋与心痛的背后:邓鸣贺成长悲剧引发的深刻反思
- 冯小刚女儿徐朵追星范丞丞 同框合照曝光惹人羡,回应网友尽显亲民
- “资本大佬”王冉:51岁娶小17岁童瑶,并承诺余生为娇妻保驾护航
- 港股3月2日物业股午盘:CHINAOVSPPT涨1.03%位居首位
- 「IT之家开箱」vivo S15 图赏:双镜云窗,盛夏风光
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)