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

神经网络系列---归一化


文章目录

    • 归一化
      • 批量归一化
        • 预测阶段
      • 测试阶段
        • γ和β(注意)
        • 举例
      • 层归一化
        • 前向传播
        • 反向传播


归一化

批量归一化

在这里插入图片描述在这里插入图片描述在这里插入图片描述

(Batch Normalization)在训练过程中的数学公式可以概括如下:

给定一个小批量数据 B = { x 1 , x 2 , … , x m } B = \{x_1, x_2, \ldots, x_m\} B={x1,x2,,xm},其中 m m m 是批次的大小。

  1. 计算均值:计算小批量数据的均值。
    μ B = 1 m ∑ i = 1 m x i \mu_B = \frac{1}{m} \sum_{i=1}^{m} x_i μB=m1i=1mxi

  2. 计算方差:计算小批量数据的方差。
    σ B 2 = 1 m ∑ i = 1 m ( x i − μ B ) 2 \sigma_B^2 = \frac{1}{m} \sum_{i=1}^{m} (x_i - \mu_B)^2 σB2=m1i=1m(xiμB)2

  3. 归一化:使用均值和方差对小批量数据进行标准化。
    x ^ i = x i − μ B σ B 2 + ϵ \hat{x}_i = \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} x^i=σB2+ϵ xiμB
    其中, ϵ \epsilon ϵ 是一个小的常数,用于确保分母不为零。

  4. 缩放和平移:使用可学习的参数伽玛 γ \gamma γ和贝塔 β \beta β来缩放和平移标准化的数据。
    y i = γ x ^ i + β y_i = \gamma \hat{x}_i + \beta yi=γx^i+β
    其中, γ \gamma γ β \beta β 是可学习的参数,用于调整归一化的缩放和平移。

这样做可以让模型有更大的灵活性,因为它可以学习到每个特征或通道应该如何被归一化。

预测阶段

在推断阶段,使用整个训练集的均值和方差(通常是移动平均)来替代小批量的均值和方差。这确保了网络在推断时的行为与训练时的行为更加一致。

在批量归一化中,移动平均均值和方差是在训练阶段计算并用于预测阶段的归一化过程。移动平均的计算通常使用指数移动平均(EMA)或其他平滑方法。下面是计算移动平均均值和方差的一般过程:

  1. 初始化:在训练开始时,初始化移动平均均值和方差为零或其他初始值。

  2. 计算当前批次的均值和方差:对于每个训练批次,计算该批次数据的均值和方差。

  3. 更新移动平均:使用当前批次的均值和方差以及之前的移动平均值来更新移动平均。通常,这可以通过下面的公式完成:

    移动平均均值 = m o m e n t u m × 移动平均均值 + ( 1 − m o m e n t u m ) × 当前批次均值 \text{移动平均均值} = momentum \times \text{移动平均均值} + (1 - momentum) \times \text{当前批次均值} 移动平均均值=momentum×移动平均均值+(1momentum)×当前批次均值
    移动平均方差 = m o m e n t u m × 移动平均方差 + ( 1 − m o m e n t u m ) × 当前批次方差 \text{移动平均方差} = momentum \times \text{移动平均方差} + (1 - momentum) \times \text{当前批次方差} 移动平均方差=momentum×移动平均方差+(1momentum)×当前批次方差

    其中, m o m e n t u m momentum momentum 是一个超参数,通常在 0 到 1 之间,通常设置为接近 1 的值(例如 0.9),决定了移动平均的平滑程度。较小的 m o m e n t u m momentum momentum 值会使移动平均更关注最近的批次,而较大的值则会使其更平滑。

  4. 使用当前mini-batch的均值和方差对数据进行归一化,并通过可学习的参数 γ γ γ β β β 进行缩放和偏移。

BN ( x i ) = γ ( x i − μ B σ B 2 + ϵ ) + β \text{BN}(x_i) = \gamma \left( \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} \right) + \beta BN(xi)=γ(σB2+ϵ xiμB)+β

测试阶段

在测试阶段,使用训练期间计算的运行均值和方差进行归一化:

BN ( x i ) = γ ( x i − μ running σ running 2 + ϵ ) + β \text{BN}(x_i) = \gamma \left( \frac{x_i - \mu_{\text{running}}}{\sqrt{\sigma_{\text{running}}^2 + \epsilon}} \right) + \beta BN(xi)=γ(σrunning2+ϵ xiμrunning)+β

通过这种方式,批量归一化可以在测试阶段更稳定和准确地归一化数据。

γ和β(注意)

在批量归一化中, γ \gamma γ β \beta β 不是单一的数值,而是可以学习的参数向量。其维度与正在被归一化的数据的维度相同。这样可以确保每个特征有其自己的 γ \gamma γ β \beta β 参数,可以独立地进行缩放和偏移。

具体来说:

  • 在全连接层中,如果该层有 d d d 个神经元,那么 γ \gamma γ β \beta β 将是 d d d 维向量。
  • 在卷积层中,如果卷积层有 c c c 个通道,那么 γ \gamma γ β \beta β 将是 c c c 维向量,每个通道有一个 γ \gamma γ β \beta β 值。
举例

以下是按照10个样本,20个特征,计算移动平均方差的步骤:

  1. 初始化移动平均方差:在训练开始时,为每个特征初始化一个移动平均方差值。可以将其设置为零或其他初始值。你将得到一个具有20个元素的移动平均方差向量。

  2. 对于每个批次:对于每个训练批次,执行以下步骤:

    a. 计算当前批次的方差:按照之前的方法计算当前批次的方差。结果将是一个包含20个方差值的向量。

    b. 更新移动平均方差:使用以下公式来更新每个特征的移动平均方差:

移动平均方差 j = m o m e n t u m × 移动平均方差 j + ( 1 − m o m e n t u m ) × 当前批次方差 j \text{移动平均方差}_j = momentum \times \text{移动平均方差}_j + (1 - momentum) \times \text{当前批次方差}_j 移动平均方差j=momentum×移动平均方差j+(1momentum)×当前批次方差j

其中, m o m e n t u m momentum momentum 是一个超参数,通常在 0 到 1 之间,表示移动平均的平滑程度。这个过程会为每个特征更新移动平均方差。

  1. 预测时使用:在预测阶段,使用最终计算的移动平均方差向量来归一化新样本。

在批量归一化中,每个特征都有其自己的移动平均均值和移动平均方差。这些值是在训练过程中单独计算和跟踪的。

由于不同的特征可能具有不同的尺度和分布,因此为每个特征单独计算均值和方差是有意义的。这样可以确保在整个训练集中,每个特征都被归一化到具有相同的均值和方差,从而有助于提高训练的稳定性和效率。

层归一化

(Layer Normalization)是一种归一化技术,常用于深度学习模型中。下面我们来详细了解层归一化的前向传播和反向传播过程。

前向传播

给定输入向量 x x x,层归一化的前向传播包括以下步骤:

  1. 计算均值:计算输入 x x x 中所有特征的均值。
    μ = 1 d ∑ i = 1 d x i \mu = \frac{1}{d} \sum_{i=1}^{d} x_i μ=d1i=1dxi

  2. 计算方差:计算输入 x x x 中所有特征的方差。
    σ 2 = 1 d ∑ i = 1 d ( x i − μ ) 2 \sigma^2 = \frac{1}{d} \sum_{i=1}^{d} (x_i - \mu)^2 σ2=d1i=1d(xiμ)2

  3. 归一化:使用均值和方差对输入 x x x 进行标准化。
    x ^ i = x i − μ σ 2 + ϵ \hat{x}_i = \frac{x_i - \mu}{\sqrt{\sigma^2 + \epsilon}} x^i=σ2+ϵ xiμ

  4. 缩放和平移:使用可学习的参数伽玛 γ \gamma γ和贝塔 β \beta β来缩放和平移标准化的数据。
    y i = γ x ^ i + β y_i = \gamma \hat{x}_i + \beta yi=γx^i+β

反向传播

反向传播需要计算损失函数 L L L 对输入 x x x、伽玛 γ \gamma γ和贝塔 β \beta β的偏导数。以下是相关的偏导数计算:

  1. 对伽玛和贝塔的偏导数
    ∂ L ∂ γ = ∑ i = 1 d ∂ L ∂ y i x ^ i , ∂ L ∂ β = ∑ i = 1 d ∂ L ∂ y i \frac{\partial L}{\partial \gamma} = \sum_{i=1}^{d} \frac{\partial L}{\partial y_i} \hat{x}_i, \quad \frac{\partial L}{\partial \beta} = \sum_{i=1}^{d} \frac{\partial L}{\partial y_i} γL=i=1dyiLx^i,βL=i=1dyiL

  2. 对归一化输入的偏导数
    ∂ L ∂ x ^ i = ∂ L ∂ y i γ \frac{\partial L}{\partial \hat{x}_i} = \frac{\partial L}{\partial y_i} \gamma x^iL=yiLγ

  3. 对方差的偏导数
    ∂ L ∂ σ 2 = 1 2 ∑ i = 1 d ∂ L ∂ x ^ i 1 σ 2 + ϵ ( x i − μ ) \frac{\partial L}{\partial \sigma^2} = \frac{1}{2} \sum_{i=1}^{d} \frac{\partial L}{\partial \hat{x}_i} \frac{1}{\sqrt{\sigma^2 + \epsilon}} (x_i - \mu) σ2L=21i=1dx^iLσ2+ϵ 1(xiμ)

  4. 对均值的偏导数
    ∂ L ∂ μ = ∑ i = 1 d ∂ L ∂ x ^ i − 1 σ 2 + ϵ − 2 d ∂ L ∂ σ 2 ( μ − x i ) \frac{\partial L}{\partial \mu} = \sum_{i=1}^{d} \frac{\partial L}{\partial \hat{x}_i} \frac{-1}{\sqrt{\sigma^2 + \epsilon}} - \frac{2}{d} \frac{\partial L}{\partial \sigma^2} (\mu - x_i) μL=i=1dx^iLσ2+ϵ 1d2σ2L(μxi)

  5. 对输入的偏导数
    ∂ L ∂ x i = ∂ L ∂ x ^ i 1 σ 2 + ϵ + 2 d ∂ L ∂ σ 2 ( x i − μ ) + 1 d ∂ L ∂ μ \frac{\partial L}{\partial x_i} = \frac{\partial L}{\partial \hat{x}_i} \frac{1}{\sqrt{\sigma^2 + \epsilon}} + \frac{2}{d} \frac{\partial L}{\partial \sigma^2} (x_i - \mu) + \frac{1}{d} \frac{\partial L}{\partial \mu} xiL=x^iLσ2+ϵ 1+d2σ2L(xiμ)+d1μL

这些偏导数可以通过链式法则和上述前向传播步骤计算,从而实现层归一化的反向传播。这样就可以在训练过程中更新模型参数,并通过梯度下降或其他优化算法进行优化。

相关文章:

神经网络系列---归一化

文章目录 归一化批量归一化预测阶段 测试阶段γ和β(注意)举例 层归一化前向传播反向传播 归一化 批量归一化 (Batch Normalization)在训练过程中的数学公式可以概括如下: 给定一个小批量数据 B { x 1 , x 2 , … …...

2023 龙蜥操作系统大会演讲实录:《兼容龙蜥的云原生大模型数据计算系统——πDataCS》

本文主要分三部分内容:第一部分介绍拓数派公司,第二部分介绍 πDataCS 产品,最后介绍 πDataCS 与龙蜥在生态上的合作。 杭州拓数派科技发展有限公司(简称“拓数派”,英文名称“OpenPie”)是国内基础数据计…...

【Vue渗透】Vue站点渗透思路

原文地址 极核GetShell 前言 本文经验适用于前端用Webpack打包的Vue站点,阅读完本文,可以识别出Webpack打包的Vue站点,同时可以发现该Vue站点的路由。 成果而言:可能可以发现未授权访问。 识别Vue 识别出Webpack打包的Vue站…...

主数据管理是数字化转型成功的基石——江淮汽车案例分享

汽车行业数字化转型的背景 在新冠疫情导火索的影响下,经济全球化政治基础逐渐动摇。作为全球最大的汽车市场,我国的汽车市场逐渐由增量转为存量市场。 在数字化改革大背景下,随着工业4.0时代的到来,江淮汽车集团力争实现十四五数…...

【Spring连载】使用Spring Data访问 MongoDB(十一)----加密Encryption (CSFLE)

[TOC](【Spring连载】使用Spring Data访问 MongoDB(十一)----加密Encryption (CSFLE)) 一级目录 二级目录 三级目录...

【postgresql】数据表id自增与python sqlachemy结合实例

需求: postgresql实现一个建表语句,表名:student,字段id,name,age, 要求:每次添加一个数据id会自动增加1 在PostgreSQL中,您可以使用SERIAL或BIGSERIAL数据类型来自动生成主键ID。以下是一个创建名为stude…...

什么是索引?在 MySQL 中有哪些类型的索引?它们各自的优势和劣势是什么?

什么是索引?在 MySQL 中有哪些类型的索引?它们各自的优势和劣势是什么? 索引是数据库中用于帮助快速查询数据的一种数据结构。在 MySQL 中,索引可以显著提高查询性能,因为它允许数据库系统不必扫描整个表来找到相关数据…...

Docker安装与基础知识

目录 -----------------Docker 概述--------------------------- 容器化越来越受欢迎,因为容器是: Docker与虚拟机的区别: Docker核心概念: ●镜像 ●容器 ●仓库 -----------------安装 Docker--------------------------…...

搭建Facebook直播网络对IP有要求吗?

在当今数字化时代,Facebook直播已经成为了一种极具吸引力的社交形式,为个人和企业提供了与观众直接互动的机会,成为推广产品、分享经验、建立品牌形象的重要途径。然而,对于许多人来说,搭建一个稳定、高质量的Facebook…...

Qt开发:MAC安装qt、qtcreate(配置桌面应用开发环境)

安装qt-creator brew install qt-creator安装qt brew install qt查看qt安装路径 brew info qtzhbbindembp ~ % brew info qt > qt: stable 6.6.1 (bottled), HEAD Cross-platform application and UI framework https://www.qt.io/ /opt/homebrew/Cellar/qt/6…...

python学习网站

Python系列干货之——Python与设计模式 - 知乎 Python之23种设计模式_23种设计模式 python-CSDN博客 用python实现设计模式 — python-golang-web-guide 0.1 文档 python设计模式_Python六大原则,23种设计模式 - 掘金 Python 常用设计模式 Python入门 类class提…...

编程笔记 Golang基础 033 反射的类型与种类

编程笔记 Golang基础 033 反射的类型与种类 一、反射的类型和种类二、切片与反射三、集合与反射四、结构体与反射五、指针与反射六、函数与反射小结 反射机制的作用范围涵盖了几乎所有的类型和值的操作层面,它极大地增强了Go语言在运行时对于自身类型系统的探索和操…...

MySQL进阶篇2-索引的创建和使用以及SQL的性能优化

索引 mkdir mysql tar -xvf mysqlxxxxx.tar -c myql cd mysql rpm -ivh .....rpm yum install openssl-devel ​ systemctl start mysqld ​ gerp temporary password /var/log/mysqld.log ​ mysql -u root -p mysql> show variables like validate_password.% set glob…...

基于SVM的功率分类,基于支持向量机SVM的功率分类识别,Libsvm工具箱详解

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 完整代码和数据下载链接:基于SVM的功率分类,基于支持向量机SVM的功率分类识别资源-CSDN文库 https://download.csdn.net/download/abc991835105/88862836 SVM应用实例, 基于…...

【IO流】FileWrite字符输出流

FileWrite字符输出流 1. 概述2. 作用3. 方法4. 细节5. 代码示例6. 注意事项 1. 概述 java.io.FileWriter 类是写出字符到文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。 FileWriter 是用于写入字符数据到文件的字符输出流。 2. 作用 写入字符数据&#xff1a…...

WPF 【十月的寒流】学习笔记(1):DataGrid过滤

文章目录 相关链接代码仓库前言环境DataGrid 数据筛选项目配置使用原理主要代码(详细代码可以看我的GitHub仓库)Models.PersonDataGirdViewDataGridViewModel 实现效果 DataGrid直接绑定CollectionViewxamlViewModel 总结 相关链接 十月的寒流 在 WPF 中…...

当Vue项目启动后,通过IP地址方式在相同网络段的其他电脑上无法访问前端页面?

当Vue项目启动后,通过IP地址方式在相同网络段的其他电脑上无法访问前端页面,可能是由以下几个原因造成的: 服务监听地址:默认情况下,许多开发服务器(如Vue CLI的vue-cli-service serve)只监听lo…...

native sql -ABAP开发从入门到精通笔记

Native SQL SQL概要 OPEN SQL读取数据 Select Select <lines> <columns>... Select signle <cols>.... where. 列去重数据 Select distinct <cols>... where... 当取多条数据时&#xff0c;select结果会保存到内表中。 Select ... into...语句的结果不…...

C++完美转发【gpt】

提问&#xff1a;用极其通俗易懂的文字解释C的完美转发 ChatGPT 好的&#xff0c;让我用非常通俗易懂的方式解释一下 C 中的完美转发。 假设你有一个房子&#xff08;函数&#xff09;&#xff0c;你想把家具&#xff08;参数&#xff09;从一个房间&#xff08;函数&#x…...

C++之类和对象(2)

目录 1.类的6个默认成员函数 2. 构造函数 2.1 概念 2.2 特性 3.析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 5.赋值运算符重载 5.1 运算符重载 5.2 赋值运算符重载 2. 赋值运算符只能重载成类的成员函数不能重载成全局函数 3. 用户没有显式实现时&…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...