网站开发兼容性,正版传奇手游官方网站,凌风 wordpress 大学,国外哪个网站专做展厅2.layer_normalization
1.Normalization
1.1 Batch Norm
为什么要进行BN呢#xff1f;
在深度神经网络训练的过程中#xff0c;通常以输入网络的每一个mini-batch进行训练#xff0c;这样每个batch具有不同的分布#xff0c;使模型训练起来特别困难。Internal Covariat…2.layer_normalization
1.Normalization
1.1 Batch Norm
为什么要进行BN呢
在深度神经网络训练的过程中通常以输入网络的每一个mini-batch进行训练这样每个batch具有不同的分布使模型训练起来特别困难。Internal Covariate Shift (ICS) 问题在训练的过程中激活函数会改变各层数据的分布随着网络的加深这种改变差异会越来越大使模型训练起来特别困难收敛速度很慢会出现梯度消失的问题。
BN的主要思想 针对每个神经元使数据在进入激活函数之前沿着通道计算每个batch的均值、方差‘强迫’数据保持均值为0方差为1的正态分布 避免发生梯度消失。具体来说就是把第1个样本的第1个通道加上第2个样本第1个通道 … 加上第 N 个样本第1个通道求平均得到通道 1 的均值注意是除以 N×H×W 而不是单纯除以 N最后得到的是一个代表这个 batch 第1个通道平均值的数字而不是一个 H×W 的矩阵。求通道 1 的方差也是同理。对所有通道都施加一遍这个操作就得到了所有通道的均值和方差。
BN的使用位置 全连接层或卷积操作之后激活函数之前。
BN算法过程
沿着通道计算每个batch的均值沿着通道计算每个batch的方差做归一化加入缩放和平移变量 γ \gamma γ和 β \beta β
加入缩放和平移变量的原因是保证每一次数据经过归一化后还保留原有学习来的特征同时又能完成归一化操作加速训练。 这两个参数是用来学习的参数。
BN的作用
允许较大的学习率减弱对初始化的强依赖性保持隐藏层中数值的均值、方差不变让数值更稳定为后面网络提供坚实的基础有轻微的正则化作用相当于给隐藏层加入噪声类似Dropout
BN存在的问题
每次是在一个batch上计算均值、方差如果batch size太小则计算的均值、方差不足以代表整个数据分布。batch size太大 会超过内存容量需要跑更多的epoch导致总训练时间变长会直接固定梯度下降的方向导致很难更新。
1.2 Layer Norm
LayerNorm是大模型也是transformer结构中最常用的归一化操作简而言之它的作用是 对特征张量按照某一维度或某几个维度进行0均值1方差的归一化 操作计算公式为 y x − E ( x ) V ar ( x ) ϵ ∗ γ β \mathrm{y}\frac{\mathrm{x}-\mathrm{E}(\mathrm{x})}{\sqrt{\mathrm{V} \operatorname{ar}(\mathrm{x})\epsilon}} * \gamma\beta yVar(x)ϵ x−E(x)∗γβ
这里的 x x x 可以理解为** 张量中具体某一维度的所有元素**比如对于 shape 为 (2,2,4) 的张量 input若指定归一化的操作为第三个维度则会对第三个维度中的四个张量2,2,1各进行上述的一次计算.
详细形式 a i ∑ j 1 m w i j x j , y i f ( a i b i ) a_{i}\sum_{j1}^{m} w_{i j} x_{j}, \quad y_{i}f\left(a_{i}b_{i}\right) aij1∑mwijxj,yif(aibi) a ˉ i a i − μ σ g i , y i f ( a ˉ i b i ) , \bar{a}_{i}\frac{a_{i}-\mu}{\sigma} g_{i}, \quad y_{i}f\left(\bar{a}_{i}b_{i}\right), aˉiσai−μgi,yif(aˉibi), μ 1 n ∑ i 1 n a i , σ 1 n ∑ i 1 n ( a i − μ ) 2 . \mu\frac{1}{n} \sum_{i1}^{n} a_{i}, \quad \sigma\sqrt{\frac{1}{n} \sum_{i1}^{n}\left(a_{i}-\mu\right)^{2}}. μn1i1∑nai,σn1i1∑n(ai−μ)2 .
这里结合PyTorch的nn.LayerNorm算子来看比较明白
nn.LayerNorm(normalized_shape, eps1e-05, elementwise_affineTrue, deviceNone, dtypeNone)
normalized_shape归一化的维度int最后一维listlist里面的维度还是以2,2,4为例如果输入是int则必须是4如果是list则可以是[4], [2,4], [2,2,4]即最后一维倒数两维和所有维度eps加在分母方差上的偏置项防止分母为0elementwise_affine是否使用可学习的参数 γ \gamma γ 和 β \beta β 前者开始为1后者为0设置该变量为True则二者均可学习随着训练过程而变化
Layer Normalization (LN) 的一个优势是不需要批训练在单条数据内部就能归一化。LN不依赖于batch size和输入sequence的长度因此可以用于batch size为1和RNN中。LN用于RNN效果比较明显但是在CNN上效果不如BN。
1.3 Instance Norm
IN针对图像像素做normalization最初用于图像的风格化迁移。在图像风格化中生成结果主要依赖于某个图像实例feature map 的各个 channel 的均值和方差会影响到最终生成图像的风格。所以对整个batch归一化不适合图像风格化中因而对H、W做归一化。可以加速模型收敛并且保持每个图像实例之间的独立。
对于IN 对每个样本的 H、W 维度的数据求均值和标准差保留 N 、C 维度也就是说它只在 channel 内部求均值和标准差其公式如下 y t i j k x t i j k − μ t i σ t i 2 ϵ μ t i 1 H W ∑ l 1 W ∑ m 1 H x t i l m σ t i 2 1 H W ∑ l 1 W ∑ m 1 H ( x t i l m − m u t i ) 2 y_{t i j k}\frac{x_{t i j k}-\mu_{t i}}{\sqrt{\sigma_{t i}^{2}\epsilon}} \quad \mu_{t i}\frac{1}{H W} \sum_{l1}^{W} \sum_{m1}^{H} x_{t i l m} \quad \sigma_{t i}^{2}\frac{1}{H W} \sum_{l1}^{W} \sum_{m1}^{H}\left(x_{t i l m}-m u_{t i}\right)^{2} ytijkσti2ϵ xtijk−μtiμtiHW1l1∑Wm1∑Hxtilmσti2HW1l1∑Wm1∑H(xtilm−muti)2
1.5 Group Norm
GN是为了解决BN对较小的mini-batch size效果差的问题**。**
GN适用于占用显存比较大的任务例如图像分割。对这类任务可能 batch size 只能是个位数再大显存就不够用了。而当 batch size 是个位数时BN 的表现很差因为没办法通过几个样本的数据量来近似总体的均值和标准差。GN 也是独立于 batch 的它是 LN 和 IN 的折中。
具体方法 GN 计算均值和标准差时把每一个样本 feature map 的 channel 分成 G 组每组将有 C/G 个 channel然后将这些 channel 中的元素求均值和标准差。各组 channel 用其对应的归一化参数独立地归一化。 μ n g ( x ) 1 ( C / G ) H W ∑ c g C / G ( g 1 ) C / G ∑ h 1 H ∑ w 1 W x n c h w \mu_{n g}(x)\frac{1}{(C / G) H W} \sum_{cg C / G}^{(g1) C / G} \sum_{h1}^{H} \sum_{w1}^{W} x_{n c h w} μng(x)(C/G)HW1cgC/G∑(g1)C/Gh1∑Hw1∑Wxnchw σ n g ( x ) 1 ( C / G ) H W ∑ c g C / G ( g 1 ) C / G ∑ h 1 H ∑ w 1 W ( x n c h w − μ n g ( x ) ) 2 ϵ \sigma_{n g}(x)\sqrt{\frac{1}{(C / G) H W} \sum_{cg C / G}^{(g1) C / G} \sum_{h1}^{H} \sum_{w1}^{W}\left(x_{n c h w}-\mu_{n g}(x)\right)^{2}\epsilon} σng(x)(C/G)HW1cgC/G∑(g1)C/Gh1∑Hw1∑W(xnchw−μng(x))2ϵ
1.6 RMS Norm
与layerNorm相比RMS Norm的主要区别在于去掉了减去均值的部分计算公式为 a ˉ i a i RMS ( a ) g i , w h e r e RMS ( a ) 1 n ∑ i 1 n a i 2 . \bar{a}_{i}\frac{a_{i}}{\operatorname{RMS}(\mathbf{a})} g_{i}, \quad where~ \operatorname{RMS}(\mathbf{a})\sqrt{\frac{1}{n} \sum_{i1}^{n} a_{i}^{2}}. aˉiRMS(a)aigi,where RMS(a)n1i1∑nai2 .
RMS中去除了mean的统计值的使用只使用root mean square(RMS)进行归一化。
1.4 pRMSNorm介绍
RMS具有线性特征所以提出可以用部分数据的RMSNorm来代替全部的计算pRMSNorm表示使用前p%的数据计算RMS值。kn*p表示用于RMS计算的元素个数。实测中使用6.25%的数据量可以收敛 RMS ‾ ( a ) 1 k ∑ i 1 k a i 2 \overline{\operatorname{RMS}}(\mathbf{a})\sqrt{\frac{1}{k} \sum_{i1}^{k} a_{i}^{2}} RMS(a)k1i1∑kai2
1.7 Deep Norm
Deep Norm是对Post-LN的的改进具体的
DeepNorm在进行Layer Norm之前会以 α \alpha α 参数扩大残差连接在Xavier参数初始化过程中以 β \beta β 减小部分参数的初始化范围
一些模型的具体参数使用方法如下
论文中作者认为 Post-LN 的不稳定性部分来自于梯度消失以及太大的模型更新同时有以下几个理论分析
定义了“预期模型更新”的概念表示 模型更新的规模量级证明了 W Q W^Q WQ和 W K W^K WK不会改变注意力输出大小数量级的界限因而 β \beta β 并没有缩小这部分参数模型倾向于累积每个子层的更新从而导致模型更新量呈爆炸式增长从而使早期优化变得不稳定使用Deep Norm 的 “预期模型更新”在参数 α , β \alpha, \beta α,β 取值适当的时候以常数为界
同时作者通过实验证实了Deep Norm在训练深层transformer模型的时候具备近乎恒定的更新规模成功训练了1000层transformer的模型认为Deep Norm在具备 Post-LN 的良好性能 的同时又有 Pre-LN 的稳定训练
2. BN LN IN GN
常用的Normalization方法主要有
Batch NormalizationBN2015年、Layer NormalizationLN2016年、Instance NormalizationIN2017年、Group NormalizationGN2018年。
它们都是从激活函数的输入来考虑、做文章的以不同的方式对激活函数的输入进行 Norm 的。
将输入的 feature map shape 记为**[N, C, H, W]**其中N表示batch size即N个样本C表示通道数H、W分别表示特征图的高度、宽度。这几个方法主要的区别就是在
BN是在batch上对N、H、W做归一化而保留通道 C 的维度。BN对较小的batch size效果不好。BN适用于固定深度的前向神经网络如CNN不适用于RNNLN在通道方向上对C、H、W归一化主要对RNN效果明显IN在图像像素上对H、W做归一化用在风格化迁移GN将channel分组然后再做归一化。
比喻成一摞书这摞书总共有 N 本每本有 C 页每页有 H 行每行 有W 个字符。
BN 求均值时相当于把这些书按页码一一对应地加起来例如第1本书第36页第2本书第36页…再除以每个页码下的字符总数N×H×W因此可以把 BN 看成求“平均书”的操作注意这个“平均书”每页只有一个字求标准差时也是同理。LN 求均值时相当于把每一本书的所有字加起来再除以这本书的字符总数C×H×W即求整本书的“平均字”求标准差时也是同理。IN 求均值时相当于把一页书中所有字加起来再除以该页的总字数H×W即求每页书的“平均字”求标准差时也是同理。GN 相当于把一本 C 页的书平均分成 G 份每份成为有 C/G 页的小册子求每个小册子的“平均字”和字的“标准差”。
3.Post-LN 和 Pre-LN
左边是原版Transformer的Post-LN即将LN放在addition之后右边是改进之后的Pre-LN即把LN放在FFN和MHA之前。
一般认为Post-Norm在残差之后做归一化对参数正则化的效果更强进而模型的收敛性也会更好而Pre-Norm有一部分参数直接加在了后面没有对这部分参数进行正则化可以在反向时防止梯度爆炸或者梯度消失大模型的训练难度大因而使用Pre-Norm较多。
目前比较明确的结论是同一设置之下Pre Norm结构往往更容易训练但最终效果通常不如Post Norm。Pre Norm更容易训练好理解因为它的恒等路径更突出但为什么它效果反而没那么好呢[为什么Pre Norm的效果不如Post Norm ] 大模型AI产品经理如何学习
求大家的点赞和收藏我花2万买的大模型学习资料免费共享给你们来看看有哪些东西。
1.学习路线图 第一阶段 从大模型系统设计入手讲解大模型的主要方法
第二阶段 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用
第三阶段 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统
第四阶段 大模型知识库应用开发以LangChain框架为例构建物流行业咨询智能问答系统
第五阶段 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型
第六阶段 以SD多模态大模型为主搭建了文生图小程序案例
第七阶段 以大模型平台应用与开发为主通过星火大模型文心大模型等成熟大模型构建大模型行业应用。
2.视频教程
网上虽然也有很多的学习资源但基本上都残缺不全的这是我自己整理的大模型视频教程上面路线图的每一个知识点我都有配套的视频讲解。 都打包成一块的了不能一一展开总共300多集
因篇幅有限仅展示部分资料需要点击下方图片前往获取
3.技术文档和电子书
这里主要整理了大模型相关PDF书籍、行业报告、文档有几百本都是目前行业最新的。
4.LLM面试题和面经合集
这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
学会后的收获 • 基于大模型全栈工程实现前端、后端、产品经理、设计、数据分析等通过这门课可获得不同能力
• 能够利用大模型解决相关实际项目需求 大数据时代越来越多的企业和机构需要处理海量数据利用大模型技术可以更好地处理这些数据提高数据分析和决策的准确性。因此掌握大模型应用开发技能可以让程序员更好地应对实际项目需求
• 基于大模型和企业数据AI应用开发实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能 学会Fine-tuning垂直训练大模型数据准备、数据蒸馏、大模型部署一站式掌握
• 能够完成时下热门大模型垂直领域模型训练能力提高程序员的编码能力 大模型应用开发需要掌握机器学习算法、深度学习框架等技术这些技术的掌握可以提高程序员的编码能力和分析能力让程序员更加熟练地编写高质量的代码。 1.AI大模型学习路线图 2.100套AI大模型商业化落地方案 3.100集大模型视频教程 4.200本大模型PDF书籍 5.LLM面试题合集 6.AI产品经理资源合集 获取方式 有需要的小伙伴可以保存图片到wx扫描二v码免费领取【保证100%免费】