LLM大模型中的基础数学工具——张量运算

Q5:定义张量缩并(Tensor Contraction)并推导其梯度计算(如 C_{ij}=A_{ikl}B_{jkl}

张量缩并到底是啥

张量这东西,你就把它当作一种超厉害的数组,能用来表示各种各样维度的数据。比如说,单独一个数,像 5,这就是 0 - 阶张量,也就是我们平常说的标量;要是一条有方向、有长度的线,用数组 [2, 3] 这样表示出来,这就是 1 - 阶张量,也就是向量;一个像表格一样的数据,比如 [[1, 2], [3, 4]] ,这就是 2 - 阶张量,也就是矩阵。而更高阶的张量呢,能表示更为复杂的多维数据。

张量缩并,简单来讲,就是对张量进行的一种操作,核心就是把张量的某些指标加起来,这样就能让张量的阶数降低。就拿C_{ij}=A_{ikl}B_{jkl}这个式子来说,这里的 A 和 B 都是 3 - 阶张量。这意味着 A的数据结构是三维的,有 i、k、l这三个维度的指标,B也是如此。我们要得到 C 这个张量,就得对 A 和 B 里的 k 和 l 这两个指标进行求和。具体的计算过程是 C_{ij}=\sum_{k = 1}^{n}\sum_{l = 1}^{p}A_{ikl}B_{jkl}。你看,经过这么一操作,原本 3 - 阶的 A 和 B ,就得到了一个 2 - 阶的 C 张量。

梯度计算是怎么推导的

现在来讲讲怎么算 C_{ij} 关于 A_{ikl}B_{jkl} 的梯度,这和我们学过的多元函数求导思路差不多。

  • \frac{\partial C_{ij}}{\partial A_{mnq}}

C_{ij} 的计算公式 C_{ij}=\sum_{k = 1}^{n}\sum_{l = 1}^{p}A_{ikl}B_{jkl}。当 m = i , n = k , q = l 时,在求导过程中,只有 A_{mnq} 这一项和 A_{ikl} 有关,其他项都能当作常数。我们把这个求和式子展开来看,\sum_{k = 1}^{n}\sum_{l = 1}^{p}A_{ikl}B_{jkl}=A_{i11}B_{j11}+A_{i12}B_{j12}+\cdots+A_{in p}B_{jn p} 。当求导变量 A_{mnq}A_{ikl}指标对应相等时,比如 m = i , n = k , q = l ,此时 A_{mnq} 对应的就是 A_{ikl},那么对 C_{ij} 关于 A_{mnq} 求导,就相当于对 A_{mnq}B_{jmn} 这一项求导(因为其他项不含 A_{mnq},求导为 0)。根据求导公式(uv)^\prime = u^\prime v + uv^\prime ,这里u = A_{mnq}v = B_{jmn}u^\prime = 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨顿

唵嘛呢叭咪吽

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值