在计算机中,加法运算比乘法运算快很多,所以在估计计算量的时候我们主要计算要做多少次乘法。
在神经网络中,主要的运算是矩阵乘法。矩阵乘法的计算量是这样计算的:
一个
的矩阵乘以一个
的矩阵要做
次乘法,所以
就是两个矩阵相乘的计算量了。若
为主导变量,则其复杂度为
;同理, 若
为主导变量,则其复杂度为
。
这就是我们计算神经网络复杂度的依据。
【举个例子】
计算某两层网络 的复杂度?
假设矩阵 是
的,
是
的,
是
的。
所以第一层是 的矩阵乘以
的矩阵,得到一个
的矩阵,计算量为
;第二层就是
的矩阵乘以
的矩阵,得到一个
的矩阵,计算量为
。(其中激活函数和加法运算的计算量忽略不计)
所以总的计算量是:
若n足够大,其复杂度为,若d足够大,则复杂度为
。
【参考文章】
《线性Transformer应该不是你要等的那个模型》中的“评估计算量”(强烈建议对Transformer感兴趣的同学读一下这篇文章)