当前位置: 首页 > article >正文

BatchNormalization 介绍

1 为何要用BatchNormalization

为了让深层网络更容易训练,有两种方法:

        使用更好的优化器:如 SDG+Momentun等;

        改变网络结构,比如加入BN层,处理网络数据,让网络数据服从标准的高斯分布,均值为0,方差为1的分布;

2 使用BatchNormalization的优点

        在每次NN的输入时,都要进行数据的预处理,一般是让数据是0均值和单位方差的,这样对于训练是有好处的;

        但是当数据走过几层后,基本就不可能保持这个特性了,BN层要做的事情是在每一层的开始,加上这个操作,但是有的数据可能会因此丢失一些信息,所以要加上beta和gama来恢复原始数据,这里的beta和gamma是可学习的;

3 BatchNormalization处理数据过程

(1)求均值

        mini-batch: B=\{x_1,...,x_m\};

        \mu _B = \frac{1}{m}\sum_{i=1}^{m}x_i

(2)求方差

        \sigma _B^2 = \frac{1}{m}\sum_{i=1}^{m}(x_i - \mu _B)^2

(3)归一化

        \widehat{x_i} = \frac{x_i - \mu _B}{\sqrt{\sigma _B^2 + \epsilon }}

(4)计算输出(scale and shift)

        y_i = \gamma \widehat{x_i} + \beta

        \gamma\beta是两个关键超参数,对归一化后的分母进行缩放和平移,通过网络自己学习平移和缩放保留一定的特征;

方差和均值是可以动态调整的,可以通过momentum来调整(加入基于momentum的指数衰减,进行动态调整)


http://www.kler.cn/a/15057.html

相关文章:

  • Office-Tab-for-Mac Office 窗口标签化,Office 多文件标签化管理
  • NLP论文速读(EMNLP 2024)|动态奖励与提示优化来帮助语言模型的进行自我对齐
  • 不完全微分PID控制算法
  • 智谱AI清影升级:引领AI视频进入音效新时代
  • Python 人脸检测:使用 Dlib 和 OpenCV
  • 【MySql】实验十六 综合练习:图书管理系统数据库结构
  • 800字带你弄懂Http请求和响应
  • 机器人学一些知识
  • 基于趋动云的 Stable Diffusion Webui 环境搭建
  • 低调且强大——JNPF低代码平台
  • 微服务监控系统选型:Zabbix、Open-Falcon、Prometheus
  • 【LeetCode: 1143. 最长公共子序列 | 暴力递归=>记忆化搜索=>动态规划】
  • SpringBoot启动时自动创建数据库表
  • [Java List类型和Map类型想换转换案例]
  • 2023年产业基金研究报告
  • 【回眸】ChatGPT Plus(GPT4体验卡)
  • L1-6 剪切粘贴
  • 写一个加载远程js的函数,function loadJSFn(sucCb,failCb){}, 要考虑到低端浏览器的兼容性;
  • 如何基于vue实现倒计时效果
  • 字节的面试,你能扛住几道?
  • NetSuite 负库存控制功能包
  • Go分布式爬虫笔记(二十)
  • promise的作用
  • huggingface下载的.arrow数据集读取与使用说明
  • 初学者入门C语言指针与链表
  • CVE漏洞复现-CVE-2019-11043-PHP-FPM 远程代码执行漏洞