大语言模型---通过数值梯度的方式计算损失值L对模型权重矩阵W的梯度;数值梯度的公式;数值梯度计算过程

news/2024/11/24 5:01:12/

文章目录

  • 概要
  • 1. 数值梯度的公式
  • 2. 数值梯度计算过程
  • 3. 数值梯度的特点

概要

前文已经简单介绍梯度,本文主要介绍大语言模型中使用数值梯度的方法实现 损失值 L L L 对模型权重矩阵的梯度计算,而不是传统的链式法则进行梯度计算。如果想要理解整体计算方式,先明白损失值 L L L的计算方式,通过公式了解其和权重矩阵 W V W_V WV的关系。然后再理解损失值 L L L对权重矩阵 W V W_V WV的梯度计算。

1. 数值梯度的公式

数值梯度通过有限差分法近似计算梯度,对权重矩阵 W V W_V WV 中每个元素的梯度 ∂ L ∂ W V i j \frac{\partial L}{\partial W_{V_{ij}}} WVijL
∇ L W V i j = L p l u s − L c u r r e n t h \nabla L_{W_{V_{ij}}} = \frac{L_{plus}-L_{current}}{h} LWVij=hLplusLcurrent

其中,每个参数的含义在下文中有讲解。

2. 数值梯度计算过程

(1) 初始化

  • 给定权重矩阵 W V ∈ F m × n W_V \in \mathbb{F}^{m \times n} WVFm×n,与 W V W_V WV大小相同的梯度矩阵 ∇ L W V = zeros ( m , n ) \nabla L_{W_V} = \text{zeros}(m, n) LWV=zeros(m,n)
  • 确定增量 h h h 的值(如 h = 1 0 − 5 h=10^{−5} h=105)。

(2) 遍历权重矩阵的每个元素
对于 W V W_V WV中的每个元素 W V i j W_{V_{ij}} WVij

  1. 创建一个单位矩阵 E i j E_{ij} Eij,大小与 W V W_V WV相同,且 E i j = 1 E_{ij}=1 Eij=1
  2. 计算损失值:
  • L p l u s = L ( W v + h ∗ E i j ) L_{plus}=L(W_v+h*E_{ij}) Lplus=L(Wv+hEij)
    • W V W_V WV的第 ( i , j ) (i,j) (i,j) 元素增加一个微小值 h h h,得到新的权重矩阵,然后计算损失值 L p l u s L_{plus} Lplus.
  • L c u r r e n t = L ( W v ) L_{current}=L(W_v) Lcurrent=L(Wv):
    • 使用当前的权重矩阵 W V W_V WV计算损失值 L c u r r e n t L_{current} Lcurrent

(3) 梯度估算
通过有限差分公式,计算第 $(i,j) $元素的梯度:
∇ L W V i j = L p l u s − L c u r r e n t h \nabla L_{W_{V_{ij}}} = \frac{L_{plus}-L_{current}}{h} LWVij=hLplusLcurrent
这个公式的含义是:通过观察 W V i j W_{V_{ij}} WVij 增加 h h h 后损失函数的变化,我们可以估算出损失函数对该参数的敏感程度(梯度)。

3. 数值梯度的特点

优点:

  • 简单直观:无需解析推导梯度公式,直接利用损失函数计算。
  • 适合验证解析梯度:可以作为解析梯度的参考标准,用于检测实现是否正确。

缺点:

  1. 计算效率低
  • 对于权重矩阵 W V ∈ F m × n W_V \in \mathbb{F}^{m \times n} WVFm×n,需要计算 m×n 次损失。
  • 如果网络规模较大,数值梯度的计算会非常耗时。
  1. 数值误差:
  • 梯度近似的精度取决于 h h h 的选择。
  • h h h 太大会导致误差较大, h h h 太小可能引入浮点数精度问题。

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

相关文章

Springboot之登录模块探索(含Token,验证码,网络安全等知识)

简介 登录模块很简单,前端发送账号密码的表单,后端接收验证后即可~ 淦!可是我想多了,于是有了以下几个问题(里面还包含网络安全问题): 1.登录时的验证码 2.自动登录的实现 3.怎么维护前后端…

Linux第95步_Linux内核中的INPUT子系统

Linux内核对“按键、鼠标、键盘、触摸屏”等这一类输入设备而创建的“框架”被称为“input子系统”,它们在本质上还是字符设备,只是采用input子系统处理输入事件,并上报给用户。前面讲的“pinctrl子系统和gpio子系统”主要用于GPIO驱动开发&a…

《Python制作动态爱心粒子特效》

一、实现思路 粒子效果: – 使用Pygame模拟粒子运动,粒子会以爱心的轨迹分布并运动。爱心公式: 爱心的数学公式: x16sin 3 (t),y13cos(t)−5cos(2t)−2cos(3t)−cos(4t) 参数 t t 的范围决定爱心形状。 动态效果: 粒子…

2024/11/18学习日志

为了更好地记录并反思自己的学习状况,将每日学习的内容、时长、心得等记录于此日志。 于9月3日开始记录,计划每日记录,希望至少能够坚持一个学期。 学习内容: 大物: 尺缩效应m的变化相对论框架下的能量 计数&#…

C#调用JAVA

参考教程:使用IKVMC转换Jar为dll动态库(含idea打包jar方法)-CSDN博客 已经实践过,好使。

【Android、IOS、Flutter、鸿蒙、ReactNative 】实现 MVP 架构

Android Studio 版本 Android Java MVP 模式 参考 模型层 model public class User {private String email;private String password;public User(String email, String password) {this.email = email;this.password = password;}public String getEmail() {return email;}…

Zabbix:使用CentOS 9,基于LNMP平台,源码部署Zabbix 7。

ZBX:源码部署Zabbix 7 一、Zabbix概述1. 什么是zabbix2. 为什么学习zabbix3. 逻辑架构3. 实验环境4. 软件下载: 二、安装前的系统准备工作1. 配置主机名2. 关闭防火墙3. 关闭selinux4. 配置yum源5. 配置时钟同步6. 优化系统限制7. 安装JDK 三、部署LNMP环…

el-table-column自动生成序号在序号前插入图标

实现效果&#xff1a; 代码如下&#xff1a; 在el-table里加入这个就可以了&#xff0c;需要拿到值可以用scope.$index ​​​​​​​<el-table-column type"index" label"序号" show-overflow-tooltip"true" min-width"40">…