我正在研究 NLP,我正在使用 RNN(循环神经网络)或 CNN(卷积神经网络)将句子编码为向量。使用 CNN 时,训练时间明显小于 RNN。我很自然地认为 CNN 比 RNN 更快,因为它没有建立每个时间步的隐藏向量之间的关系,因此前馈和反向传播所需的时间更少。但是,最近有人问了这个问题,我没有任何证据支持我的直觉。
有没有比较 CNN 和 RNN 的速度的证据或结果,尤其是在 NLP 任务上?
我正在研究 NLP,我正在使用 RNN(循环神经网络)或 CNN(卷积神经网络)将句子编码为向量。使用 CNN 时,训练时间明显小于 RNN。我很自然地认为 CNN 比 RNN 更快,因为它没有建立每个时间步的隐藏向量之间的关系,因此前馈和反向传播所需的时间更少。但是,最近有人问了这个问题,我没有任何证据支持我的直觉。
有没有比较 CNN 和 RNN 的速度的证据或结果,尤其是在 NLP 任务上?
我使用 CNN 和 RNN(特别是 LSTM 和 GRU)完成了一些关于文本分类和关系提取的项目:CNN 往往比 RNN 快得多(快 5 倍)。
很难进行公平的比较:
Nvidia 历来更关注 CNN,而不是 RNN,因为计算机视觉主要使用 CNN。
一个基准:https ://github.com/baidu-research/DeepBench
供参考:
正如 Franck Dernoncourt 所说,答案取决于您的模型。CNN 和 RNN 是不同的架构,使用方式不同,通常用于不同的目的。在不更改模型的其他元素来比较性能的情况下,您无法真正一个一个地替换。
然而,CNN 的设计速度更快,因为 CNN 中的计算可以并行发生(同一滤波器同时应用于图像的多个位置),而 RNN 需要按顺序处理,因为后续步骤取决于前面的步骤。这就是Bradbury 等人 (2016)引入准循环神经网络的原因,该网络使用一些 CNN 组件来模仿 RNN,同时加快它们的速度。