神经网络中的权重初始化

神经网络的权重初始化

从神经网络输入和输出尽量都要有相同的方差出发,但均值很难保持一致(由于有一些非负的激活函数)。而且现有的标准化策略也是起到了同样的作用,如BN,LN等,都是努力将中间层的输出的方差和均值限定为1和0,但是最近的一些BN的工作(如用在Google T5中的RMS Norm)尝试了去掉减去均值的操作,反而会有提点的效果。说明保持均值一致并不是必须的。

💡
一个直观的猜测是,center操作,类似于全连接层的bias项,储存到的是关于预训练任务的一种先验分布信息,而把这种先验分布信息直接储存在模型中,反而可能会导致模型的迁移能力下降。所以T5不仅去掉了Layer
Normalization的center操作,它把每一层的bias项也都去掉了。

对于一个输入含有m个神经单元的网络层,输出n个值。当没有激活函数时,模型为 y i = b i + ∑ j w i , j x i , j y_i=b_i+\sum_{j}w_{i, j}x_{i, j} yi=bi+jwi,jxi,j,可以计算输出值的期望和方差,主要是看二阶矩方差,当权重和偏置的初始化的均值都是0时,并且输入值 x x x的方差是1,可以得到 E [ y i 2 ] = m E [ w i , j 2 ] E[y_i^2]=mE[w_{i,j}^2] E[yi2]=mE[wi,j2],所以当神经网络权重初始化的方差是 1 / m 1/m 1/m时,输出值y的方差也是1,这就是Lecun初始化,可以让每一层的输出值的方差都保持在1左右。

对于Xaiver初始化也考虑了反向传播时神经网络权重方差的变化,得到了两个约束,对于第 i i i层的权重 W i W^i Wi和神经元个数 n i n_i ni有两个约束条件 n i V a r [ W i ] = 1 n_iVar[W^i]=1 niVar[Wi]=1, n i + 1 V a r [ W i ] = 1 n_{i+1}Var[W^i]=1 ni+1Var[Wi]=1,所以可以使 W i ∼ N ( 0 , 2 n i + n i + 1 ) W^i\sim N(0, \frac{2}{n_i+n_{i+1}}) WiN(0,ni+ni+12),当神经网络所有层的宽度是一样时,这两个个约束条件才会同时被满足。如果使用均匀分布初始化,例如初始权重从 U ( − 1 n , 1 n ) U(-\frac{1}{\sqrt{n}}, \frac{1}{\sqrt{n}}) U(n 1,n 1)中采样,那么和上面一样有 E [ y i 2 ] = n i V a r ( W i ) = 1 / 3 E[y_i^2]=n_iVar(W^i)=1/3 E[yi2]=niVar(Wi)=1/3,所以为了使 E [ y i 2 ] E[y_i^2] E[yi2]的方差也为1,当W是从均匀分布中采样时,需要从 U ( − 6 n j + n j + 1 , 6 n j + n j + 1 ) U(-\frac{\sqrt{6}}{\sqrt{n_j+n_j+1}}, \frac{\sqrt{6}}{\sqrt{n_j+n_j+1}}) U(nj+nj+1 6 ,nj+nj+1 6 )中采样。

但是实际情况都有激活函数,如果算上激活函数后考虑神经网络权重的方差,如最简单的Relu激活函数,可以假设神经网络,如果神经网络权重初始化的分布还是正态分布的话,可以假设约有一半的神经单元被激活,则 E [ y i 2 ] = m 2 E [ w i , j 2 ] E[y_i^2]=\frac{m}{2}E[w_{i,j}^2] E[yi2]=2mE[wi,j2],此时就要求 E [ w i , j 2 ] = 2 m E[w_{i,j}^2]=\frac{2}{m} E[wi,j2]=m2,便是He初始化,考虑到反向传播, m = f a n _ i n m=fan\_in m=fan_in m = f a n _ o u t m=fan\_out m=fan_out,其中fan_in和fan_out分别是当前层的输入和输出。

相比于Lecun初始化使用“均值为0,方差为1/m的正态分布,其中m是当前层的神经单元个数”,还有一种NTK参数化的方法,用“均值为0、方差为1的随机分布”来初始化,但是将输出结果除以 m \sqrt{m} m ,也即是模型变为 y i = b j + 1 m ∑ i x i w i , j y_i = b_j+\frac{1}{\sqrt{m}}\sum_{i}x_{i}w_{i,j} yi=bj+m 1ixiwi,j,使用NTK参数化的好处是可以将所有参数放在 O ( 1 ) O(1) O(1)级别,所以可以设置较大的学习率。

对于transformer中的注意力机制除以 d \sqrt{d} d 的作用也便是稳定传播时候的二阶矩,因为 E [ ( q ⋅ k ) 2 ] = d E[(q\cdot k)^2]=d E[(qk)2]=d,其中d为q和k向量的维度。

标准化

相比于对权重初始化的这种微调来使模型的传播过程中的方差不会过大,还有一类比较直接粗暴的方法来使训练稳定,就是直接标准化,LN,BN等。

关于残差连接的二阶矩

残差连接x+F(x),如果x的方差为 σ 1 2 \sigma_1^2 σ12,F(x)的方差为 σ 2 2 \sigma_2^2 σ22,那么x+F(x)的方差就是 σ 1 2 + σ 2 2 \sigma_1^2+\sigma^2_2 σ12+σ22,会进一步放大,所以需要采取办法处理。原版本的Transformer和Bert直接采用了一种PostNorm的方法,也即是 x t + 1 = N o r m ( x t + F t ( x t ) ) x_{t+1}=Norm(x_t+F_t(x_t)) xt+1=Norm(xt+Ft(xt)).然而,这种做法虽然稳定了前向传播的方差,但事实上已经严重削弱了残差的恒等分支(递归到很多层之后),所以反而失去了残差“易于训练”的优点,通常要warmup并设置足够小的学习率才能使它收敛。一个针对性的改进称为Pre Norm,它的思想是“要用的时候才去标准化”,其形式为 x t + 1 = x t + F t ( N o r m ( x t ) ) x_{t+1}=x_t+F_t(Norm(x_t)) xt+1=xt+Ft(Norm(xt))

但是preNorm的效果不如Post Norm。pre Norm方法将深度网络退化成了一个宽网络,学习能力自然不如postnorm的深网络。

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

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

相关文章

Mapmost Alpha:开启三维城市场景创作新纪元

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

vue3中使用tailwind.css注意

中文官网 教程 使用PostCSS 注意!!! 成功的关键 vite配置 import tailwindcss from tailwindcssexport default defineConfig({// ...css: {postcss: {plugins: [tailwindcss,]}},// ... })

2024年4月8日腾讯云故障复盘及情况说明

2024年4月8日15点23分,腾讯云团队收到告警信息,云API服务处于异常状态;随即在腾讯云工单、售后服务群以及微博等渠道开始大量出现腾讯云控制台登录不上的客户反馈。 经过故障定位发现,客户登录不上控制台正是由云API异常所导致。云…

面试必备:3个技巧提升表达能力,轻松拿Offer!

在职场竞争中,面试是求职者迈向成功的重要一步。想要在众多竞争者中脱颖而出,获得面试官的青睐并拿下心仪岗位的offer,良好的表达能力不可或缺。今天,我们就一起探讨如何在面试中有效提升自己的表达能力,为成功铺路。 …

C语言如何生成随机数以及设置随机数的范围

一、随机数的生成 1.rand()函数 C语言提供了⼀个函数叫 rand,这函数是可以生成随机数的,函数原型如下所示: int rand (void); rand函数会返回⼀个伪随机数,这个随机数的范围是在0~RAND_MAX之间,这个RAND_MAX的大小是依…

c语言中声明的问题【求个关注!】

文章目录 1 变量的声明与定义(1)定义与声明的区别:(2)为什么要区分定义与声明?(3)extern是什么 ?(4)举例: 2 函数的声明:函数声明的格…

前端面试问题汇总 - 其他问题

1. 一个好的产品有哪些特性? 解决问题: 优秀的产品应该能够解决用户的真实问题或满足用户的需求,提供有价值的解决方案。用户体验: 产品应该具有良好的用户体验,包括界面设计、交互设计、易用性等方面,让用户能够舒适…

使用Docker定时备份数据

文章目录 一、Docker镜像制作二、MySQL数据备份三、Minio数据备份四、数据跨服务器传输五、Nginx日志分割六、Docker启动七、Docker备份日志 一、Docker镜像制作 镜像制作目录 mc下载地址 - rsyncd.conf # https://download.samba.org/pub/rsync/rsyncd.conf.5port 873 uid …

共享内存和Pytorch中的Dataloader结合

dataloader中通常使用num_workers来指定多线程来进行数据的读取。可以使用共享内存进行加速。 代码地址:https://github.com/POSTECH-CVLab/point-transformer/blob/master/util/s3dis.py 文章目录 1. 共享内存和dataloader结合1.1 在init中把所有的data存储到共享内…

Qt控件---布局管理类

文章目录 QVBoxLayout(垂直布局)QHBoxLayout(水平布局)QGridLayout(网格布局)拉伸 QFormLayout(表单布局)QSpacerItem(空白) QVBoxLayout(垂直布局…

Apache Doris 基于 Job Scheduler 实现秒级触发任务调度能力

作者|SelectDB 技术团队 在数据管理愈加精细化的需求背景下,定时调度在其中扮演着重要的角色。它通常被应用于以下场景: 定期数据更新,如周期性数据导入和 ETL 操作,减少人工干预,提高数据处理的效率和准…

【王道数据结构笔记】顺序表的静态分配代码分析

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:数据结构 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进…

2024-04-08

作业要求: 1> 思维导图 2>使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt4版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否…

攻防世界05view_source

鼠标右键无法查看源代码,但是可以直接F12进行查看 但是没有办法复制,可以在地址前面加上view-source 这时候就可以复制了 知识点1:view-source协议-查看源码 view-source是一种协议,早期基本上每个浏览器都支持这个协议。后来Mi…

C语言基础(四)

C语言基础 一维数组数组初始化全部初始化部分初始化数组的默认值冒泡排序 字符数组 二维数组初始化行数是否可省略列数是否可以省略部分初始化 访问二维字符数组 函数分类库函数自定义函数调用自定义函数函数声明 一维数组 概念&#xff1a;一组数据类型相同的元素的集合 <…

算法中二分搜索详解

文章目录 在有序数组中找num是否存在实现思路实现代码(里面运用了对数器)在有序数组中找>num的最左位置实现思路代码实现 在有序数组中找<num的最右位置实现思路实现代码 二分搜索不一定发生在有序数组上(比如寻找峰值问题)题目描述实现思路实现代码 在有序数组中找num是…

无人机巡检技术革命性变革光伏电站运维管理

在中国广袤的大地上&#xff0c;光伏电站如雨后春笋般崛起&#xff0c;晶体硅组件板在阳光下熠熠生辉&#xff0c;为人们带来了源源不断的绿色能源。然而&#xff0c;随着光伏产业的迅猛发展&#xff0c;电站运维管理面临着前所未有的挑战。而无人机巡检技术的引入&#xff0c;…

Kotlin 面试题

lifecycleScope.launchWhenResumed launchWhenResumed是一个扩展函数,它是LifecycleCoroutineScope的一部分,并且它是在Android的Lifecycle库中引入的。 这个函数的主要目的是在Lifecycle的对应组件(通常是Activity或Fragment)处于“resumed”状态时启动协程。 public fun …

Vue项目(H5)与微信小程序来回跳转

新建H5页面 在小程序里面新建一个名为H5的文件夹&#xff0c;以及H5页面 H5.WXML <web-view src"{{h5Url}}" bindmessage"handleGetMessage"></web-view>H5.JSdata: { h5Url:https://xxx.com/login 要跳转的H5页面},H5回来的回调方法handleG…

【Unity+Python】如何通过Socket进行通信

1、Unity端创建名为UnityClient.cs脚本代码(客户端)&#xff1a; 注意&#xff1a;unity的规则中类&#xff0c;名和脚本文件名需要相同。 using System.Net.Sockets; using System.Text; using UnityEngine;public class UnityClient : MonoBehaviour {TcpClient client;Netw…