当前位置: 首页 > news >正文

Chapter4.2:Normalizing activations with layer normalization

文章目录

  • 4 Implementing a GPT model from Scratch To Generate Text
    • 4.2 Normalizing activations with layer normalization

4 Implementing a GPT model from Scratch To Generate Text

4.2 Normalizing activations with layer normalization

通过层归一化(Layer Normalization)对激活值进行归一化处理。

  • Layer normalization (LayerNorm):将激活值中心化到均值为 0,归一化方差为 1,稳定训练并加速收敛。

    应用位置

    1. transformer block 中的 multi-head attention module 前后。

    2. 最终输出层之前。

    下图提供了LayerNormalization的直观概述

    从一个小例子看看LayerNormalization发生了什么

    torch.manual_seed(123)batch_example = torch.randn(2, 5) layer = nn.Sequential(nn.Linear(5, 6), nn.ReLU())
    out = layer(batch_example)
    print(out)
    print(out.shape)# 计算均值和方差
    mean = out.mean(dim=-1, keepdim=True)
    var = out.var(dim=-1, keepdim=True)print("Mean:\n", mean)
    print("Variance:\n", var)out_norm = (out - mean) / torch.sqrt(var)
    print("Normalized layer outputs:\n", out_norm)mean = out_norm.mean(dim=-1, keepdim=True)
    var = out_norm.var(dim=-1, keepdim=True)
    print("Mean:\n", mean)
    print("Variance:\n", var)"""输出"""
    tensor([[0.2260, 0.3470, 0.0000, 0.2216, 0.0000, 0.0000],[0.2133, 0.2394, 0.0000, 0.5198, 0.3297, 0.0000]],grad_fn=<ReluBackward0>)torch.Size([2, 6])Mean:tensor([[0.1324],[0.2170]], grad_fn=<MeanBackward1>)Variance:tensor([[0.0231],[0.0398]], grad_fn=<VarBackward0>)Normalized layer outputs:tensor([[ 0.6159,  1.4126, -0.8719,  0.5872, -0.8719, -0.8719],[-0.0189,  0.1121, -1.0876,  1.5173,  0.5647, -1.0876]],grad_fn=<DivBackward0>)Mean:tensor([[9.9341e-09],[0.0000e+00]], grad_fn=<MeanBackward1>)
    Variance:tensor([[1.0000],[1.0000]], grad_fn=<VarBackward0>)
    

    归一化会独立应用于两个输入(行)中的每一个;使用 dim=-1 表示在最后一个维度(在本例中为特征维度)上进行计算,而不是在行维度上进行计算。

    关闭科学计数法

    torch.set_printoptions(sci_mode=False) #关闭科学计数法
    print("Mean:\n", mean)
    print("Variance:\n", var)"""输出"""
    Mean:tensor([[    0.0000],[    0.0000]], grad_fn=<MeanBackward1>)
    Variance:tensor([[1.0000],[1.0000]], grad_fn=<VarBackward0>)
    
  • LayerNorm 类实现:基于归一化思路,实现一个 LayerNorm 类,稍后我们可以在 GPT 模型中使用它

    class LayerNorm(nn.Module):def __init__(self, emb_dim):super().__init__()self.eps = 1e-5self.scale = nn.Parameter(torch.ones(emb_dim))self.shift = nn.Parameter(torch.zeros(emb_dim))def forward(self, x):mean = x.mean(dim=-1, keepdim=True)var = x.var(dim=-1, keepdim=True, unbiased=False)norm_x = (x - mean) / torch.sqrt(var + self.eps)return self.scale * norm_x + self.shift
    

    层归一化公式(上面的例子中 γ = 1 \gamma = 1 γ=1 β = 0 \beta=0 β=0 ϵ = 0 \epsilon = 0 ϵ=0
    L a y e r N o r m ( x i ) = γ ⋅ x i − μ σ 2 + ϵ + β LayerNorm(x_i) = \gamma \cdot \frac{x_i-\mu}{\sqrt{\sigma^2 + \epsilon}} + \beta LayerNorm(xi)=γσ2+ϵ xiμ+β
    其中

    1. μ 、 σ 2 \mu 、 \sigma^2 μσ2 分别x在layer维度上的均值和方差

    2. γ 、 β \gamma 、\beta γβ 是可学习的缩放平移参数

    3. ϵ \epsilon ϵ 是一个小常数,用于防止除零错误。

    scaleshift:可训练参数,用于在归一化后调整数据的缩放和偏移。

    有偏方差:在上述方差计算中,设置 unbiased=False,意味着使用公式 ∑ i ( x − x ‾ ) n \frac{\sum_i(x- \overline x)}{n} ni(xx),不包含贝塞尔校正。其中 n 是样本大小(此处为特征或列的数量);该公式不包含贝塞尔校正(即在分母中使用 n-1),因此提供的是方差的有偏估计。(对于 LLMs,嵌入维度 n 非常大,使用 n 和 n-1 之间的差异可以忽略不计,GPT-2 是在归一化层中使用有偏方差进行训练的,因此为了与后续章节中加载的预训练权重兼容,我们也采用了这一设置。)

    ln = LayerNorm(emb_dim=5)
    out_ln = ln(batch_example)
    mean = out_ln.mean(dim=-1, keepdim=True)
    var = out_ln.var(dim=-1, unbiased=False, keepdim=True)print("Mean:\n", mean)
    print("Variance:\n", var)"""输出"""
    Mean:tensor([[    -0.0000],[     0.0000]], grad_fn=<MeanBackward1>)
    Variance:tensor([[1.0000],[1.0000]], grad_fn=<VarBackward0>)
    
  • 所以、本节至此,我们介绍了实现GPT架构所需的构建块之一,如下图中打勾的部分


相关文章:

Chapter4.2:Normalizing activations with layer normalization

文章目录 4 Implementing a GPT model from Scratch To Generate Text4.2 Normalizing activations with layer normalization 4 Implementing a GPT model from Scratch To Generate Text 4.2 Normalizing activations with layer normalization 通过层归一化&#xff08;La…...

EA工具学习使用笔记 ———— 插入图片或UI

文章目录 介绍导入使用方法一方法二方法3介绍 在使用EA的过程中,我们可以EA的图像管理器自定义图像,从而创建有吸引力的图表。也可以通过图像管理器快速扩展可用图像的范围。方法是导入一个捆绑的基于uml的图像剪辑艺术集合作为图像库文件。EA的图像库下载链接为: 导入 Doc…...

[2474].第04节:Activiti官方画流程图方式

我的后端学习大纲 Activiti大纲 1.安装位置&#xff1a; 2.启动&#xff1a;...

JVM和异常

Java 虚拟机&#xff08;Java Virtual Machine&#xff0c;简称 JVM&#xff09; 概述 JVM 是运行 Java 字节码的虚拟计算机&#xff0c;它是 Java 程序能够实现 “一次编写&#xff0c;到处运行&#xff08;Write Once, Run Anywhere&#xff09;” 特性的关键所在。Java 程…...

Harmony OS开发-ArkUI框架速成四

程序员Feri一名12年的程序员,做过开发带过团队创过业,擅长Java相关开发、鸿蒙开发、人工智能等,专注于程序员搞钱那点儿事,希望在搞钱的路上有你相伴&#xff01;君志所向,一往无前&#xff01; 1.图标库 1.1 图标库概述 HarmonyOS 图标库为 HarmonyOS 开发者提供丰富的在线图…...

卡码网 ACM答题编程模板

背景&#xff1a; input() 在 ACM 编程中的底层调用原理 1. input() 的核心原理 在 Python 中&#xff0c;input() 的底层实现依赖于标准输入流 sys.stdin。每次调用 input() 时&#xff0c;Python 会从 sys.stdin 中读取一行字符串&#xff0c;直到遇到换行符 \n 或文件结束…...

逆向入门(6)汇编篇-外挂初体验

代码分析部分 游戏里面还是体验了不少自己CV来的外挂的&#xff0c;自己编写的程序还是头一次体验&#xff0c;程序源码如下 void startAcctack() {printf("开始攻击\n");// 获取当前系统时间time_t now time(0); // 获取当前时间的时间戳struct tm *local_time …...

Vulnhub靶场(Earth)

项目地址 https://download.vulnhub.com/theplanets/Earth.ova.torrent 搭建靶机 官网下载.ova文件双击vm打开导入 获取靶机IP kail终端输入 arp-scan -l 获取靶机 IP 192.168.131.184 信息收集 端口扫描 sudo nmap -sC -sV -p- 192.168.131.184 可以看到开启22端口&…...

CSP初赛知识学习计划

CSP初赛知识学习计划 学习目标 在20天内系统掌握CSP初赛所需的计算机基础知识、编程概念、数据结构、算法等内容&#xff0c;为初赛取得优异成绩奠定坚实基础。 资料收集 整理的CSP知识点文档。相关教材&#xff0c;如《信息学奥赛一本通》等。在线编程学习平台&#xff0c…...

信息科技伦理与道德1:研究方法

1 问题描述 1.1 讨论&#xff1f; 请挑一项信息技术&#xff0c;谈一谈为什么认为他是道德的/不道德的&#xff0c;或者根据使用场景才能判断是否道德。判断的依据是什么&#xff08;自身的道德准则&#xff09;&#xff1f;为什么你觉得你的道德准则是合理的&#xff0c;其他…...

高中数学部分基础知识

文章目录 一、集合二、一元二次方程三、函数四、指数函数五、对数函数六、三角函数1、角度和弧度2、三角函数 高中知识体系丰富&#xff0c;虽然毕业后再也没用过&#xff0c;但是很多数学逻辑还是非常经典的&#xff0c;能够启发我们如何制作逻辑工具去解决现实问题。以下做出…...

机器人领域的一些仿真器

模拟工具和环境对于开发、测试和验证可变形物体操作策略至关重要。这些工具提供了一个受控的虚拟环境&#xff0c;用于评估各种算法和模型的性能&#xff0c;并生成用于训练和测试数据驱动模型的合成数据。 Bullet Physics Library 用于可变形物体模拟的一个流行的物理引擎是 B…...

5大常见高并发限流算法选型浅析

高并发场景下&#xff0c;如何确保系统稳定运行&#xff0c;成为了每一个开发工程师必须面对的挑战。**你是否曾因系统崩溃、请求超时或资源耗尽而头疼不已&#xff1f;**高并发限流算法或许能帮你解决这些难题。 在处理高并发请求时&#xff0c;应该如何选择合适的限流算法呢…...

深入刨析数据结构之排序(下)

目录 1.内部排序 1.5选择排序 1.5.1简单选择排序 1.5.2树形选择排序 1.6堆排序 1.7归并排序 1.7.1递归归并 1.7.2非递归归并 1.8计数排序 1.9基数排序 常见内部排序的总结&#xff1a; 1.内部排序 1.5选择排序 选择排序&#xff08;Selection Sort&#xff09;的基…...

特殊数据类型的深度分析:JSON、数组和 HSTORE 的实用价值

title: 特殊数据类型的深度分析:JSON、数组和 HSTORE 的实用价值 date: 2025/1/4 updated: 2025/1/4 author: cmdragon excerpt: 随着数据管理需求的多样化,许多现代数据库系统开始支持特殊数据类型,以满足更多复杂应用场景的需求。在 PostgreSQL 中,JSON、数组和 HSTOR…...

PCA降维算法详细推导

关于一个小小的PCA的推导 文章目录 关于一个小小的PCA的推导1 谱分解 (spectral decomposition)2 奇异矩阵(singular matrix)3 酉相似(unitary similarity)4 酉矩阵5 共轭变换6 酉等价7 矩阵的迹的计算以及PCA算法推导8 幂等矩阵(idempotent matrix)9 Von Neumanns 迹不等式 [w…...

NS4861 单灯指示独立耳锂电池充放电管理 IC

1 特性  最大 500mA 线性充电电流&#xff0c;外部可调节  内部预设 4.2V 充电浮充电压  支持 0V 电池充电激活  支持充满 / 再充功能  内置同步升压放电模块&#xff0c;输出电压 5.1V  同步升压 VOUT 最大输出电流 500mA  VOL/OR 独…...

编写可复用性的模块

在生活中&#xff0c;重复的机械劳动会消耗我们的时间和精力&#xff0c;提高生产成本&#xff0c;降低工作效率。同样&#xff0c;在代码世界中&#xff0c;编写重复的代码会导致代码的冗余&#xff0c;页面性能的下降以及后期维护成本的增加。由此可见将重复的事情复用起来是…...

2025年1月4日CSDN的Markdown编辑器

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…...

广域网连接PPP

广域网连接PPP PPP协议是一种应用广泛的点到点链路协议&#xff0c;主要用于点到点连接的路由器间的通信。PPP协议既可以用于同步通信&#xff0c;也可以用于异步通信&#xff0c;本部分只讨论同步接口上的PPP配置。 锐捷路由器的同步串行口默认封装Cisco HDLC&#xff0c;所…...

【pyqt】(四)Designer布局

布局 之前我们利用鼠标拖动的控件的时候&#xff0c;发现一些部件很难完成对齐这些工作&#xff0c;pyqt为我们提供的多种布局功能不仅可以让排版更加美观&#xff0c;还能够让界面自适应窗口大小的变化&#xff0c;使得布局美观合理。最常使用的三种布局就是垂直河子布局、水…...

【从零开始入门unity游戏开发之——C#篇40】C#特性(Attributes)和自定义特性

文章目录 前言一、特性&#xff08;Attributes&#xff09;基本概念二、自定义特性1、自定义特性代码示例&#xff1a;2、应用自定义特性&#xff1a;3、解释3.1 **AttributeUsage 特性**3.2 特性的命名3.3 **构造函数**&#xff1a;3.4 **属性**&#xff1a; 4、使用反射获取特…...

DES密码的安全性分析(简化版本)

DES仍是世界上使用最广的&#xff08;DES发行后20年&#xff0c;互联网的兴起&#xff0c;人们开始觉得DES不安全了&#xff0c;但DES的实现成本也越来越低&#xff09; 宏观分析&#xff1a; 密钥空间方面&#xff1a; 密钥长度&#xff1a;DES 算法使用 56 位的密钥对数据…...

引入三方jar包命令

mvn install:install-file \ -Dfile本地磁盘路径 \ -DgroupId组织名称 \ -DartifactId项目名称 \ -Dversion版本号 \ -Dpackagingjar 例如 假设你的 JAR 文件路径是 /home/user/common-pojo-1.0-SNAPSHOT.jar&#xff0c;组织名称是 com.example&#xff0c;项目名…...

机器学习基础-机器学习的常用学习方法

半监督学习的概念 少量有标签样本和大量有标签样本进行学习&#xff1b;这种方法旨在利用未标注数据中的结构信息来提高模型性能&#xff0c;尤其是在标注数据获取成本高昂或困难的情况下。 规则学习的概念 基本概念 机器学习里的规则 若......则...... 解释&#xff1a;如果…...

在控制领域中如何区分有效性、优越性、稳定性和鲁棒性?

在控制领域中&#xff0c;区分有效性、优越性、稳定性和鲁棒性可以通过具体的控制器设计实例来更好地理解。以下以经典的质量-弹簧-阻尼系统的PID控制器设计为例&#xff0c;展示如何区分这四个性能指标。 经典质量-弹簧-阻尼系统的PID控制器设计 质量-弹簧-阻尼系统模型 考…...

美国宏观经济基础框架梳理

玩转币圈和美股&#xff0c;最关键的是理解美国宏观经济。以下是核心逻辑&#xff1a;美国经济数据→政策调整→资金流动→资产价格变化。掌握这些因素的关系&#xff0c;才能在市场中立于不败之地。 一、核心变量及其意义 1. GDP&#xff08;国内生产总值&#xff09; • …...

装饰器模式详解

装饰器模式&#xff08;Decorator Pattern&#xff09;是一种设计模式&#xff0c;属于结构型模式之一。它允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其结构。这种模式创建了一个装饰类&#xff0c;用来包装原有类的一个实例&#xff0c;从而扩展该实例的功能。…...

[最新] SIM卡取出后还能找到我的iPhone吗?

您是否曾在任何地方丢失过 SIM 卡&#xff1f;或者您是否已移除 SIM 卡&#xff0c;现在无法在任何地方找到您的 iPhone&#xff1f;在这篇博客中&#xff0c;您将了解即使 SIM 卡被移除&#xff0c;“查找我的 iPhone”也能正常工作。 在某些情况下&#xff0c;您必须取出 SIM…...

数据分析思维(六):分析方法——相关分析方法

数据分析并非只是简单的数据分析工具三板斧——Excel、SQL、Python&#xff0c;更重要的是数据分析思维。没有数据分析思维和业务知识&#xff0c;就算拿到一堆数据&#xff0c;也不知道如何下手。 推荐书本《数据分析思维——分析方法和业务知识》&#xff0c;本文内容就是提取…...