批次标准化Batch Normalization

news2024/11/22 21:32:27

批次标准化Batch Normalization

目录

  • 批次标准化Batch Normalization
    • 为什么需要批次标准化
      • 产生上述变化趋势不匹配的原因
    • 处理方法
      • 处理方法的优化
    • Batch Normalization的引出
    • Testing时的相应处理

批次标准化Batch Normalization

第五节 2021 - 类神经网络训练不起来怎么办 (五) 批次标准化 (Batch Normalization)

📌Batch Normalization可以直接改变error surface的崎岖

为什么需要批次标准化

因为在训练的过程中,会存在着损失函数对多个weight权重模型参数的偏导变化趋势不匹配(即有smooth光滑的也有steep陡峭的),如下图:

在这里插入图片描述

产生上述变化趋势不匹配的原因

以下面简单的模型来解释上述变化趋势的不匹配 该模型只有两个特征值输入,也就只对应两个权重参数;
当w1产生变化时,若输入的特征值的变化阶层很小比如1到2这种,那么w1的变化就不会对loss产生较大的影响,从而对应上图中smooth的曲线
当w2产生变化时,若输入的特征值的变化阶层很大比如1到100到200这种,那么w2的变化就会对loss产生较大的影响,从而对应上图的steep的曲线

在这里插入图片描述

📌为了消除这种模型参数偏导变化趋势不同的error surface造成的training的困难,需要对输入的每个样本的特征值进行处理,使得它们的变化阶层相近,这种技巧就叫做Feature Normalization

处理方法

对每个样本的特征向量进行标准化,其公式如下:

x i ′ = x i − μ σ x^{i'}= \frac {x^i-\mu} {\sigma} xi=σxiμ

这里的μ即是所有样本的特征向量作算术和(向量相应位置上的数值相加)再取平均;∑即是进行均方差的求解,即:

μ = 1 n ∑ x i , σ = 1 n ( x i − μ ) 2 \mu=\frac {1} {n} \sum x^i,\sigma=\sqrt{\frac {1} {n}(x^i-\mu)^2} μ=n1xi,σ=n1(xiμ)2

📌经过标准化的处理,所有样本的特征向量的平均值即为0,方差即为1

在这里插入图片描述

📌不仅刚开始的输入值需要做Normalization每个之前神经元的输出,均需要在下一个神经元的激活函数之前进行Normalization处理(一般是激活函数前后进行标准化差异不大,但由于sigmoid的曲线在0附近偏导最大,若在sigmoid之后再normalization会导致gradient值偏大),如下图:

在这里插入图片描述

上图即是一个大的分类网络,网络在原来的基础上多了均值和均方差的计算即对输入值的标准化。
且本来特征值的输入改变并不会影响其他z的改变,但是因为均值和均方差的改变使得其他z也发生了改变

处理方法的优化

最后求的所有样本的均值为0,方差为1。但有时我们并不想要这样分布的特征向量,所以将特征向量标准化的式子更改为下图:其中γ与β均为模型参数,一般开始训练时γ为1向量,β为0向量

在这里插入图片描述

这样做的目的是在训练刚开始时将特征向量的分布近似相同,从而减轻训练难度,更快的进行参数的更新,之后再在训练的过程中逐渐由机器改变γ与β的值

Batch Normalization的引出

因为一次性对所有样本计算均值和均方差对GPU或CPU的要求较高,所以为了减少硬件需求,我们引入了Batch的概念。
故只需要对Batch内的样本进行求均值和均方差然后对Batch内样本的特征向量进行标准化,从而进行参数的更新(此时Batch不能太小也不能太大
Batch太大太小对训练的影响见上述标题批次Batch)

Testing时的相应处理

因为Batch
Normalization是对一定量的样本进行一次训练。而在测试时我们一般是有了一个样本就对模型输入特征值进行预测,此时如果再求μ和σ即会导致标准化后为0
因此Testing时的μ和σ有专门的计算方法Moving Average,如下:

μ t = p × μ t ′ + ( 1 − p ) × μ i , μ i 为每一次 b a t c h 的均值 , μ t ′ 即为上次的 μ t . 按照该式递归求解 μ t \mu_{t}=p \times \mu_{t'}+(1-p) \times \mu ^i,\mu^i为每一次batch的均值,\mu_{t'}即为上次的\mu_t.按照该式递归求解\mu_t μt=p×μt+(1p)×μi,μi为每一次batch的均值,μt即为上次的μt.按照该式递归求解μt

σ t = p × σ t ′ + ( 1 − p ) × σ i , σ i 为每一次 b a t c h 的均方差 , σ t ′ 即为上次的 σ t . 按照该式递归求解 σ t \sigma_{t}=p \times \sigma_{t'}+(1-p) \times \sigma ^i,\sigma^i为每一次batch的均方差,\sigma_{t'}即为上次的\sigma_t.按照该式递归求解\sigma_t σt=p×σt+(1p)×σi,σi为每一次batch的均方差,σt即为上次的σt.按照该式递归求解σt

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

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

相关文章

从【卡内基梅隆大学机器人概论课】认识机器人学科需要哪些技能栈

闲来无事,找到了卡内基梅隆大学机器人研究所,看了下他们机器人的教育,不得不感慨相比我们学校先进了不知多少,是真真切切让同学们去了解机器人的方方面面,下面摘自它们的概论作业。 作业0 作业1 作业2 作业3 作业4 作…

LeetCode 79 单词搜索 | 解题思路分享

原题链接:79. 单词搜索 题目难度:中等 题目描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的…

css03笔记

目录 css三大特性 优先级 权重叠加计算 chrome调试工具 盒子模型 1.1 盒子模型的介绍 2.1内容的宽度和高度 3.1边框(border) 3.2边框-单方向设置 3.3边框-单个属性 综合案例一(新浪导航) 4.1 内边距(paddi…

5.11回溯法--电路板排列问题--排列树

问题描述 将n块电路板以最佳排列插入带有n个插槽的机箱中,要求对于给定的电路板连接块,确定最佳排列,使其具有最小的密度。设x[ ] 表示n块电路板的一个排列,x[ i ]表示在机箱的第 i 个插槽中插入电路板x[ i ],x确定的电…

尚硅谷ES6李强笔记

1.课程介绍 1.es是什么 2.新特性的优点 3.学习课程必备知识背景 2.相关名词介绍 3. let变量声明以及声明特性 3.1变量声明方式 //普通声明 let a;//一次性声明多个变量 let a,b,c;//声明并且初始化 let a 100;//一次性声明多个并且初始化 let a2,b1,ci love you;3.2不允许重…

打工人必学的法律知识(一)——《中华人民共和国劳动合同法》必知必会

目录 一、劳动合同无效或者部分无效 二、竞业限制 三、劳动合同的履行和变更 四、劳动合同的解除和终止 一、劳动合同无效或者部分无效 第二十六条 下列劳动合同无效或者部分无效:(一)以欺诈、胁迫的手段或者乘人之危,使对方…

使用FFmpeg命令处理音视频

文章目录前言一、ffprobe相关命令1.使用ffprobe查看音频文件的信息2.使用ffprobe查看视频文件的信息二、ffplay相关命令1.基本的ffplay命令2.音视频同步命令三、ffmpeg相关命令1.ffmpeg通用参数2.ffmpeg视频参数3.ffmpeg音频参数4.ffmpeg示例总结前言 FFmpeg是一套可以用来记录…

【C语言】字符函数,字符串函数,内存函数及其模拟实现

文章目录求字符串长度strlen长度不受限制的字符串函数strcpystrcatstrcmp长度受限制的字符串函数strncpystrncatstrncmp字符串查找函数strstrstrtokstrerror字符函数字符分类函数字符转换函数内存操作函数memcpymemmovememsetmemcmp求字符串长度 strlen 函数功能 求字符串长…

【机器学习之模型融合】Voting投票法简单实践

目录 前言💜 1、使用sklearn实现投票法💔 1.1、导入工具库,准备数据💕 1.2、定义交叉验证评估函数💖 1.3、建立基于交叉验证的benchmark、做模型选择🌟 1.4、构建多组分类器、进行融合💥…

单线程的Node.js能开发高并发服务器程序吗?

文章目录前言Nodejs的事件驱动机制EventLoop vs NSRunLoopNSRunLoopios next runloop异步/事件循坏机制的那些坑批量迁移数据原子性参考文献前言 这篇文章还是从一个在写Node.js程序中遇到的问题说起。本周在做数据库迁移的时候,写了下面一段代码,目的是…

代数与逻辑:作业四 神经网络

代数与逻辑:作业四 神经网络 文章目录代数与逻辑:作业四 神经网络一、作业要求二、简述神经网络模型三、编程实现感知机模型与二隐层神经网络1、感知机模型2、二隐层神经网络四、选择公开数据集,测试感知机模型与二隐层神经网络性能一、作业要…

如何高效学习?一年学完麻省理工4年计算机课程

斯科特.杨用用10天拿下线性代数,用1年时间学完麻省理工大学4年的计算机课程,他是如何做到的?他在这本书《如何高效学习》中做了具体阐述。 斯科特.杨很早就发现,在美国有一半的学生在死记硬背,这些学生并不知道使用整体…

动手学区块链学习笔记(二):区块链以及工作量证明算法

引言 紧接上文,在介绍完区块链中的加密解密以及公钥私钥等算法后,本篇开始正式进入区块链概念与一个简单区块链系统的实现过程介绍。 区块链技术介绍 什么是区块链? 区块链,就是一个又一个区块组成的链条。每一个区块中保存了一…

制造企业数据/经营分析框架

背景 随着大数据技术发展以及数字化转型概念的普及,传统企业特别是制造业,也开始投入人力、资金,建立自己的数据分析团队,期望通过数据分析赋能企业的发展/转型。尽管,国内华为、美的、海尔、三一、徐工等制造业龙头企…

挡不住,逃不过,还是阳了

自从放开后,身边的🐏陆陆续续多了起来。现在都不敢在食堂吃饭了,每次都是打包到工位吃,上班时也是都戴着口罩。每天回家后都是一顿扫射,用医用酒精做全身消毒。但是,还是没挡住,该来的还是来了。…

Leetcode:450. 删除二叉搜索树中的节点(C++)

目录 问题描述: 实现代码与解析: 递归: 原理思路: 含有内存释放版: 问题描述: 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜…

Day860.高性能数据库连接池HiKariCP -Java 并发编程实战

高性能数据库连接池HiKariCP Hi,我是阿昌,今天学习记录的是关于高性能数据库连接池HiKariCP的内容。 实际工作中,总会难免和数据库打交道; 只要和数据库打交道,就免不了使用数据库连接池。 业界知名的数据库连接池…

2023/1/15 JS-作用域与作用域链

1 作用域 理解 - 就是一块"地盘", 一个代码段所在的区域,它是静态的(相对于上下文对象), 在编写代码时就确定了 分类: 全局作用域函数作用域 没有块作用域(ES6有了) -->(java语言也有) if (true) {var a 3}console.log(a); // 3作用&am…

用互联网思维做产品,做超出用户预期的产品

做出超出用户预期的产品,做出让用户惊喜和兴奋的产品。超越用户期望极致体验极致服务极致产品(极致产品功能情感温度)关心、关注、尊重用户理解用户理解人性用户参与。只有深刻了解,深刻理解用户,深刻理解人性,才能做出好的产品。…

Maven安装教程讲解

目录一、下载安装JDK二、下载 Maven三、配置 Maven 环境变量四、配置 Maven 仓库地址五、配置 Maven 镜像六、配置 Maven JDK七、IDE配置 Maven八、IDE新建 Maven 项目九、IDE执行 Maven 命令一、下载安装JDK 教程:https://blog.csdn.net/weixin_43888891/article/…