首页 > 编程知识 正文

inform词根词缀分解,layer normalization作用

时间:2023-05-06 00:50:12 阅读:107494 作者:652

正则化和正则化源于正态分布,也称xhdqj分布。 因而,典型的归一化方法是对输入样本求平均值,然后用平均值求出样本的方差,对输入样本进行归一化,归一化后的样本数据遵循平均值、方差的正态分布。 此外,还可以使用MinMaxScaler方法规格化输入的示例。 也就是说,通过线性投影将采样数值投影到[ 0,1 ]的范围。 Batch Norm和Layer Norm一般采用前述方法对样本数据进行归一化。

虽然网络上已有不少博客对Batch Norm和Layer Norm展开了解读,但本文并不着重介绍其中的规范化方法,而是记录自己对这两种方法的理解和思考。 如果您有兴趣,我们期待您的考虑。 其中,该博客对Batch Norm的解读比较好,得到了大家的认可; 这个博客解读Layer Norm也不错。 如果你对这两个Norm还一无所知,我建议你优先阅读这两个博客。

一.基础术语的理解

假设将输入的图像shape标记为[N,c,h,W]。 其中,c表示图像区域中的信道数,n表示图像的个数,h和w表示图像的尺寸。 通道数也称为“特征贴图”。 例如,在RGB这样的配色方案中,1张图像(6464 )的信道数是3,分别是红信道、绿信道、蓝信道,各信道的大小)即HW )是6464。 如果有100张这样的图像,则这些图像的shape为100、3、64、64]。

二.对Group Normalization论文中Figure 2的理解

形象直观地说明了这四种Norm方法的区别。 有人觉得把(h,w )画在图的立方体上很难理解,但其实并非如此。 ) h,w )是二维矩阵,但本质上可以用向量来表示。 例如,33的矩阵进行reshape,成为19矩阵,但实际上与向量相同。 也就是说,将(h,w )作为一个向量来理解的话,可能会更容易理解这个图。

因此,我认为Batch Norm是指使用单个信道表示的多个采样实现规格化,并对规格化进行线性变换。 另一方面,Layer Norm利用单个样本的多个信道实现归一化。 当然,这是图像领域的理解。

三.对Batch Norm实现的代码的疑问

在很多博文中看到了以下代码:

defbatchnorm _ simple _ for _ train (x,gamma,beta,bn_param ) :'''param:x :输入数据、shape(B ) b、 l ) param:gama :缩放因子param : beta :平移因子param : bn _ param : batch norm所需的参数eps :是接近0的数, 避免分母出现0momentum :动量参数0.99,0.999 running _ mean :采用滑动平均方式计算新均值,训练时计算,为测试数据准备采用running_var :滑动平均方式计算新方差准备测试数据' ' ' running _ mean=bn _ param [ ' running _ mean ' ] # shape=[ b ] running _ var=bn _ param [ ' running ] 要计算方差x_normalized=(x-x_mean )/NP.SP的x_normalized beta #缩放移位running _ mean=momentum * running _ mean () 记录的新值bn _ param [ ' running _ mean ' ]=running _ mean bn _ param [ ' running _ var ' ]=running _ varreturnrern照片中的凸纹这个疑问,我一直找不到答案,希望朋友们能在我的博客上留下你的答案。 我想实现Batch Norm和Layer Norm ()

单纯地实现,而不是用于训练),然后对比这两种方法的区别。但在实现的过程中,我不知道running_mean, running_var那样的变量是否为必须的。

四、对于自然语言处理中的Layer Norm的理解

       在自然语言处理中,我们常常会遇到RNN,而基于RNN的模型,也一般会用到Layer Norm。那么用于做归一化的图像数据和序列数据,有什么不一样呢?我认为其中最大的不同之处就是序列数据的长度和图像数据的尺寸是不一样的,这里的不一样不是说序列是一维的、图像是二维的(揣摩一下实际上图像也可以从二维矩阵拉成一维向量),而是说这个一维的序列向量的长度是不一致的,有些长有些短,但是图像数据就不一样,经过对齐预处理后的图像数据,它们的尺寸都是一样的。序列长度的不一致,就说明RNN的深度不是固定的。

       既然Batch Norm和Layer Norm是可比的,那么它们就会有相同之处,那么同样对于输入的数据shape记为[N, C, H, W],我是这样理解这几个符号的意思的:其中N是序列样本的个数;C是一个序列的多个表示通道,比如一个通道用来描述词向量,一个通道用来描述独热编码(这个比如不是很好,个人理解);H和W则不适合用于表示文本数据,因为序列长度不是固定的。如下图所示。

       Batch Norm有两个缺点:一是当batch size很小时计算得到的均值和方差无法反映全局的统计分布导致效果变差,二是无法很好处理序列长度不一致的问题。有人认为,Layer Norm是一个独立于batch size的方法,所以无论样本数多少都不会影响参与Layer Norm计算的数据量,从而解决Batch Norm的两个问题。但是我有点小小的疑问,batch size与Layer Norm是如何独立的?如果batch size不一样,显然所得到的归一化结果肯定也会不一样,那为什么说它们是独立的呢?特别是在CNN模型中,如果我用了Layer Norm,难道真的无论样本数多少都不会影响参与Layer Norm计算的数据量吗?

五、结束语

       Batch Norm和Layer Norm都是比较常用的Normalization方法,二者各有优缺点,没有绝对的好坏之分。根据大家的总结,当在CNN模型时,建议优先尝试使用Batch Norm,而在RNN模型时,建议优先使用Layer Norm。以上均是我的个人理解和疑问,不一定正确,如果您知道答案请大胆献言,我将感激不尽。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。