self-attention和rnn计算复杂度的对比

本文详细比较了Self-Attention在Attention机制中,由于矩阵运算导致的O(n^2d)复杂度,与RNN中因递归结构带来的O(nd^2)复杂度。重点展示了两者在处理序列数据时效率的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Attention is all you need论文中的实验分析部分罗列了self-attention和rnn的复杂度对比,特此记录一下自己对二者复杂度的分析。
在这里插入图片描述

注意:n表示序列长度,d表示向量维度。
1、self-attention的复杂度为O(n2⋅d)O(n^{2} \cdot d)O(n2d),其来源自self-attention计算公式:
Attention(Q,K,V)=Softmax(QKTdk)VAttention(Q,K,V)=Softmax(\frac{QK^{T}}{\sqrt{d_{k}}})VAttention(Q,K,V)=Softmax(dkQKT)V
其中,Q、K、V∈Rn×dQ、K、V\in \mathbb{R}^{n \times d}QKVRn×d
QKTQK^{T}QKT是两个矩阵的乘法[n,d]×[d,n]=[n,n][n,d] \times [d,n]=[n,n][n,d]×[d,n]=[n,n],计算复杂度为n2⋅dn^{2} \cdot dn2d
其结果再乘VVV,即[n,n]×[n,d]=[n,d][n,n] \times [n,d]=[n,d][n,n]×[n,d]=[n,d],计算复杂度也为n2⋅dn^{2} \cdot dn2d

2、RNN的复杂度为O(n⋅d2)O(n \cdot d^{2})O(nd2),其来源自计算公式:
ht=f(Wxhxt+bxh+Whhht−1+bhh)h_{t}=f(W_{xh}x_{t}+b_{xh}+W_{hh}h_{t-1}+b_{hh})ht=f(Wxhxt+bxh+Whhht1+bhh) yt=g(Whyht+bht)y_{t}=g(W_{hy}h_{t}+b_{ht})yt=g(Whyht+bht)
Wxh∈Remb×dW_{xh}\in \mathbb{R}^{emb \times d}WxhRemb×dWhh∈Rd×dW_{hh}\in \mathbb{R}^{d \times d}WhhRd×d
Whhht−1W_{hh}h_{t-1}Whhht1来看,虽然WhhW_{hh}Whh在前边,但是做矩阵乘法的时候是 ht−1×WhhTh_{t-1} \times W_{hh}^{T}ht1×WhhT,即[1,d]×[d,d]=[1,d][1,d] \times [d,d]=[1,d][1,d]×[d,d]=[1,d],计算复杂度为d⋅dd \cdot ddd
以上是一个输入的计算复杂度,n个输入的计算复杂度为n⋅d2n \cdot d^{2}nd2

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值