卷积神经网络_卷积神经网络计算公式

卷积神经网络_卷积神经网络计算公式什么是卷积 首先看卷积公式 它是通过两个函数 f(t) 和 g(t) 来生成第三个函数的一种数学算子。从负无穷到正无穷遍历全部 u 值,把 g(t-u) 的值乘以 f(u) 的值之后再进行累加,得到关于该累加操作的关于 t 的函数。从另一个角度看,卷积就是一种加权求和。 用离散信…

什么是卷积

首先看卷积公式

卷积神经网络_卷积神经网络计算公式

它是通过两个函数 f(t) 和 g(t) 来生成第三个函数的一种数学算子。从负无穷到正无穷遍历全部 u 值,把 g(t-u) 的值乘以 f(u) 的值之后再进行累加,得到关于该累加操作的关于 t 的函数。从另一个角度看,卷积就是一种加权求和。

用离散信号方便理解卷积的操作。有两个函数f(n)和g(n),分别如下:

这里写图片描述
这里写图片描述

这里写图片描述
这里写图片描述

则卷积运算f(n)*g(n)过程为,

首先,f(n)乘以g(0),g(0)为1,则

这里写图片描述
这里写图片描述

其次,f(n)乘以g(1)并整个右移一个单位,g(1)为2,则

这里写图片描述
这里写图片描述

接着,f(n)乘以g(2)并整个右移一个单位,g(2)为2,则

这里写图片描述
这里写图片描述

同样,f(n)乘以g(3)并整个右移一个单位,g(3)为3,则

这里写图片描述
这里写图片描述

最后,将4个图叠加即完成卷积运算。

这里写图片描述
这里写图片描述

所以卷积就是一个函数在另一个函数的加权叠加。它是一种加权求和。

对于二维卷积,对应的公式为:

卷积神经网络_卷积神经网络计算公式

离散公式为:

卷积神经网络_卷积神经网络计算公式

二维卷积的运算过程中涉及到 f(t,u) 函数矩阵的180度翻转,而卷积神经网络的卷积运算则稍微有点不同,运算过程不进行180度翻转,且g在前f在后。

从卷积神经网络来看,f(x,y) 可看成是2*2 或 3*3的网格,即卷积核,而 g(x,y) 则对应图像的像素,比如28*28,则卷积操作其实就是卷积核 f 在图像 g 上一格格移动而做的乘积并累加和。详细的操作后面会有形象说明。

神经网络

了解卷积神经网络之前需先了解最基础的BP神经网络,BP神经网络一般如下图所示,有多个层,比如左边的包含输入层、隐层和输出层,而右边的则包含了两个隐层。每层的神经元与下一神经元全互连,同层之间的神经元不会相连,输入层用于接收输入,经过隐层加工后再到输出层加工并输出。

这里写图片描述
这里写图片描述

BP神经网络好的地方就是我们完全不必事先考虑怎么用数学方程来描述输入和输出之间的关系,转而考虑的是设计一个N层神经网络,而要多少层、每层要多少个节点就可以我们根据经验来设计,可通过不同的网络模型来看哪个模型能更好地拟合。

BP神经网络其实很直观很好理解,整个过程如下。

下面是一个三层(不算输入层)神经网络,两个输入经过几层网络后得到一个输出。

这里写图片描述
这里写图片描述

卷积神经网络_卷积神经网络计算公式

这里写图片描述
这里写图片描述

卷积神经网络_卷积神经网络计算公式

这里写图片描述
这里写图片描述

卷积神经网络_卷积神经网络计算公式

这里写图片描述
这里写图片描述

卷积神经网络_卷积神经网络计算公式

这里写图片描述
这里写图片描述

卷积神经网络_卷积神经网络计算公式

这里写图片描述
这里写图片描述

卷积神经网络_卷积神经网络计算公式

这里写图片描述
这里写图片描述

卷积神经网络

可以看到上面的BP神经网络层与层之间都是全连接的,对于图像处理领域,当神经网络处理大图像时,全连接会导致待训练的参数非常庞大,比如100万个像素的图像,对于100个节点的隐层,则会产生亿级别的参数,如果更多层及更多个节点那参数数量将会无比庞大。BP神经网络没有假设相邻图像之间存在紧密联系。综上所述,BP神经网络不适合做图像处理。

为减少参数数量,首先想到可以构建部分连接的神经网络,每个神经元不再与上层所有神经元相连,而是连接某部分。另外还能通过权值共享来减少参数数量,一组连接共享权重而不必每个连接权重都不同。除此之外,还能通过池化来减少每层的样本数,从而减少参数数量。结合以上特点,卷积神经网络就是这样的一种网络。

看一个卷积神经网络示意图,它包含了若干卷积层、池化层和全连接层。图像输入经过第一层卷积层处理后,得到4层feature,为什么可以是4层呢?其实就是可以自定义4个不同的filter对输入分别运算,就得到4层feature。然后池化层对卷积后的feature进行池化处理,得到更小的feature,这里运算后同样是4层feature。接着继续根据filter做卷积和池化处理,最后通过两个全连接层完成输出。

这里写图片描述
这里写图片描述

卷积层

前面说到卷积操作其实就是卷积核 f 在图像 g 上一格格移动而做的乘积并累加和,具体的操作如下两个图,g(x,y) 是一个5*5的图像,卷积核 f(x,y) 是3*3的网格。卷积核在图像上逐步移动计算乘积并累加,最后得到一个3*3的特征映射。

这里写图片描述
这里写图片描述

这里写图片描述
这里写图片描述

移动的步伐为1个单位,当然也可以2个单位地移动。而前面说到的卷积操作可以由多个filter进行运算,这时卷积运算是怎样进行的呢?下图形象地展示了整个过程,其中输入有3层的数据,再定义两个3*3*3的filter,分别为Filter W0 和Filter W1 ,Filter W0以2个单位移动,3个维度分别对应输入层做乘积累加运算得到3个结果,再将这3个结果加起来并加上偏移量b0得到最终结果。Filter W0遍历输入得到一个3*3的输出,同样地,Filter W1也是进行同样地操作得到另外一个3*3输出。最终的输出就是一个3*3*2的网络。

另外可以看到最外一圈都为0,这是一种处理边界的方式,叫zero padding,通过它不会让边缘的特性丢失。

这里写图片描述
这里写图片描述

池化层

常见的池化有两种,最大值池化和平均值池化。最大值池化即在区域中选择最大值作为池化后的值,而平均值池化则是区域中所有值的平均值作为池化后的值。

它的思想可以看下图,卷积处理后特征还是具有较多神经元,通过池化抽样处理后减少了神经元。

这里写图片描述
这里写图片描述

池化处理的好处就是能显著减少参数的数量,并且池化单元具有平移不变性。

全连接层

特征都提取好后将进入到一个全连接层,全连接层其实就像前面的经典的BP神经网络,经过多层卷积和池化层处理后参数已经大大减少,一般最后再通过添加 softmax 分类器实现最终的识别。

训练卷积神经网络

卷积神经网络的训练比全连接神经网络的训练复杂很多,因为全连接神经网络相邻两层的所有神经元都相连,而卷积神经网络则要知道哪些神经元之间相连,而且还引入了池化层,都导致了训练更加复杂。但本质思想上两者是一致的,都是误差逆传播。

一般卷积神经网络的结构为输入层->卷积层->采样层->卷积层->采样层->…->卷积层->采样层->输出层。比如如下图:

这里写图片描述
这里写图片描述

输出层

首先定义n个样本的代价函数

卷积神经网络_卷积神经网络计算公式

则某个样本的误差为

卷积神经网络_卷积神经网络计算公式

输出层的激活函数可以有很多种,这里用s函数,它的输出范围是0到1,通过训练让误差趋于0。所以更新公式为

卷积神经网络_卷积神经网络计算公式

采样层

卷积神经网络_卷积神经网络计算公式

这里写图片描述
这里写图片描述

如果使用了均值池化则是将误差平均分配到上一层卷积层对应的神经元上。

卷积层

现在只看步长为1、深度为1且filter为1的情况,左边绿色表示l-1层的输入,中间黄色是filter,右边红色是l层的误差项。

这里写图片描述
这里写图片描述

卷积神经网络_卷积神经网络计算公式

这里写图片描述
这里写图片描述

卷积神经网络_卷积神经网络计算公式

========广告时间========

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 item.jd.com/12185360.ht… 进行预定。感谢各位朋友。

为什么写《Tomcat内核设计剖析》

=========================

欢迎关注:

卷积神经网络_卷积神经网络计算公式

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13237.html

(0)

相关推荐

  • 用Python判断列表是否相同

    用Python判断列表是否相同列表是Python中最常用的数据类型之一,通常用于存储一组有序的数据。在某些情况下,我们需要判断两个列表是否相同,比如在测试中验证函数的输出是否正确,或者在比较用户提交的数据和标准答案时。本文将介绍如何使用Python判断两个列表是否相同。

    2024-05-13
    63
  • dnf2015劳动节礼包(dnf2019国庆礼包)

    dnf2015劳动节礼包(dnf2019国庆礼包)

    2023-09-14
    183
  • 重新更新python(重新更新一下)

    重新更新python(重新更新一下)Mac OS X10.9默认带了Python2.7,不过现在Python3.3.3出来了,如果想使用最新版本,赶紧升级下吧。基本步骤如下。

    2023-12-03
    106
  • 在hadoop1.x中,mapreduce是由一个_美国新冠病毒死亡率

    在hadoop1.x中,mapreduce是由一个_美国新冠病毒死亡率1. MapReduce入门 1.1 MapReduce的思想 MapReduce的思想核心是"分而治之" , 适用于大量的复杂的任务处理场景 (大规模数据处理场景) . Map负

    2022-12-25
    149
  • Python中的Zip函数

    Python中的Zip函数Python是一种高级编程语言,被广泛应用于各种领域。在Python编程中,经常会遇到一种情况,需要同时遍历两个或多个列表。Zip函数正是为此而生的!Zip函数可以将两个或多个列表中的元素逐个配对后返回一个元组构成的列表。Zip函数既简单又方便,可以大大减少编写代码的时间和复杂度。

    2024-05-16
    86
  • Mac自带Python

    Mac自带PythonPython是一种简单易学、功能强大的编程语言,具有良好的可读性和高级抽象能力,广泛应用于Web开发、科学计算、数据分析、人工智能等领域。对于Mac电脑用户来说,使用Python也非常方便,因为Mac系统已经自带了Python解释器。

    2024-04-20
    69
  • 【MySQL笔记】正确的理解MySQL的MVCC及实现原理[通俗易懂]

    【MySQL笔记】正确的理解MySQL的MVCC及实现原理[通俗易懂]MVCC多版本并发控制前提概要MVCC实现原理MVCC相关问题前提概要什么是MVCC?MVCCMVCC,全称Multi-VersionConcurrencyControl,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。MVCC在MySQLInnoDB中的实现主要是为了提高数据库并发性能…

    2023-04-02
    151
  • 开源直播课丨大数据集成框架ChunJun类加载器隔离方案探索及实践

    开源直播课丨大数据集成框架ChunJun类加载器隔离方案探索及实践本期我们带大家回顾一下无倦同学的直播分享《ChunJun类加载器隔离》,ChunJun类加载器隔离的方案是我们近期探索的一个新方案,这个方案目前还不是非常成熟,希望能借由此次分享与大家一起探讨下这方案

    2023-06-09
    125

发表回复

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