NLP高频面试题(四)——BN和LN的区别与联系,为什么attention要用LN

news/2025/3/19 16:57:08/

在深度学习模型中,Normalization是一种极为重要的技巧,Batch Normalization(BN)和Layer Normalization(LN)是其中最为常用的两种方法。然而,二者在实际应用中有着明显的区别与联系,尤其在Transformer的Attention机制中,LN有着独特的优势。

一、BN与LN的核心区别与联系

1. Batch Normalization (BN)

BN的思想源于一个叫Internal Covariate Shift(ICS)的概念,即在训练过程中,每个mini-batch的数据分布都会发生变化,导致训练变得困难。

BN的做法是在每个batch中,沿着特征通道对所有样本计算均值和方差,使数据强制保持均值为0、方差为1的分布。这有效地缓解了梯度消失的问题,加速了模型的训练过程。

BN计算公式为:

y = x − μ b a t c h σ b a t c h 2 + ϵ ⋅ γ + β y = \frac{x - \mu_{batch}}{\sqrt{\sigma_{batch}^{2} + \epsilon}} \cdot \gamma + \beta y=σbatch2+ϵ xμbatchγ+β

  • 其中 u b a t c h u_{batch} ubatch σ b a t c h \sigma_{batch} σbatch 分别为批次数据的均值和方差。
  • γ \gamma γ β \beta β为可学习的缩放和平移参数,保证归一化操作后仍保留特征表达能力。
2. Layer Normalization (LN)

LN与BN最大的区别在于,LN的归一化操作不是跨batch进行,而是在单个数据实例的特定维度或特征内部进行。

LN的计算公式为:

y = x − μ l a y e r σ l a y e r 2 + ϵ ⋅ γ + β y = \frac{x - \mu_{layer}}{\sqrt{\sigma_{layer}^{2} + \epsilon}} \cdot \gamma + \beta y=σlayer2+ϵ xμlayerγ+β

  • LN不依赖于batch大小,每个数据实例单独进行归一化,因此避免了BN在batch size过小或过大时效果变差的问题。
  • 归一化的维度可自由指定,常见于序列数据处理,比如NLP中的Transformer模型。

二、为什么Attention更适合使用LN?

Transformer模型的核心组成——自注意力(self-attention)机制,强调的是对单个序列内各元素之间的相互关系,且常需处理长度不固定的序列数据。因此,Attention机制更适合使用LN的原因主要有以下几点:

1. Attention机制的数据特性

Attention机制通常处理的是可变长度的序列数据,比如句子或文档。这种场景下,batch内部的数据长度可能各异,而BN对batch size和数据长度极为敏感,小batch情况下表现尤为糟糕。

2. 独立性与稳定性

LN不依赖于batch size或数据长度的特性,使得其在处理每个单独序列数据时都可以获得稳定的效果。

Transformer结构中的Attention模块通常是对序列的每个位置独立计算注意力权重,更需要一种不依赖于整个batch统计信息的归一化方法。LN刚好满足了这种需求,每个数据实例都独立计算均值和方差,避免了BN在Attention中因序列长度不一带来的问题。

3. 更好地适配小batch和动态长度数据

LN在小batch或者甚至batch size为1的情况下依然稳定有效,尤其适用于大模型和动态长度的序列数据,这恰好是Transformer在训练中经常遇到的场景。

三、小结

综上,虽然BN和LN都是为了解决训练过程中的数据分布问题而提出的归一化技术,但它们的适用场景有所不同。

  • BN适合于稳定、较大的batch size场景,常用于CNN。
  • LN则更适合于动态长度、batch size不确定或很小的序列任务,比如NLP中的Transformer模型,尤其是Attention机制。

Attention机制之所以广泛使用LN,本质原因就在于其能够更好地处理每个数据实例的独立特征统计特性,提供更加稳定、高效的训练效果,推动了Transformer模型在自然语言处理领域的广泛成功。


http://www.ppmy.cn/news/1580366.html

相关文章

[从零开始学习JAVA] Stream流

前言: 本文我们将学习Stream流,他就像流水线一样,可以对我们要处理的对象进行逐步处理,最终达到我们想要的效果,是JAVA中的一大好帮手,值得我们了解和掌握。(通常和lambda 匿名内部类 方法引用相…

从PDF文件中提取数据

笔记 import pdfplumber # 打开PDF文件 with pdfplumber.open(数学公式.pdf) as pdf:for i in pdf.pages: # 遍历页print(i.extract_text()) # extract_text()方法提取内容print(f---------第{i.page_number}页结束---------)

基于PMU的14节点、30节点电力系统状态估计MATLAB程序

“电气仔推送”获得资料(专享优惠) 程序简介: 程序采用三种方法对14节点和30节点电力系统状态进行评估: ①PMU同步向量测量单元结合加权最小二乘法(WLS)分析电力系统的电压幅值和相角状态; …

css3有哪些新属性

CSS3 相较于之前版本,增加了很多新属性和特性,使网页设计更具表现力和灵活性。以下是一些重要的 CSS3 新属性和特性,按照功能分类列举: 一、布局相关 Flexbox 布局 display: flex;常用属性:justify-content, align-it…

<video>标签的controlsList属性,它能实现哪些功能?

大白话标签的controlsList属性&#xff0c;它能实现哪些功能&#xff1f; <video> 标签的 controlsList 属性是什么 <video> 标签是 HTML 里用来在网页上播放视频的标签。controlsList 属性就像是一个“控制器筛选器”&#xff0c;它能让你控制视频播放器上显示哪…

爬虫(requsets)笔记

一、request_基本使用 pip install requests -i https://pypi.douban.com/simple 一个类型六个属性 r.text 获取网站源码 r.encoding 访问或定制编码方式r.url 获取请求的urlr.content 响应的字节类型r.status_code 响应的状态码r.headers 响应的头信息 import requestsur…

大语言模型的压缩技术

尽管人们对越来越大的语言模型一直很感兴趣&#xff0c;但MistralAI 向我们表明&#xff0c;规模只是相对而言的&#xff0c;而对边缘计算日益增长的兴趣促使我们使用小型语言获得不错的结果。压缩技术提供了一种替代方法。在本文中&#xff0c;我将解释这些技术&#xff0c;并…

基于Spring Boot的项目申报系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…