Xavier 初始化

Xavier 初始化

为什么在 W [ l ] = n p . r a n d o m . r a n d n ( s h a p e ) × n p . s q r t ( 1 n [ l − 1 ] ) W^{[l]}=np.random.randn(shape)\times np.sqrt(\frac{1}{n^{[l-1]}}) W[l]=np.random.randn(shape)×np.sqrt(n[l1]1) 中需要乘以 n p . s q r t ( 1 n [ l − 1 ] ) np.sqrt(\frac{1}{n^{[l-1]}}) np.sqrt(n[l1]1)


Xavier 初始化通过保持输入和输出之间的方差不变来尽可能避免梯度爆炸/消失。

它假设每个神经元的输入和输出是从一个均值 μ \mu μ 为零、方差 σ 2 \sigma^2 σ2 相同的分布中抽样得到的,而这个分布的方差可以通过输入和输出的维度来估计。

对于权重矩阵 W [ l ] W^{[l]} W[l] 采用高斯分布来初始化: N ( 0 , σ 2 ) \mathcal{N}(0, \sigma^2) N(0,σ2)

W [ l ] W^{[l]} W[l] 方差很大(取值范围非常广泛 → \rightarrow l l l 层的输出值 z z z 很大

→ \rightarrow 激活函数 a a a 的斜率很大( l l l 层的输出 z z z 就是 a a a 的输入)

→ \rightarrow l l l 层权重的梯度变大( l l l 层权重的梯度与激活函数的斜率成正比)

→ \rightarrow 可能引发梯度爆炸

  • 主要零均值: 高斯分布的均值为零,这意味着在初始化权重时,期望值为零,不会引入任何偏差。

    μ   ! = 0 \mu~!=0 μ !=0,就会引入一个初始的偏差(记为 bias_orig)。假设 a = g ( z ) a=g(z) a=g(z),且只有一个输出层。
    在这里插入图片描述

    y ^ = W x + b \hat{y}=Wx+b y^=Wx+b

    当引入偏差之后, y ^ = W x + b + b i a s _ o r i g \hat{y} = Wx+b +bias\_orig y^=Wx+b+bias_orig

    也就是在基本预测函数的基础上加上了额外的偏差。


    即:本来预测函数与真实有一定的偏差,但是加上了额外的偏差,与真实偏差更大。

    • 偏差:模型预测值与真实值之间的差距
  • 其次对称性: 高斯分布是对称的,这意味着权重的正值和负值出现的概率相等,从而可以避免引入偏斜。

那么某一个神经元输出也就是 z = w 1 x 1 + w 2 x 2 + ⋯ + w n x n = Σ i = 1 n i n w i x i , b = 0 z =w_1x_1+w_2x_2+\cdots+w_nx_n=\mathop{\Sigma}\limits_{i=1}^{n_{in}}w_ix_i,b=0 z=w1x1+w2x2++wnxn=i=1Σninwixi,b=0

假设 x x x 的输入也具有均值 μ = 0 \mu =0 μ=0,方差 γ 2 \gamma^2 γ2

E ( z ) = Σ i = 1 n i n E [ w i x i ] E(z) = \mathop{\Sigma}\limits_{i=1}^{n_{in}}E[w_ix_i] E(z)=i=1ΣninE[wixi]
= Σ i = 1 n i n E [ w i ] E [ x i ] =\mathop{\Sigma}\limits_{i=1}^{n_{in}}E[w_i]E[x_i] =i=1ΣninE[wi]E[xi]
= 0 =0 =0

D ( z ) = E ( z 2 ) − E ( z ) 2 D(z)=E(z^2)-E(z)^2 D(z)=E(z2)E(z)2
= Σ i = 1 n i n E [ w i 2 x i 2 ] − 0 =\mathop{\Sigma}\limits_{i=1}^{n_{in}}E[w_i^2x_i^2]-0 =i=1ΣninE[wi2xi2]0
= Σ i = 1 n i n E [ w i 2 ] E [ x i 2 ] =\mathop{\Sigma}\limits_{i=1}^{n_{in}}E[w_i^2] E[x_i^2] =i=1ΣninE[wi2]E[xi2]

= n i n σ 2 γ 2 =n_{in}\sigma^2\gamma^2 =ninσ2γ2

E [ w 2 ] = D ( w ) − ( E [ w ] ) 2 = D ( w ) = σ 2 E[w^2] = D(w)-(E[w])^2=D(w)=\sigma^2 E[w2]=D(w)(E[w])2=D(w)=σ2

E [ x 2 ] = D ( x ) − ( E [ x ] ) 2 = D ( x ) = γ 2 E[x^2] = D(x)-(E[x])^2=D(x)=\gamma^2 E[x2]=D(x)(E[x])2=D(x)=γ2

由于需要保证输入与输出的方差一致: D ( z ) = γ 2 D(z)=\gamma^2 D(z)=γ2

那么 n i n σ 2 = 1 n_{in}\sigma^2 = 1 ninσ2=1


若只考虑正向传播,那么 σ = 1 n i n \sigma = \sqrt{\frac{1}{n_{in}}} σ=nin1

也就是 n p . s q r t ( 1 n [ l − 1 ] ) np.sqrt(\frac{1}{n^{[l-1]}}) np.sqrt(n[l1]1)

那么权重矩阵 W [ l ] W^{[l]} W[l] 采用高斯分布来初始化: N ( 0 , σ 2 ) \mathcal{N}(0, \sigma^2) N(0,σ2)

  • 其中 σ = 1 n [ l − 1 ] \sigma = \sqrt{\frac{1}{n^{[l-1]}}} σ=n[l1]1

即: W [ l ] = n p . r a n d o m . r a n d n ( s h a p e ) × n p . s q r t ( 1 n [ l − 1 ] ) W^{[l]}=np.random.randn(shape)\times np.sqrt(\frac{1}{n^{[l-1]}}) W[l]=np.random.randn(shape)×np.sqrt(n[l1]1)

  • n p . r a n d o m . r a n d n ( s h a p e ) np.random.randn(shape) np.random.randn(shape) 默认服从 N ( 0 , 1 ) \mathcal{N}(0, 1) N(0,1)

若即考虑正向传播,也考虑到反向传播

n i n σ 2 = 1 , n o u t σ 2 = 1 n_{in}\sigma^2 = 1,n_{out}\sigma^2 = 1 ninσ2=1,noutσ2=1

不可能同时满足二者

只需满足: n i n σ 2 + n o u t σ 2 = 2 n_{in}\sigma^2 + n_{out}\sigma^2 = 2 ninσ2+noutσ2=2

即:
σ = 2 n i n + n o u t (1) \sigma = \sqrt{\frac{2}{n_{in}+n_{out}}}\tag{1} σ=nin+nout2 (1)
通常: x x x 也采用高斯分布


x x x 的输入采用均匀分布 U ( − a , a ) U(-a,a) U(a,a)

同高斯分布的对称性

那么: σ 2 = ( a − ( − a ) ) 2 12 = a 2 3 \sigma^2 = \frac{(a-(-a))^2}{12}=\frac{a^2}{3} σ2=12(a(a))2=3a2

带入公式 ( 1 ) (1) (1) 得出初始化值域:
U ( − 6 n i n + n o u t , 6 n i n + n o u t ) U(-\sqrt{\frac{6}{n_{in}+n_{out}}},\sqrt{\frac{6}{n_{in}+n_{out}}}) U(nin+nout6 ,nin+nout6 )

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux服务器运维工具箱 监控管理建站一个脚本全搞定!

Linux服务器运维工具箱 监控管理建站一个脚本全搞定! 一款全能脚本工具箱,使用shell脚本编写。专为Linux服务器监控、测试和管理而设计。无论您是初学者还是经验丰富的用户,该工具都能为您提供便捷的解决方案。集成了独创的Docker管理功能&a…

IDEA2024配置RunDashBoard(Services)面板

IDEA2024配置RunDashBoard(Services)面板 新版本的IDEA没有RunDashBoard,取而代之的是Services面板,不需要配置workspace.xml文件; 本文教你简单的方法就能一个SpringBoot的Main运行多次,方便调试。 1、配置启动类 导航栏,Edit…

sso-oauth2单点登录功能笔记

场景:最近公司2个系统需要做单点登录,A系统作为服务器,认证方式是sso-oauth2方式,B系统作为客户端,token方式是ta-token,先来张sso-oauth2认证方式的图 前置准备工作 第一步:要确认谁是服务提…

AI+PS快捷键大全!

hello,我是小索奇, 你会用Photoshop(PS)或者(Illustrator)AI吗?相信很多人都会接触到吧,但有一部分人很少用快捷键,仅凭借鼠标点击来实现功能,殊不知快捷键能…

spring版本介绍

Spring Framework 是一个广泛使用的 Java 平台,用于构建企业级应用程序。它提供了一个全面的编程和配置模型,支持现代 Java 应用程序的最佳实践,如依赖注入、面向切面编程以及基于注解的编程模型。自从 Spring 1.0 发布以来,已经经…

llama2 与 llama3比较

Llama 3 刚刚在4月18号推出,距 Llama 2 发布正好 9 个月。它已经可以在 Meta 网站上进行聊天,可以从 Huggingface 以 safetensors 或 GGUF 格式下载。 llama 2 与 llama3 比较 1. 模型输出(model output) llama 2 输出只能是文本…

Go诊断工具

Go 提供了一些出色的诊断工具,可帮助我们深入了解应用程序的执行情况。 1. 分析工具 分析工具可观测应用程序执行的各种指标。它使我们能够解决性能问题、检测争用、定位内存泄漏等。这些指标可以通过以下几个配置文件收集: CPU--确定应用程序将时间花在了哪里Goroutine--报…

【MySQL】查询(进阶)

文章目录 前言1、新增2、聚合查询2.1聚合函数2.1.1count2.1.2sum2.1.3avg2.1.4max和min 2.2、GROUP BY子句2.3HAVING 3、联合查询/多表查询3.1内连接和外连接3.2自连接3.3子查询3.4合并查询 前言 在前面的内容中我们已经把查询的基本操作介绍的差不多了,接下来我们…

【ThinkPHP框架教程·Part-05】控制器定义和渲染输出

文章目录 一、控制器定义1、控制器目录设置2、控制器访问格式3、设置控制器后缀(选择性开启) 二、渲染输出1、return返回字符串2、返回json格式3、扩展:助手函数 halt() 本章节我们来了解一下控制器定义的方式,包括 URL 访问和渲染…

C# Solidworks二次开发:程序工具界面和选项相关API详解

大家好,今天要讲的是关于程序工具相关的API介绍。 下面是要介绍的API: (1)第一个为GetAutoPartSimplification,这个API的含义为获取简化配置的指针,下面是官方具体解释: 其输入参数的类型在上一篇文章中已经介绍过了gtError_e&a…

前端跨域问题

vue项目,开发环境下,axios造成跨域问题: Access to XMLHttpRequest at http://....:8888/login from origin http://localhost:8080 has been blocked by CORS policy: Cannot parse Access-Control-Allow-Headers response header field in…

遇到you-get下载报错问题解决

pip3 install you-get安装这里就不赘述了,如果你还不会安装,说明这篇文章不适合你,这篇文章主要解决当执行you-get的报错: 当然你可以加选项–debug具体看一下到底报什么错。 第一步 替换文件 首先,我们下载仓库最新…

独立样本t检验——python完整代码(直接运行就行)

#!/usr/bin/env python # -*- coding: utf-8 -*- # Author : 三十二画生JH # Contact : fjhstudent163.com # Software: PyCharm # Time : 2024/4/21 21:49 # Site : 网址 # File : t_test.py # Version : # ---功能描述 """ 对实验数据做独立样本&am…

【数值计算方法】 4.2 / Newton-Cotes公式

本质:具有等距节点的插值求积公式就是NC公式

记录数据截断误差

数据的4位之后 数据的小数点后4位之后有些不同,跟save函数有关 save ga_mat1.txt ga -ascii; save sins_mat.txt sins -ascii;

微服务之SpringCloud AlibabaNacos服务注册和配置中心

一、概述 1.1注册中心原理 在微服务远程调用的过程中,包括两个角色: 服务提供者:提供接口供其它微服务访问,比如item-service 服务消费者:调用其它微服务提供的接口,比如cart-service 在大型微服务项目…

每日算法4/21

LCR 073. 爱吃香蕉的狒狒 题目 狒狒喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。 狒狒可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选…

LeetCode-电话号码的字母组合(回溯)

每日一题 今天刷到的是一道利用回溯来解决的题,不过稍微有点复杂,并且我也有一段时间没有做回溯了,所有在解题时也是思考了一段时间。 题目要求 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意…

大数据Spark--运行环境和架构

文章目录 Spark运行环境Local模式解压缩文件启动 Local 环境命令行工具退出本地模式提交应用 Standalone 模式解压缩文件修改配置文件启动集群提交应用提交参数说明配置历史服务配置高可用(HA Yarn模式解压缩文件修改配置文件启动HDFS 以及YARN集群配置历史服务器 K…

【深度学习实战(11)】搭建自己的dataset和dataloader

一、dataset和dataloader要点说明 在我们搭建自己的网络时,往往需要定义自己的dataset和dataloader,将图像和标签数据送入模型。 (1)在我们定义dataset时,需要继承torch.utils.data.dataset,再重写三个方法…