计算机视觉 神经网络基础理论

news2024/12/29 11:00:20

1.感受野

输出featuremap上的一个像素点在输入图上的映射区域的大小。

计算公式: lk+1=lk+[(fk+1−1)∗∏i=1ksi] , 为前层的步长之积∏i=1ksi为前k层的步长之积第层对应的感受野大小,第层的卷积核的大小,或为池化尺寸大小lk第k层对应的感受野大小,fk+1第k+1层的卷积核的大小,或为池化尺寸大小

当前层的步长并不影响当前层的感受野

2.特征图的大小

与为输入、出特征图尺寸,为大小,为卷积核大小,为步长nout=nin+2p−ks+1,nout与nin为输入、出特征图尺寸,p为padding大小,k为卷积核大小,s为步长

卷积向下取整,如3.2,向下取整结果为3

2.1 卷积层的参数量

参数量=(filter size * 前一层特征图的通道数 )* 当前层filter数量

2.2 卷积层的计算量

计算量 = 参数量* 输出图的尺度

3.BN(均值,方差,去均值方差,加线性变换)

训练过程中,同一个batch中的样本差别很大,如果直接训练的话,每次送入网络训练的数据分布来回波动,不利于模型收敛,很容易震荡。

BN中则针对不同神经元输入计算均值和方差,同一个batch中的输入拥有相同的均值和方差。

μB←1mΣi=1mxi

σB2←1mΣi=1m(xi−μB)2

xi~←xi−μBσ2B+ϵ

yi←γxi~+β≡BNγ,β(xi)

位置:卷积操作,BN,激活函数

BN层改变数据的分布,避免参数陷入激活函数饱和区。使其数据分布在激活函数的非饱和区。缓解梯度消失

可以增加训练速度,防止过拟合.将每一个batch的均值与方差引入网络中,由于每个batch的均值和方差都不同,相当于在训练过程中增加了随机噪声,起到一定的正则效果.

BN层可看成是增加了线性变换的白化操作(去均值方差)。(白化操作虽能从一定程度上避免了梯度饱和,但也限制了网络中数据的表达能力,浅层学到的参数信息会被白化操作屏蔽掉。所以加线性变换)

  1. 加快网络的训练和收敛的速度
  2. 控制梯度爆炸防止梯度消失
  3. 防止过拟合

3.1 BN训练和测试的区别

对于BN,在训练时,是对每一批的训练数据进行归一化,也即用每一批数据的均值和方差。当一个模型训练完成之后,它的所有参数都确定了,包括均值和方差,gamma和bata。

测试时,比如进行一个样本的预测,就并没有batch的概念,因此,这个时候用的均值和方差是全量训练数据的均值和方差,也就是使用全局统计量来代替批次统计量,这个可以通过移动平均法求得。具体做法是,训练时每个批次都会得到一组(均值、方差),然后对这些数据求数学期望!每轮batch后都会计算,也称为移动平均。

训练时,我们可以对每一批的训练数据进行归一化,计算每一批数据的均值和方差。

但在测试时,比如进行一个样本的预测,就并没有batch的概念,因此,这个时候用的均值和方差是全量训练数据的均值和方差:使用了BN的网络,在训练完成之后,我们会保存全量数据的均值和方差,每个隐层神经元也有对应训练好的Scaling参数和Shift参数。

3.2BN训练时为什么不用全量训练集的均值和方差呢?

因为用全量训练集的均值和方差容易过拟合,对于BN,其实就是对每一批数据进行归一化到一个相同的分布,而每一批数据的均值和方差会有一定的差别,而不是用固定的值,这个差别实际上能够增加模型的鲁棒性,也会在一定程度上减少过拟合。

也正是因此,BN一般要求将训练集完全打乱,并用一个较大的batch值,否则,一个batch的数据无法较好得代表训练集的分布,会影响模型训练的效果。

3.++Dropout的原理以及反向传播过程,用在哪?

解决过拟合问题。dropout 是指在深度网络的训练中, 以一定的概率随机地 “临时丢弃” 一部分神经元节点. 具体来讲, dropout 作用于每份小批量训练数据, 由于其随机丢弃部分神经元的机制, 相当于每次迭代都在训练不同结构的神经网络.

当前Dropout被大量利用于全连接网络,而且一般认为设置为0.5或者0.3,而在卷积网络隐藏层中由于卷积自身的稀疏化以及稀疏化的ReLu函数的大量使用等原因,Dropout策略在卷积网络隐藏层中使用较少。3

3.+Dropout 在训练和测试时都需要嘛?

Dropout 在训练时采用,是为了减少神经元对部分上层神经元的依赖,类似将多个不同网络结构的模型集成起来,减少过拟合的风险。

而在测试时,应该用整个训练好的模型,因此不需要dropout。

4.两个3*3=一个5*5

二者感受野是一样的;同等感受野下,3*3卷积核的参数量更少;两个3*3的卷积核的非线性能力比5*5卷积核强,因为有两个激活函数,提高网络学习能力。

5.空洞(膨胀)卷积

相比于传统卷积,多了空洞数这个参数

在不增加参数量的前提下,增加感受野的同时保持特征图的尺寸不变

优点是在保持同等计算量的情况下可以扩大感受野,缺点是存在网格效应,丢失局部像素信息。

为空洞卷积核大小,空洞数,等效卷积核大小。在计算感受野时,更换为即可k′=k+(k−1)∗(d−1),k为空洞卷积核大小,d空洞数,k′等效卷积核大小。在计算感受野时,更换为k′即可

6.梯度消失,梯度爆炸

7.深度可分离卷积

深度可分离卷积主要分为两个过程,分别为逐通道卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)

卷积核channel=1;输入特征矩阵channel=卷积核个数=输出特征矩阵channel

Depthwise Convolution的一个卷积核负责一个通道,一个通道只被一个卷积核卷积,这个过程产生的feature map通道数和输入的通道数完全一样。

Pointwise Convolution的卷积核的尺寸为 1×1×M,M为上一层的通道数。所以这里的卷积运算会将上一步的map在深度方向上进行加权组合,生成新的Feature map。有几个卷积核就有几个输出Feature map。(卷积核的shape即为:1 x 1 x 输入通道数 x 输出通道数)

为什么depthwise卷积后面还要pointwise卷积?控制输出通道数?

Depthwise Convolution完成后的Feature map数量与输入层的depth相同,但是这种运算对输入层的每个channel独立进行卷积运算后就结束了,没有有效的利用不同map在相同空间位置上的信息因此需要增加另外一步操作来将这些map进行组合生成新的Feature map,即接下来的Pointwise Convolution

8.常规卷积

卷积核channel=输入特征矩阵channel;输出特征矩阵channel=卷积核个数

9.为什么Transformer 需要进行 Multi-head Attention?

可以类比CNN中同时使用多个滤波器的作用,直观上讲,多头的注意力有助于网络捕捉到更丰富的特征/信息。

多头注意力允许模型在不同位置共同关注来自不同表征子空间的信息.

在同一 multi-head attention 层中,输入均为 KQV ,同时进行注意力的计算,彼此之前参数不共享,最终将结果拼接起来,这样可以允许模型在不同的表示子空间里学习到相关的信息

希望每个注意力头,只关注最终输出序列中一个子空间,互相独立。其核心思想在于,抽取到更加丰富的特征信息

10. 1*1卷积的作用?

1)实现跨通道的交互和信息整合;2)实现卷积核通道数的降维和升维;3)实现与全连接层的等价效果;4)实现多个特征图的线性组合;5)不影响卷积层的感受野,增强决策函数的非线性特征表示能力

11.Pooling的作用: 池化层完全没有可变参数

与为输入、出特征图尺寸,为卷积核大小,为步长nout=nin−ks+1,nout与nin为输入、出特征图尺寸,k为卷积核大小,s为步长

池化向上取整,如3.6,向上取整结果为4

1)提高感受野 2)降低计算成本 3)多尺度融合

池化的作用体现在降采样:保留显著特征、降低特征维度,提升网络不变性

12.Pooling反向传播的过程 (需要保证传递的loss(或者梯度)总和不变)

mean pooling:mean pooling的前向传播就是把一个patch中的值求取平均来做pooling,那么反向传播的过程也就是把某个元素的梯度等分为n份分配给前一层,这样就保证池化前后的梯度(残差)之和保持不变.

max pooling:max pooling的前向传播是把patch中最大的值传递给后一层,而其他像素的值直接被舍弃掉。那么反向传播也就是把梯度直接传给前一层某一个像素,而其他像素不接受梯度,也就是为0

13.Batch的大小如何选择,过大的batch和过小的batch分别有什么影响?

Batch选择时尽量采用2的幂次,如8、16、32等

在合理范围内,增大Batch_size的好处

提高了内存利用率以及大矩阵乘法的并行化效率。
减少了跑完一次epoch(全数据集)所需要的迭代次数,加快了对于相同数据量的处理速度。

盲目增大Batch_size的坏处

提高了内存利用率,但是内存容量可能不足。
跑完一次epoch(全数据集)所需的迭代次数减少,要想达到相同的精度,其所花费的时间大大增加,从而对参数的修正也就显得更加缓慢。
Batch_size增大到一定程度,其确定的下降方向已经基本不再变化。

Batch_size过小的影响

训练时不稳定,可能不收敛
精度可能更高。

batch size过小,花费时间多,同时梯度震荡严重,不利于收敛;batch size过大,不同batch的梯度方向没有任何变化,容易陷入局部极小值。

14.卷积的权重共享

在卷积神经网络中,权重共享简单来理解就是,输入一张图片,这张图片用一个卷积核进行卷积操作的时候,图片中的每一个位置都被同一个卷积核进行卷积,所以权重是一样的,也就是共享。

15.上采样

双线性插值(bilinear),反卷积(Transposed Convolution),反池化(Unpooling)

反卷积是一种特殊的正向卷积,先按照一定的比例通过补0来扩大输入图像的尺寸,接着旋转卷积核,再进行正向卷积。
反池化:在下采样的时候记录max的位置,上采样的时候最大值的位置还原,其它位置填0

16.CNN有什么特点和优势

CNN的使用范围是具有局部空间相关性的数据,比如图像、自然语言、语音。

局部连接(稀疏连接):可以提取局部特征
权值共享:减少参数数量,降低训练难度,避免过拟合,提升模型“平移不变性”
降维:通过池化或卷积stride实现
多层次结构:将低层次的局部特征组合成较高层次的特征,不同层级的特征可以对应不同任务

自动进行特征提取,无需手动设计特征

缺点: 池化层会丢失大量信息 ; 自动进行特征提取,也就造成了模型可解释性差,更类似一个黑盒 ;需要大批量数据进行训练

17.初始化方法有哪些?

全0初始化

随机初始化:将参数随机化,不过随机参数服从高斯分布均匀分布.

Xavier初始化:随机初始化没有控制方差,所以对于深层网络而言,随机初始化方法依然可能失效。理想的参数初始化还得控制方差,对www进行一个规范化.“Xavier初始化”维持了输入输出数据分布方差一致性

He初始化:为了解决“Xavier初始化”的缺点。对于非线性激活函数ReLU,“Xavier初始化”方法失效。He初始化基本思想是,当使用ReLU做为激活函数时,Xavier的效果不好,原因在于,当ReLU的输入小于0时,其输出为0,相当于该神经元被关闭了,影响了输出的分布模式。

在Xavier的基础上,假设每层网络有一半的神经元被关闭,于是其分布的方差也会变小。He初始化可以认为是Xavier初始 / 2的结果。

18.FPN的作用

高层特征向低层特征融合,增加低层特征表达能力,提升性能

不同尺度的目标可以分配到不同层预测,达到分而治之

19.BN层合并原理

20.0全连接层/卷积层的特点:

关注全局信息(每个点都和前后层的所有点链接) ;参数量巨大,计算耗时 ;输入维度需要匹配(因为是矩阵运算,维度不一致无法计算)

局部链接:当前层的神经元只和下一层神经元的局部链接(并不是全连接层的全局链接)

权重共享:神经元的参数(如上图的3*3卷积核),在整个特征图上都是共享的,而不是每个滑动窗口都不同

20.卷积神经网络和全连接网络的根本不同之处在哪里?

相同:无论是全连接层,还是卷积层,都是线性层,只能拟合线性函数,所以都需要通过ReLU等引入非线性,以增加模型的表达能力

不同/优点: 需要学习的参数更少,从而降低了过度拟合的可能性,因为该模型不如完全连接的网络复杂;只需要考虑中的上下文/共享信息。这个未来在许多应用中非常重要,例如图像、视频、文本和语音处理/挖掘,因为相邻输入(例如像素、帧、单词等)通常携带相关信息。 空间信息 没有利用像素之间的位置信息;网络层数限制(表现能力有限)。

21.过拟合:

过拟合(over-fitting)其实就是所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在验证数据集以及测试数据集中表现不佳 模型太复杂

过拟合:Dropout(随机失活)、Weight Decay(权重衰减)、减少模型参数、Early Stop、Regularization(正则化,包括L1,L2正则化等)、Augmentation(数据增强)、合成数据、Batch Normalization(批次标准化)、Bagging 和 Boosting(模型融合)等

22.调参

调参的时候也不能无章法的乱调,试试这个参数行不行,那个参数行不行,效率太低,调一次要跑很久才能出结果,也不一定能搜到好结果。

比较科学的方法是GridSearch,即网格搜索,在所有候选的参数选择中,通过循环遍历,尝试每一种可能性,表现最好的参数就是最终的结果。其原理就像是在数组里找最大值。

Ps:为什么叫网格搜索?以有两个参数的模型为例,参数a有3种可能,参数b有4种可能,把所有可能性列出来,可以表示成一个3*4的表格,其中每个cell就是一个网格,循环过程就像是在每个网格里遍历、搜索,所以叫grid search)

另外,调参还需要结合具体任务。

比如,我们想用通用目标检测网络FasterRCNN实现表格单元格的检测,那么就可以针对表格单元格的特点(通常是细长的长条),调整anchor ratio(即宽高比),提高模型效果。

23.BN、LN、IN、GN的区别

batchNorm是在batch上,对NHW做归一化,对小batchsize效果不好;

layerNorm在通道方向上,对CHW归一化,主要对RNN作用明显;

instanceNorm在图像像素上,对HW做归一化,用在风格化迁移;

GroupNorm将channel分组,然后再做归一化;

SwitchableNorm是将BN、LN、IN结合,赋予权重,让网络自己去学习归一化层应该使用什么方法

24.transformer

爱者之贻:计算机视觉面试题-Transformer相关问题总结104 赞同 · 0 评论文章

25.学习率策略

warmup

26.Transformer同LSTM这些有什么区别

transformer和LSTM最大的区别就是LSTM的训练是迭代的,是一个接一下字的来,当前这个字过完LSTM单元,才可以进下一个字,而transformer的训练是并行了,就是所有字是全部同时训练的,这样就大大加快了计算效率,transformer使用了位置嵌入(positional encoding)来理解语言的顺序,使用自注意力机制和全连接层进行计算。

27.Encoder端和Decoder端是如何进行交互的?(在这里可以问一下关于seq2seq的attention知识)

Cross Self-Attention,Decoder提供Q,Encoder提供K,V

转载:神经网络基础理论-相关 - 知乎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/75706.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】特殊类相关设计

前言 在实际的应用场景中,不免会有一些特殊的设计要求存在。在C中,由于三种不同的域,以及地址空间的大小或者申请方式不同,就衍生出了一些特殊的设计类方法。 何为特殊呢?即区别于普通类的设计。 上一篇C笔记传送门~ 【…

[附源码]计算机毕业设计的高校资源共享平台Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

第二证券|抗原检测板块暴涨,又是20CM涨停!

抗原检测概念起飞,组织以为,抗原检测在国内疫情防控中的重要性有望逐渐提高,主张重视板块潜在的市场需求。 抗原检测板块掀涨停潮 9日,抗原检测概念开盘冲高,到午间收盘,天瑞仪器、英诺特20CM涨停&#xf…

期权量化策略:如何利用期权捕捉期现套利机会?

做期权的朋友请看过来!当前与掘金量化合作的特定券商已经能够支持期权数据和交易接口啦~如需开展期权量化,请联系我了解更多详情。 本期我们将和大家分享一个策略,介绍如何利用期权进行自动化套利。 期现套利是指某种期货合约,当…

浅谈linux 内核网络 sk_buff 之克隆与复制

【推荐阅读】 需要多久才能看完linux内核源码? 概述Linux内核驱动之GPIO子系统API接口 一文了解Linux内核的Oops 一篇长文叙述Linux内核虚拟地址空间的基本概括 纯干货,linux内存管理——内存管理架构(建议收藏) 1 skb_clone() 函…

1X的示波器探头为什么会降低示波器带宽

有些无源示波器探头分为1X和10X两个挡位,比如这个探头,这里有个按钮可以选择1X或者10X, 1X表示测量的信号不在探头衰减,同时示波器的通道选项也不用放大,10X表示测量的信号在探头衰减10倍,同时示波器的通道…

Spring Boot的两种配置文件

⭐️前言⭐️ Spring Boot项目中重要的数据都是在配置文件中配置的,下边我们就来学习SpringBoot中的配置文件的具体详情。 🍉博客主页: 🍁【如风暖阳】🍁 🍉精品Java专栏【JavaEE进阶】、【JavaEE初阶】、…

2.5D游戏,角色移动限制方法。不用空气墙。

有一个项目,2.5D视角。角色在设定好的路线上自由移动,不能超出路线。 之前的做法是用空气墙,设定物理碰撞,然后角色移动。 我感觉这种做法性能有点低。手机上体验平均帧时是4ms 于是想用空间换时间,将可能的运算进行预…

chrome 如何下载网站在线预览PDF文件,保存到本地

爱学习的小伙伴肯定遇到过那种只能在线看,但并不提供下载的的PDF文件! 但有时候想保存到本地有很费劲。今天准备了一个很简单的方法 以这个在线pdf为例 在线PDF文件 该如何把这个PDF保存到本地呢~ 方法 1.以chrome浏览器为例,打开准备好的示…

iOS运行时Runtime在OC中的应用场景

本篇将会总结Rutime的具体应用实例,结合其动态特性,Runtime在开发中的应用大致分为以下几个方面: 一、动态方法交换:Method Swizzling 实现动态方法交换(Method Swizzling )是Runtime中最具盛名的应用场景,其原理是&a…

SpringBoot2.0中MVC和WebFlux控制层Controller对比

本篇文章是SpringBoot2.0关于Controller控制层的对比,相信很多开发最好奇的也是这块。那么小编就带着大家一起先来看一下尝尝鲜,本篇文章比较短小精悍,只讲如何使用,至于原理剖析,后面会讲。阅读时间大概3分钟,现在开始! 文章目录一、演示目录结构二、演示启动类定义…

昨天阅读量900多

今日阅读量还不错的样子,也有900多了,

【C语言】函数递归详解

🚀write in front🚀 📝个人主页:认真写博客的夏目浅石. 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​ 📣系列专栏:鹏哥带我学c带我飞 💬总结:希望你看…

解析davinci快捷键配置文件

davinci resolve 是一款非线性影片剪辑软件,mac 下快捷键配置文件位于: lucaslucasdeMacBook-Pro DaVinci Resolve % pwd /Users/lucas/Library/Preferences/Blackmagic Design/DaVinci Resolve lucaslucasdeMacBook-Pro DaVinci Resolve % ll | grep k…

“滴灌”代替“漫灌”:“全链路增长”的百度联盟解

作者 | 曾响铃 文 | 响铃说 2021年时,在平台上的日均收益才不足1000元,日活不足1万; 一年时间不到,现在矩阵产品在平台的日均收入已经翻了90倍,日活翻了25倍。 这是一家白牌资讯媒体“早闻天下事”加入百度联盟后发…

跬智信息(Kyligence)荣获浦东新区人工智能创新应用大赛一等奖

近日,2022 浦东新区人工智能创新应用大赛圆满闭幕。经过层层筛选和考核,跬智信息(Kyligence)从 113 支团队中脱颖而出,参赛项目“Byzer 面向 DataAI 的低代码开源编程语言”在技术创新性、创意性以及项目的可落地性、可…

spi访问fpga

SPI 外设的三线/四线模式及时钟极性相位可以配置,支持主机/从机、全双工/半双工,传送数据格式可灵活配置,并且有发送空接收满 SPI 错误等中断事件功能配合应用使用,更多功能详见本系列芯片手册的相关章节。 SPI四线模式框图&…

轻松玩转树莓派Pico之五、FreeRTOS体验

树莓派Pico开发板片上主芯片为RP2040单片机,双核 Arm Cortex-M0 处理器,工作主频为133MHz,264K片上SRAM,和2MByteFlash。 这么大的RAM和Flash资源,不跑一下RTOS操作系统实在有些可惜,这次就先体验一下Fre…

基于新型战争策略优化算法的光伏模型优化(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🎉作者研究:🏅🏅🏅本科计算机专业,研究生电气学硕…

vscode通过插件一键运行 c++单元测试

gtest使用初探 简介: 本文在 ubuntu18.04 上实现了 googletest 的全局安装,并在一个 demo项目中演示了使用 cmake 引入了该库,实现了在命令行中运行 c 单元测试,包括运行单个 TEST 函数。另外通过 vscode 的插件 C TestMate, 实现…