• Batchnormalization

批量标准化

深度学习有个本质性的问题:随着网络深度加深,训练起来困难,本质是反向传播的时候梯度消失。

比如我们看sigmoid函数

        
​​​图源百度百科

显而易见的就是在大于4的时候,函数已经变化非常平缓了,也就是再训练下去就要梯度消失了。在训练的时候,非线性映射后,特征数据会逐渐向激活函数的输出区间的上下两端靠近,此时BN就是对这些逐渐向饱和区冲过去的数据拉回来。拉回到均值为0,方差为1的正态分布。使得输入神经元的数据可以进入到激活函数比较敏感的区域。

那BN又要怎么做呢

步骤如下

先求这一批数据的均值,然后求出方差,将其标准化,最后再做一个扩展和平移。扩展和平移的参数\gamma 和 \beta 是网络学习得到的。

我一直不是很明白这个\gamma 和 \beta 的作用。

有人这样说:会与其他待训练参数一同被训练化,使标准正态分布后的特征数据通过缩放因子和偏移因子,优化了特征数据分布的宽窄和偏移量。保证了网络的非线性表达力(如果不加入这两个参数,相当于这一层所学习的特征分布被搞坏了)。

也有人这样说:scale、shift是两个独立的参数,也即和数据是没有依赖关系的,它们完全有可能将BN的作用给抵消掉,然而这恰好也是这个方法的优势,可以根据具体情况由网络自身在训练过程中来决定需不需要BN。

还有人这样说:原来这是为了让神经网络自己去学着使用和修改这个扩展参数 gamma, 和 平移参数 β, 这样神经网络就能自己慢慢琢磨出前面的 normalization 操作到底有没有起到优化的作用, 如果没有起到作用, 我就使用 gamma 和 beta来抵消一些 normalization 的操作。

可能最后一个好理解一点。但还是有点模糊。

接下来 面试时候可能会问到关于BN的哪些问题呢?

BN训练和测试时的参数是一样的嘛?

对于BN,在训练时,是对每一批的训练数据进行归一化,也即用每一批数据的均值和方差。而在测试时,比如进行一个样本的预测,就并没有batch的概念,因此,这个时候用的均值和方差是全量训练数据的均值和方差,这个可以通过移动平均法求得。当一个模型训练完成之后,它的所有参数都确定了,包括均值和方差。

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

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

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

BN的偏移量和缩放量怎么算?有什么用?

怎么算?没找到

有什么用,上面有提到。再补充一点点...

补偿网络的非线性表达能力。

为什么BN层一般用在线性层和卷积层后面,而不是放在非线性单元后

因为非线性单元的输出分布形状会在训练过程中变化,归一化无法消除他的方差偏移,相反的,全连接和卷积层的输出一般是一个对称,非稀疏的一个分布,更加类似高斯分布,对他们进行归一化会产生更加稳定的分布。其实想想也是的,像relu这样的激活函数,如果你输入的数据是一个高斯分布,经过他变换出来的数据能是一个什么形状?小于0的被抑制了,也就是分布小于0的部分直接变成0了,这样不是很高斯了。

BN的计算量

FLOPs = 2 * C * W * H

C是通道数 W H 是输入特征图宽和高的分辨率

实际应用中往往将BatchNormalization层合并到卷积层,而不单独考虑其计算量。

BN的参数量

一个BatchNormalization层涉及到的参数包含在四个矩阵(向量)中,分别是gamma, beta, moving_mean, moving_variance,这四个矩阵的元素数都是相同的,即等于输入个数(或者输入通道数),其中一半是可训练的,而另一半是不需要训练的。

BN的反向传播公式推导(我感觉我这缺失一点顺序逻辑)

修正带是给我涂的烂烂的

[CV]一些关于计算机视觉面试题的整理相关推荐

  1. 转载:计算机视觉任务(Computer Vision)整理

    首发于 NLP迷路CV 写文章 计算机视觉任务(Computer Vision)整理 Fire-燚 ​ 关注他 32 人 赞同了该文章 计算机视觉是关于研究机器视觉能力的学科,或者说是使机器能对环境和 ...

  2. 计算机视觉笔记及资料整理(含图像分割、目标检测)

    前言 1.简单聊聊: 在我脑海中我能通过这些年听到的技术名词来感受到技术的更新及趋势,这种技术发展有时候我觉得连关注的脚步都赶不上.简单回顾看看,从我能听到的技术名词来感受,最开始耳闻比较多「云计算」 ...

  3. 计算机视觉笔记及资料整理(含图像分割、目标检测小方向学习)

    前言 1.简单聊聊: 在我脑海中我能通过这些年听到的技术名词来感受到技术的更新及趋势,这种技术发展有时候我觉得连关注的脚步都赶不上.简单回顾看看,从我能听到的技术名词来感受,最开始耳闻比较多「云计算」 ...

  4. 计算机组成原理试题 t4,计算机组成原理(四版)本科生试题库整理附答案

    <计算机组成原理(四版)本科生试题库整理附答案>由会员分享,可在线阅读,更多相关<计算机组成原理(四版)本科生试题库整理附答案(5页珍藏版)>请在人人文库网上搜索. 1.29 ...

  5. Java 面试/笔试题神整理 [Java web and android]

    Java 面试/笔试题神整理 一.Java web 相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并 ...

  6. 2023年Java面试题最新整理,附白话答案

    2023年Java开发面试题最新整理,附白话答案 写在前面:本篇面试题整理是我在北京地区进行面试整理得出,常见的基本都在下面了.基本都是可以直接在面试时用白话回答的答案总结,面试时照此回答即可,有其他 ...

  7. 2021/06/29计算机视觉期末复习笔记整理

    计算机视觉期末复习笔记整理 引言 我的复习参考 期末考试考题回忆 PPT对应中文笔记整理 参考的几篇博客的笔记 引言 刚结束可能是我学生时代最后一场考试了,orz热乎着,记录一下. 这门课是学校新开的 ...

  8. 应聘用C语言面试题(整理ing)

    应聘用C语言面试题(整理ing) for(int i=1; i<6; i++){ for(int j=1; j<6; j++){ if(i==j){ System.out.println( ...

  9. 前端面试题全面整理-带解析

    本篇文章整理总结这些前端面试题,涵盖面很广,并且面的都是知名大厂,所以这些题还是很有代表性的,都掌握以后一面基础面应该没什么问题,二面也能应付大半,奉上: css相关 1. 万能居中 1.margin ...

最新文章

  1. Java Code Convention Rules
  2. [数字图像处理]图像去噪初步(2)--非线性滤波器
  3. Gallery的使用(一)
  4. JavaScript PHP模仿C#中string.format效果
  5. ServletJSP学习笔记--导航
  6. java小编程----盛最多水的容器
  7. clickhouse安装_初识ClickHouse——安装与入门
  8. CSDN 编程挑战——《coder的计算器》
  9. centos7 网卡配置vlan_CentOS7网卡创建vlan步骤
  10. android学习笔记---53_采用网页设计软件界面,以及使用android系统内置的浏览器,利用js调用java方法
  11. 【致青春】岛风青春,井空年华
  12. 修改bounds属性后的效果
  13. 小程序转uni-app——动态转换样式
  14. 学术之声 | 专访北航教授洪晟:区块链应该管也能够管,而且要学会管
  15. 长发变短发,卷发变直发,坚持每天梳头
  16. AD10--添加泪滴
  17. Java开发插件及工具
  18. dnf最新地图编号2020_DNF100级即将迎来新城镇 地图小贴士
  19. 北美电影票房Top10-2020年1月3日:《星战9》帽子戏法
  20. 工业智能网关BL110应用之60:如何实现智能楼宇控制BACnet 接入阿里云平台

热门文章

  1. php菜鸟之路 6 php与html的关系
  2. Kali简单DDos攻击
  3. 成为运营大咖的四个学习面
  4. 【Docker系列】容器环境配置
  5. C语言中的i++和++i的区别与联系
  6. vue 安装cube-ui
  7. 约瑟夫环c语言循环指针,约瑟夫环(c语言)(双循环、单循环)
  8. 这条街MV高清视频,熟悉的旋律很好听
  9. csv、xml和json
  10. Oracle单值函数,数据库对日期的操作,日期的转换