LLM大模型中的基础数学工具——数值逼近

Q37: 分析泰勒展开 f(x)≈f(a)+f′(a)(x−a) 的截断误差上界

泰勒展开与截断误差是啥?
泰勒展开是用多项式近似表示函数的方法,一阶泰勒展开 f(x)≈f(a)+f′(a)(x−a) 用线性项近似原函数。但它忽略了高阶项,这些被忽略的部分就是截断误差。从几何角度看,这相当于用函数在 a 点的切线近似函数曲线,曲线与切线的偏差就是误差。

分析推导过程
根据泰勒定理,若 f(x) 在包含 a 的区间内二阶可导,则 f(x) = f(a) + f'(a)(x - a) + \frac{f''(\xi)}{2!}(x - a)^2\xi 介于 a 与 x 之间)。截断误差 R_1(x) = \frac{f''(\xi)}{2}(x - a)^2。若能确定  |f''(\xi)| 在区间 [a,x] 上的最大值 M,则误差上界为 |R_1(x)| \leq \frac{M}{2}(x - a)^2。例如,对于 f(x) = e^xf''(x) = e^x,在区间 [0,x] 上 M = e^x
,因此误差上界为 \frac{e^x}{2}x^2

在 LLM 中的使用

  • 激活函数的快速近似:LLM 中激活函数(如 GELU、Swish)计算复杂,推理时可用泰勒展开加速。例如,对 GELU(x) 在某点 a 附近用 f(x) \approx f(a) + f'(a)(x - a)  近似,通过误差上界评估精度损失,在速度与精度间平衡。
  • 模型量化中的函数逼近:量化时需将高精度激活值映射到低精度。如用泰勒展开近似非线性变换,根据误差上界调整参数,确保量化误差不显著影响模型性能。
  • 参数调试的快速估算:调试 LLM 时,临时修改某层参数,可用泰勒展开预估输出变化。通过误差上界判断是否需进一步精细计算,提升调试效率。

代码示例

import math  
import numpy as np  

def f(x):  
    return math.exp(x)  
def taylor_approx(x, a):  
    return f(a) + f'(a) * (x - a)  
f_prime = lambda x: math.exp(x)  # \( f'(x) = e^x \)  

x = 0.5  
a = 0  
approx = taylor_approx(x, a)  
actual = f(x)  
error = actual - approx  

M = math.exp(x)  # \( f''(x) = e^x \) 在 \([0, x]\) 的最大值  
upper_bound = (M / 2) * (x - a) ** 2  

print(f"真实值: {actual:.6f}, 近似值: {approx:.6f}, 实际误差: {error:.6f}")  
print(f"误差上界: {upper_bound:.6f}")  

代码解释:以 f(x) = e^x  为例,在 a=0 处一阶泰勒展开为 1+x。计算 x=0.5 时,真实值 e^{0.5}\approx 1.648721,近似值 1.5,实际误差 0.148721。根据 {f}''(x)=e^x,误差上界为 \frac{e^{0.5}}{2} \times 0.5^2 \approx 0.412180,实际误差小于上界,验证了分析的合理性。


Q38: 推导数值积分(如梯形法)的误差项 E=-\frac{(b-a)^3}{12n^ 2} {f}''(\xi )

梯形法与误差项是啥?
梯形法是用梯形面积近似积分 \int_{a}^{b}f(x)dx 的方法。将区间 [a,b] 分成 n 段,每段宽 h = \frac{b - a}{n}​,用梯形面积之和近似积分。误差项 E = -\frac{(b - a)^3}{12n^2}f''(\xi)描述了这种近似与真实积分的差距,反映了区间长度、分段数和函数二阶导数对误差的影响。

分析推导过程
将区间 [a,b] 分为 n 个小区间 [x_i, x_{i+1}],对每个小区间,真实积分\int_{x_i}^{x_{i+1}} f(x)dx 与梯形近似 \frac{h}{2}[f(x_i) + f(x_{i+1})]的误差为 E_i。利用泰勒展开 f(x) = f(x_i) + f'(x_i)(x - x_i) + \frac{f''(\xi)}{2}(x - x_i)^2(ξ 介于 x_i 与 x 之间),对展开式积分后减去梯形近似,可得 E_i =-\frac{h^3}{12h}{f}''(\xi_i)。对 n 个小区间求和,利用介值定理(存在 ξ 使 \sum_{i=1}^n f''(\xi_i) = n f''(\xi)),总误差 E = -\frac{(b - a)^3}{12n^2}f''(\xi)

在 LLM 中的使用

  • 注意力权重的积分计算:在连续空间注意力模型中,计算注意力权重\int p(x)dx 时,若解析解难以获取,可用梯形法近似。通过误差项公式调整 n,如处理长文本时,根据 f′′(x) 增大 n,确保注意力计算精度。
  • 归一化常数的近似计算:训练生成模型(如 VAE)时,计算归一化常数\int p(x)dx可用梯形法。例如,在图像生成模型中近似高维分布积分,根据误差项控制 n,平衡计算量与精度。
  • 动态计算资源分配:根据输入文本长度动态调整 n。短文本用较小 n(快速计算),长文本用较大 n(保证精度),利用误差项公式指导 n 的选择,优化计算资源。

代码示例

import numpy as np  

def trapezoidal_rule(f, a, b, n):  
    h = (b - a) / n  
    x = np.linspace(a, b, n + 1)  
    y = f(x)  
    integral = (h / 2) * (y[0] + 2 * np.sum(y[1:n]) + y[n])  
    return integral  

def f(x):  
    return np.exp(x)  
def f_second_deriv(x):  
    return np.exp(x)  

a, b = 0, 1  
n = 10  
approx_integral = trapezoidal_rule(f, a, b, n)  
actual_integral = np.exp(1) - np.exp(0)  # \( \int_0^1 e^x dx = e - 1 \)  
error = actual_integral - approx_integral  

# 假设 \( \xi = 0.5 \) 计算理论误差项  
theoretical_error = -((b - a) ** 3 / (12 * n ** 2)) * f_second_deriv(0.5)  

print(f"近似积分: {approx_integral:.6f}, 真实积分: {actual_integral:.6f}, 实际误差: {error:.6f}")  
print(f"理论误差项: {theoretical_error:.6f}")  

代码解释:用梯形法计算 \int_{0}^{1} e^x dx,n=10 时近似积分约为 1.727272,真实积分 e−1≈1.718282,实际误差 0.008990。假设 ξ=0.5,理论误差项为 -\frac{1^3}{12 \times 10^2} \times e^{0.5} \approx -0.007358(取绝对值后与实际误差量级一致),验证了梯形法误差项的推导与应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值