一、时间复杂度:
Transformers
模型的时间复杂度主要取决于输入序列的长度N和模型中隐藏层的数量H
。对于一个具有L
个层的Transformer
模型,其时间复杂度为O(LN^2H)
,其中 N ^2
来自于注意力机制的计算。因此,对于较长的输入序列和更深的模型,Transformer
的时间复杂度可能会非常高。
这里表示算法的时间复杂度是O(LN ^ 2H)
,其中L
、N
、H
是三个参数。在这个算法中,输入的规模为L
,每个输入的处理需要O(N ^ 2)
的时间,一共要进行H
次处理。因此,总的时间复杂度就是O(LN^2H)
。
也可以这么理解:H
代表Transformer
中多头注意力机制的数量。N
代表输入序列的时间步长,也就是序列的长度。L
代表每个批次(batch
)中输入序列的数量。
注意:
不是 LN的2H次方
O(LN^ 2H)
表示算法的时间复杂度在数量级上不超过LN^ 2H
。具体来说,当输入规模为L
时,最坏情况下算法的时间复杂度与N^2
和H
都有关系,而且这三者之间的关系是乘积关系。因此,如果你让L
、N
或者H中的任何一个数增加一倍,那么总的时间复杂度就会增加至少两倍。所以O(LN ^2H)
并不能简单地表示成LN
的2H
次方。
该怎么读呢?
LN^2H
这个符号在英文中通常被称为Big O Notation
,可以读作"big O of L times N squared times H"
。其中,“big O”
表示复杂度的上界,L
、N
、H
分别表示三个影响复杂度的因素,用“times”
表示相乘的意思。如果需要将其翻译成中文,可以说“时间复杂度为L
乘以N
的平方乘以H
”。
二、减少计算复杂度方法
为了解决这个问题,研究人员和工程师们已经提出了许多优化Transformer模型的技术,例如使用稀疏注意力、分层注意力等方法。
稀疏注意力和分层注意力是Transformer模型中的两种优化技术。它们都旨在减少Transformer模型中计算复杂度,提高模型效率。
- 稀疏注意力
稀疏注意力(Sparse Attention)是一种通过限制每个位置只与相邻位置进行注意力交互的注意力机制。传统的自注意力机制会对输入序列中的所有位置进行注意力计算,这会导致计算复杂度较高,并且不利于模型的扩展性。而稀疏注意力将注意力机制限定在一个固定范围内,比如只考虑当前位置前后若干个位置的信息。这样能够大大降低计算复杂度,同时保证了模型的表现力。 - 分层注意力
分层注意力(Hierarchical Attention)是一种通过将注意力机制应用到多个层级上,在不同层级上对输入序列进行建模的方法。具体来说,它将原始输入序列划分为多个子序列,然后在各个子序列上分别计算注意力。最终得到每个子序列的表示向量后,再进行汇总得到整个输入序列的表示向量。这种方法能够充分利用输入序列的层次结构,提高模型的表现力。同时,由于每个子序列的长度相对较短,计算复杂度也会得到一定程度上的降低。