BatchNorm原理解析

这篇具有很好参考价值的文章主要介绍了BatchNorm原理解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

BatchNorm要解决的问题

我们都知道,深度学习的话尤其是在CV中,都需要对数据进行归一化处理,因为深度学习网络主要就是为了学习训练数据的分布,并在测试集中得到更好的泛化效果。但是我们每一个batch输入的数据都具有不同的分布,显然会给网络训练带来困难。此外,数据经过一层层的网络之后,会导致数据的分布也在不断地发生变化,这会给下一层网络训练带来困难。

Internal Covariate Shift

专业术语,google小组在论文Batch Norm中提出,主要描述为:训练深度网络的时候经常发生训练困难的问题,因为每一次参数迭代更新后,上一层网络的输出数据经过这一层网络计算后,数据分布都会发生变化,为下一层网络的学习带来困难(神经网络本来就是要学习数据的分布,要是分布一直在变就很难学习)

Batch norm之前测策略就是小心的初始化参数,对数据做白话处理,但显然治标不治本。

Covariate shift

Covariate shift 和 Internal covariate shift 具有相似性,但并不是一个东西,前者发正在神经网络内部,所以是Internal,后者发生在输入数据上。

Covariate shift描述的是由于训练数据和测试数据存在分布的差异性,给网络的泛化性和训练速度带来了影响。我们经常使用的方法就是做归一化或者白化处理

BatchNorm原理解读

为了减小Internal Covariate Shift,需要对每一层的数据进行处理。如果直接对每一层后进行归一化,会将每一层的输出数据都归一化到0均值和1方差,满足正态分布,但会导致每一层数据都是正态分布,导致其完全学不到输入数据的特征。

之所以称之为batchnorm是因为所norm的数据是一个batch的。

batchnorm的步骤如下:

1.先求出各个维度的均值和方差,接下来对x做归一化处理。

2.归一化处理之后,为每一个维度引入两个变量,放缩变量和偏移变量。 yi = λ xi + β

特殊请款下,如果λ和β分别等于此维度上一个batch的标准差和均值,那么xi将被还原为归一化之前的xi,即放缩平移到了归一化之前的分布,相当于batchnorm没有起到作用。因此,通过对归一化之后的数据进行放缩和偏移操作即可保证每一次数据经过归一化后还保留有学习来的特征,同时又能完成归一化这个操作。

训练的时候是这样的,但是测试的过程中,批次大小可能发生变化,会造成需要使用不同的λ和β。极端情况,batchsize=1的时候,无法计算批量的均值和方差。因此在训练的过程中保存下这两个值。测试的时候直接拿过用即可,不需要再次计算均值和方差。文章来源地址https://www.toymoban.com/news/detail-639891.html

到了这里,关于BatchNorm原理解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PyTorch BatchNorm2d详解

    通常和卷积层,激活函数一起使用

    2024年02月15日
    浏览(35)
  • 【CNN记录】pytorch中BatchNorm2d

    torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True, device=None, dtype=None) 功能 :对输入的四维数组进行批量标准化处理(归一化) 计算公式如下: 对于所有的batch中样本的同一个channel的数据元素进行标准化处理,即如果有C个通道,无论batch中有多少个样

    2024年02月16日
    浏览(80)
  • 机器学习中高维组合特征的处理方法+推荐系统使用矩阵分解为用户推荐的原理解析,《百面机器学习》学习笔记

    为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征进行组合,构成高阶组合特征。 假设有A B两组特征,C为受到A B两种特征影响的因素,且对特征A来说,其有 A i , i ∈ [ 0 , 1 ] {A^i,iin [0,1]} A i , i ∈ [ 0 , 1 ] 两种特征取值。同时,对于特征B来说,其有 B j , j ∈

    2024年02月05日
    浏览(46)
  • 机器学习 & 深度学习编程笔记

    如果不加噪音就成了正常的线性函数了,所以要加噪音。 torch.normal(0, 0.01, y.shape)是一个用于生成服从正态分布的张量的函数。其中,0代表均值,0.01代表标准差,y.shape表示生成的张量的形状与y相同。具体而言,该函数会生成一个张量,其元素值是从均值为0、标准差为0.01的正

    2024年02月16日
    浏览(102)
  • 李宏毅《机器学习 深度学习》简要笔记(一)

    一、线性回归中的模型选择 上图所示: 五个模型,一个比一个复杂,其中所包含的function就越多,这样就有更大几率找到一个合适的参数集来更好的拟合训练集。所以,随着模型的复杂度提高,train error呈下降趋势。 上图所示: 右上角的表格中分别体现了在train和test中的损

    2024年01月25日
    浏览(43)
  • 大数据机器学习深度解读ROC曲线:技术解析与实战应用

    机器学习和数据科学在解决复杂问题时,经常需要评估模型的性能。其中,ROC(Receiver Operating Characteristic)曲线是一种非常有用的工具,被广泛应用于分类问题中。该工具不仅在医学检测、信号处理中有着悠久的历史,而且在近年来的机器学习应用中也显得尤为关键。 ROC曲线

    2024年02月04日
    浏览(40)
  • 机器学习|DBSCAN 算法的数学原理及代码解析

    聚类是机器学习领域中一项重要的任务,它可以将数据集中相似的样本归为一类。 DBSCAN(Density-Based Spatial Clustering of Applications with Noise) 是一种是一种经典的密度聚类算法,它能够有效地发现任意形状的聚类簇,并且可以识别出噪声点。在本文中,我们将深入探讨 DBSCAN 算法

    2024年02月11日
    浏览(49)
  • 机器学习笔记 - 什么是多模态深度学习?

            人类使用五种感官来体验和解释周围的世界。我们的五种感官从五种不同的来源和五种不同的方式捕获信息。模态是指某事发生、经历或捕捉的方式。         人工智能正在寻求模仿人类大脑,终究是跳不出这具躯壳的限制。         人脑由可以同时处理

    2024年02月09日
    浏览(41)
  • 《零基础实践深度学习》(第2版)学习笔记,(二)机器学习和深度学习综述

    **人工智能(Artificial Intelligence,AI)**是研发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 **机器学习(Machine Learning,ML)**是当前比较有效的一种实现人工智能的方式。 **深度学习(Deep Learning,DL)**是机器学习算法中最热门的一个分

    2024年02月13日
    浏览(40)
  • 机器学习笔记 - 基于C++的​​深度学习 一、向量运算

            由于它们的可扩展性和灵活性,现在很少找到不使用TensorFlow、PyTorch、Paddle......(这里的省略号是指各种成熟的深度学习库)的项目。          花时间从头开始编写机器学习算法(即在没有任何基础框架的情况下)似乎有些重复造轮子的感觉。然而,事实并非

    2024年02月13日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包