基础数学:线性代数与优化理论

本篇文章简单带您复习线性代数与优化理论(主要是我发表的文章中涉及过的或相关联的) 

微积分和概率与统计由此进:基础数学:微积分和概率与统计-CSDN博客

图论与信息论由此进:基础数学:图论与信息论-CSDN博客

数值分析与离散数学由此进:基础数学:数值分析与离散数学-CSDN博客

二、线性代数

1.矩阵运算

(1) 基础操作与几何意义

  • 矩阵乘法:

        定义:若 A\in R^{m\times n},B\in R^{n\times p},则乘积 C=AB\in R^{m\times p} 的元素为:

                C_{ij}=\sum_{k=1}^{n}A_{ik}B_{kj}

        几何解释:矩阵乘法表示线性变换的组合。例如,旋转矩阵 R 和平移矩阵 T 的组合变换为 RT

        在注意力机制中,Query矩阵 Q 与Key矩阵 K^{T} 相乘,计算相似度得分(即注意力权重)

        示例:设 Q=\begin{bmatrix} 1 & 2\\ 3&4 \end{bmatrix}K=\begin{bmatrix} 5 & 6\\ 7&8 \end{bmatrix},则:

                QK^{T}=\begin{bmatrix} 1\cdot 5+2\cdot 7 & 1\cdot 6+2\cdot 8\\ 3\cdot 5+4\cdot 7&3\cdot 6+4\cdot 8 \end{bmatrix}=\begin{bmatrix} 19 &22 \\ 43 &50 \end{bmatrix}

  • 矩阵转置:

        定义:(A^{T})_{ij}=A_{ji}

        性质:(AB)^{T}=B^{T}A^{T}

        对称矩阵满足 A=A^{T}

  • 逆矩阵:

        定义:若存在矩阵 A^{-1},使得 AA^{-1}=1,则 A 可逆

        存在条件:det(A)\neq 0

(2) 矩阵分解

  • 奇异值分解(SVD):

        定义:任意矩阵 A\in R^{m\times n} 可分解为:

                A=U\Sigma V^{T}

        其中 U\in R^{m\times m} 和 V\in R^{m\times n} 是正交矩阵,\Sigma \in R^{m\times n} 是对角矩阵(奇异值 \sigma _{1}\geq \sigma _{2}\geq ...\geq 0

        几何意义:SVD将矩阵分解为旋转-缩放-旋转操作,奇异值表示缩放因子

        应用:

                降维:保留前 k 个奇异值,近似矩阵 A\approx U_{:,1:k}\Sigma _{1:k,1:k}V^{T}_{:,1:k^{\cdot }}

                量化压缩:通过低秩近似减少参数存储(如LLM.int8()中的权重压缩)

  • QR分解:

        定义:将矩阵 A\in R^{m\times n} 分解为正交矩阵 Q 和上三角矩阵 R,即 A=QR

        数值稳定性:QR分解常用于求解线性方程组 Ax=b,避免直接求逆的数值不稳定问题

  • 特征值分解(EVD):

        定义:对方阵 A\in R^{n\times m},若存在标量 \lambda 和非零向量 v,满足 Av=\lambda v,则 \lambda 为特征值,v 为特征向量

        应用:

                主成分分析(PCA):通过协方差矩阵的特征值分解降维

                矩阵幂的计算:A^{k}=V\Lambda ^{k}V^{-1}

(3) 张量与高阶运算

  • 张量的定义:

        张量是多维数组的泛化,阶数(维度)成为张量的秩。例如:

                标量:0阶张量

                向量:1阶张量

                矩阵:2阶张量

                三维数组:3阶张量

  • Einstein求和约定(einsum):

        规则:通过下标标记维度,自动求和重复索引

        示例:计算矩阵乘法 C_{ij}=\sum_{k}^{}A_{ik}B_{kj} 可表示为 einsum("ik,kj\rightarrow ij",A,B)

  • 张量压缩与分块:

        Tucker分解:高阶SVD,将张量分解为核心张量与多个因子矩阵的乘积

        应用:减少 Transformer 模型中的计算量(如将大矩阵分块适配GPU内存)

2.数值表示

(1) 浮点数与定点数

  • IEEE 754浮点数标准:

        单精度(float32):1位符号位,8位指数位,23位尾数位

        半精度(float16):1位符号位,5位指数位,10位尾数位

        动态范围:浮点数的表示范围由指数位决定,例如float16的范围约为 \pm 6.55 \times 10^{4}

  • 定点数表示:

        定义:固定小数位数,例如8位整数部分和8位小数部分

        量化公式:将浮点数 x 映射到整数 q

                q=round(x\cdot S)

        其中 S=2^{frac\underline{\hspace{0.1cm}}bits} 是缩放因子

        反量化:

                x_{dequant}=q/S

(2) 稀疏性与压缩存储

  • 稀疏矩阵存储格式:

        CSR(Compressed Sparse Row):存储非零元素的值、列索引和行偏移指针

        示例:矩阵 A=\begin{bmatrix} 5 & 0 & 0\\ 0 & 8 & 0\\ 0 & 0 & 3 \end{bmatrix} 的CSR表示为:

                values = [5, 8, 3]

                col_indices = [0, 1, 2]

                row_ptr = [0, 1, 2, 3]

        CSC(Compressed Sparse Column):类似CSR,但按列压缩存储

  • 块稀疏:

        定义:将稀疏矩阵划分为固定大小的块,仅存储非零块

        优势:提升GPU内存访问效率(连续内存读取)、加速矩阵乘法          

3.应用场景

(1) 注意力机制中的矩阵运算:从理论到实践:Pytorch实现注意力机制到Triton优化-CSDN博客

(2) absmax量化步骤:从理论到实践:absmax、zeropoint和LLM.int8()在gpt-2的应用-CSDN博客

(3)  Triton优化中的分块策略:从理论到实践:Pytorch实现注意力机制到Triton优化-CSDN博客

4.核心公式总结

矩阵乘法:C_{ij}=\sum_{k=1}^{n}A_{ik}B_{kj}

奇异值分解(SVD):A=U\Sigma V^{T}

QR分解:A=QR

特征值分解(EVD):满足 Av=\lambda v​,则 \lambda​ 为特征值,v​ 为特征向量

矩阵幂计算:A^{k}=V\Lambda ^{k}V^{-1}

注意力权重:softmax(\frac{QK^{t}}{\sqrt{d}})

三、优化理论

1.数值优化

(1) 梯度下降

  • 目标:最小化损失函数 \mathcal{L}(\theta)​,参数更新规则为:

        \theta_{t+1}=\theta_{t}-\eta \triangledown _{\theta} \mathcal{L}(\theta_{t})

        其中 \eta​ 是学习率,\triangledown _{\theta}\mathcal{L}​ 是梯度

  • 几何解释:梯度方向是函数上升最快的方向,负梯度方向是函数下降最快的方向
  • 示例:对二次函数 \mathcal{L}(\theta)=\theta^{2}​,梯度为 2\theta​,更新规则为 
  • 动量法:引入动量项 v_{t}​ 减少震荡,加速在平坦区域的收敛:

        v_{t+1}=\beta v_{t}+(1-\beta)\triangledown _{\theta}\mathcal{L}(\theta_{t})

        \theta_{t+1}=\theta_{t}-\eta v_{t+1}

(2) 随机梯度下降(SGD)

  • 小批量更新:每次从数据集中随机采样一个小批量 B​,计算梯度:

        \triangledown _{\theta }\mathcal{L}(\theta)\approx \frac{1}{B}\sum_{x\in B}^{}\triangledown _{\theta}\mathcal{L}(\theta;x)

  • 方差分析:小批量梯度是无偏估计,但方差为 O(1/\left | B \right |)

        权衡:批量越大,方差越小,但计算成本越高

(3) 约束优化

  • 拉格朗日乘数法:

        目标:最小化 f(x)​ 满足约束 g(x)=0

        构造拉格朗日函数:

                \mathcal{L}(x,\lambda)=f(x)+\lambda g(x)

        通过求解 \triangledown _{x}\mathcal{L}=0 和 \triangledown _{\lambda}\mathcal{L}=0 找到极值

  • 示例(量化约束):

        量化要求权重 W 限制在整数范围 [-k,k]

                \underset{W}{min}||W-Q(W)||^{2} \quad s.t. \quad Q(W)\in (-k,...,k)

        通过投影梯度下降迭代:

        1.更新参数:W'=W-\eta \triangledown \mathcal{L}

        2.投影到约束集:Q(W')=round(clip(W',-k,k))

(4) 凸优化 vs. 非凸优化

  • 凸函数定义:对任意 x,y 和 \lambda \in [0,1],满足:

        f(\lambda x+(1-\lambda)y)\leq \lambda f(x)+(1-\lambda)f(y)

        性质:凸函数的局部最小值即全局最小值

  • 非凸优化挑战:

        存在多个局部极小值(如神经网络损失函数)

        依赖初始化策略(如Xavier初始化)和优化器设计(如Adam)

2.应用场景

(1) 注意力机制中的优化问题

  • 计算瓶颈:标准注意力计算 softmax(QK^{T})V 需要 O(n^{2}) 时间和空间
  • FlashAttention优化:

        分块计算:将 Q,K,V 分块,逐块计算并累加结果。有 O(n^{2}) 从内存读写降至 O(n)

(2) 量化中的约束优化

  • 对称量化:约束缩放因子 s 和零点 Z

        \underset{s,Z}{min}||W-s(q-Z)||^{2} \quad s.t. \quad q\in \mathbb{Z}

        闭式解:

                s=\frac{max(|W|)}{2^{b-1}-1},Z=0

  • 非对称量化:允许零点偏移,适应非对称分布:

        s=\frac{max(W)-min(W)}{2^{b}-1},Z=round(\frac{-min(W)}{s})

(3) 模型训练中的自适应优化器

  • Adam优化器:结合动力与自适应学习率:

        m_t=\beta_1m_{t-1}+(1-\beta_1)g_t

        v_t=\beta_2v_{t-1}+(1-\beta_2)g_{t}^{2}

        \theta_{t+1}=\theta_t-\eta \frac{m_t}{\sqrt{v_{t}}+\epsilon }

        作用:自动调整参数的学习率,适应不同方向的梯度变化

3.核心公式总结

梯度下降:\theta_{t+1}=\theta_{t}-\eta \triangledown _{\theta} \mathcal{L}(\theta_{t})

动量法:v_{t+1}=\beta v_{t}+(1-\beta)\triangledown _{\theta}\mathcal{L}(\theta_{t})

拉格朗日函数:\mathcal{L}(x,\lambda)=f(x)+\lambda g(x)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/76953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java android持久化数据

1. SQLite 数据库(Android 内置) 1.1 创建数据库帮助类 public class DatabaseHelper extends SQLiteOpenHelper {private static final String DATABASE_NAME "MyDatabase.db";private static final int DATABASE_VERSION 1;// 表名和列名…

鸿蒙动画与交互设计:ArkUI 3D变换与手势事件详解

大家好,我是 V 哥。 在鸿蒙 NEXT 开发中,ArkUI 提供了丰富的 3D 变换和手势事件功能,可用于创建生动且交互性强的用户界面。下面详细介绍 ArkUI 的 3D 变换和手势事件,并给出相应的 ArkTS 案例代码。 1. ArkUI 3D 变换 ArkUI 支…

HTTP 和 HTTPS 协议的区别及使用场景

在互联网的世界里,HTTP 和 HTTPS 是我们经常接触到的两种网络协议,它们在数据传输、安全性等方面存在诸多差异,适用的场景也各有不同。​ 一、HTTP 和 HTTPS 的基本概念​ HTTP,即超文本传输协议(Hyper - Text Transfer Protocol),是一种用于分布式、协作式和超媒体信息…

【微服务管理】注册中心:分布式系统的基石

在分布式系统日益普及的当下,如何高效地管理众多服务实例成为关键问题。注册中心应运而生,它犹如分布式系统的 “指挥中枢”,承担着服务注册、发现等核心任务,为整个系统的稳定运行和高效协作提供坚实保障。本文将深入探讨注册中心…

高并发短信系统设计:基于SharingJDBC的分库分表、大数据同步与实时计算方案

高并发短信系统设计:基于SharingJDBC的分库分表、大数据同步与实时计算方案 一、概述 在当今互联网应用中,短信服务是极为重要的一环。面对每天发送2000万条短信的需求,我们需要一个能够处理海量数据(一年下来达到数千万亿级别&…

2025最新系统 Git 教程(七)(完结)

第4章 分布式Git 4.1 分布式 Git - 分布式工作流程 你现在拥有了一个远程 Git 版本库,能为所有开发者共享代码提供服务,在一个本地工作流程下,你也已经熟悉了基本 Git 命令。你现在可以学习如何利用 Git 提供的一些分布式工作流程了。 这一…

OpenCV 图像旋转

一、OpenCV 图像旋转介绍 在计算机视觉和图像处理领域,图像旋转是指将图像围绕某个中心点按照一定的角度进行转动。旋转操作会改变图像中像素的位置,从而得到新的图像布局。这一操作在很多场景中都有重要应用,比如文档矫正、目标检测时对图像…

<C#>在 .NET 开发中,依赖注入, 注册一个接口的多个实现

在 .NET 开发里,有时一个接口会有多个实现类,此时就需要向依赖注入容器注册多个实现。下面会详细介绍不同场景下如何注册多个实现,以及怎样从容器中解析这些实现。 1. 注册多个实现 在 .NET 中,依赖注入容器可以通过不同方式注册…

idea 保存格式化 但是不格式化 Xml

xml- 其他 - 保持空格勾选上 https://blog.csdn.net/m0_65724734/article/details/128378290?spm1001.2101.3001.6650.8&utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-9-128378290-blog-135147277.235%5Ev43%5Epc_blog_bo…

如何在C++中优雅地绘制图表

如何在C项目中优雅地绘制图表 matplotlibpreparematplotlibcpp.hpython3vs configuretest Gnuplotpreparegnuplotgnuplot-iostream.hboostvs configuretest MathGL 在C项目中,在进行一些数据分析时往往不够直观,若能借助图表进行分析可以达到事半功倍的效…

vue3使用keep-alive缓存组件与踩坑日记

目录 一.了解一下KeepAlive 二.使用keep-alive标签缓存组件 1.声明Home页面名称 三.在路由出口使用keep-alive标签 四.踩坑点1:可能需要配置路由(第三点完成后有效可忽略) 五.踩坑点2:没有找到正确的路由出口 一.了解一下Kee…

ros通信机制学习——latched持久化机制

点云的地图的发送逻辑中,我发现每次使用rostopic echo 时只会打印一次,然后就不会再打印了。并且rviz中也是始终都会显示的,这里面其实就是用到了latched持久话机制,可以接受这最后一次发布的消息。 我们通过一个具体的项目来学习…

力扣每日打卡 1922. 统计好数字的数目 (中等)

力扣 1922. 统计好数字的数目 中等 前言一、题目内容二、解题方法1. 暴力解法(会超时,此法不通)2. 快速幂运算3. 组合计数的思维逻辑分析组合计数的推导例子分析思维小结论 4.官方题解4.1 方法一:快速幂 三、快速幂运算快速幂运算…

如何使用通义灵码玩转Docker - AI助手提升开发效率

一、引言 Docker 作为一种流行的虚拟化技术,能够帮助开发者快速搭建所需的运行环境。然而,对于初学者来说,掌握 Docker 的基本概念和使用方法可能会遇到一些挑战。本文将介绍如何利用通义灵码这一智能编码助手,帮助你更高效地学习…

从一到无穷大 #45:InfluxDB MCP Server 构建:从工程实践到价值重构

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录 工程实践遇到的问题MCP Host选择开发流程 结果展现可能性展望工作生活带来的变化 MCP…

JAVA SDK通过proxy对接google: GCS/FCM

前言:因为国内调用google相关api需要通过代理访问(不想设置全局代理),所以在代理这里经常遇到问题,先说一下结论 GCS 需要设置全局代理或自定义代理选择器, FCM sdk admin 在初始化firebaseApp时是支持设置的。 GCS: 开始时尝试在…

【NLP】24. spaCy 教程:自然语言处理核心操作指南(进阶)

spaCy 中文教程:自然语言处理核心操作指南(进阶) 1. 识别文本中带有“百分号”的数字 import spacy# 创建一个空的英文语言模型 nlp spacy.blank("en")# 处理输入文本 doc nlp("In 1990, more than 60% of people in East…

关于香橙派OrangePi 5 Ultra 这个开源板子,开发Android

我下载了它资料中的开源Android13 系统SDK, 这个SDK连个git 都没有,把这种代码释放能称为开源吗?? 并且也就是说你买了这个板子,里面是没有任何关于RK3588的开发文档,如果你没玩过其他RK平台,估…

WHAT - React Portal 机制:将子组件渲染到 DOM 的指定节点

文章目录 适合场景基本语法示例:Modal 弹窗1. 创建一个简单的 Modal.tsx2. 在 App 中使用 为什么要用 Portal?TypeScript 中 Portal 类型定义? 适合场景 React Portal 是 React 提供的一种机制,让你可以将子组件渲染到 DOM 的指定…

数据结构---跳表

目录 一、跳表的概念 为什么要使用随机值来确定层高 二、跳表的分析 (1)查找过程 (2)性能分析 三、跳表的实现 四、与红黑树哈希表的对比 skiplist本质上也是一种查找结构,用于解决算法中的查找问题&#xff0c…