delphi中checkcombobox最大长度_Transformer/CNN/RNN的对比(时间复杂度,序列操作数,最大路径长度)...

本文对比了Transformer、CNN和RNN在计算效率、序列操作数和最大路径长度方面的特性。Self-Attention的时间复杂度为,而RNN需要串行完成序列操作,信息丢失严重。CNN和受限的Self-Attention具有较短的最大路径长度。
摘要由CSDN通过智能技术生成

e43374cf1af45e56e88f7ccb18c5ec47.png

AINLP 原创 · 作者 | redoragd

研究方向 | 自然语言处理


d981d22ff750648fc598ee05468d23c9.png

  • Maximum path lengths:序列中两个元素进行交互所需经过的最大路径长度

  • per-layer complexity:每层的时间复杂度

  • minimum number of sequential operations:最少需要的序列操作数

计算效率

一个形状为  e871a949-3931-eb11-8da9-e4434bdf6706.svg 的矩阵,与另一个形状为  e971a949-3931-eb11-8da9-e4434bdf6706.svg 的矩阵相乘,其运算复杂度来源于乘法操作的次数,时间复杂度为  ea71a949-3931-eb11-8da9-e4434bdf6706.svg

Self-Attention

eb71a949-3931-eb11-8da9-e4434bdf6706.svg

  • ed71a949-3931-eb11-8da9-e4434bdf6706.svg

  • 相似度计算 ee71a949-3931-eb11-8da9-e4434bdf6706.svg : f071a949-3931-eb11-8da9-e4434bdf6706.svg 与 f171a949-3931-eb11-8da9-e4434bdf6706.svg 运算,得到 f271a949-3931-eb11-8da9-e4434bdf6706.svg 矩阵,复杂度为 f371a949-3931-eb11-8da9-e4434bdf6706.svg

  • softmax计算:对每行做softmax,复杂度为 f471a949-3931-eb11-8da9-e4434bdf6706.svg ,则n行的复杂度为 f571a949-3931-eb11-8da9-e4434bdf6706.svg

  • 加权和: f271a949-3931-eb11-8da9-e4434bdf6706.svg 与 f071a949-3931-eb11-8da9-e4434bdf6706.svg 运算,得到 f071a949-3931-eb11-8da9-e4434bdf6706.svg 矩阵,复杂度为 f371a949-3931-eb11-8da9-e4434bdf6706.svg

故最后self-attention的时间复杂度为 f371a949-3931-eb11-8da9-e4434bdf6706.svg

对于受限的self-attention,每个元素仅能和周围 fb71a949-3931-eb11-8da9-e4434bdf6706.svg 个元素进行交互,即和 fb71a949-3931-eb11-8da9-e4434bdf6706.svg 个 fd71a949-3931-eb11-8da9-e4434bdf6706.svg 维向量做内积运算,复杂度为 fe71a949-3931-eb11-8da9-e4434bdf6706.svg ,则 0072a949-3931-eb11-8da9-e4434bdf6706.svg 个元素的总时间复杂度为 0172a949-3931-eb11-8da9-e4434bdf6706.svg

Multi-Head Attention

0272a949-3931-eb11-8da9-e4434bdf6706.svg

对于multi-head attention,假设有 0372a949-3931-eb11-8da9-e4434bdf6706.svg 个head,这里 0372a949-3931-eb11-8da9-e4434bdf6706.svg 是一个常数,对于每个head,首先需要把三个矩阵分别映射到 0572a949-3931-eb11-8da9-e4434bdf6706.svg 维度。这里考虑一种简化情况: 0672a949-3931-eb11-8da9-e4434bdf6706.svg 。(对于dot-attention计算方式, 0a72a949-3931-eb11-8da9-e4434bdf6706.svg 与 0b72a949-3931-eb11-8da9-e4434bdf6706.svg 可以不同)。

  • 输入线性映射的复杂度: f071a949-3931-eb11-8da9-e4434bdf6706.svg 与 0d72a949-3931-eb11-8da9-e4434bdf6706.svg 运算,忽略常系数,复杂度为 0e72a949-3931-eb11-8da9-e4434bdf6706.svg 。

  • Attention操作复杂度:主要在相似度计算及加权和的开销上, 0f72a949-3931-eb11-8da9-e4434bdf6706.svg 与 1172a949-3931-eb11-8da9-e4434bdf6706.svg 运算,复杂度为 f371a949-3931-eb11-8da9-e4434bdf6706.svg1372a949-3931-eb11-8da9-e4434bdf6706.svg

  • 输出线性映射的复杂度:concat操作拼起来形成 f071a949-3931-eb11-8da9-e4434bdf6706.svg 的矩阵,然后经过输出线性映射,保证输入输出相同,所以是 f071a949-3931-eb11-8da9-e4434bdf6706.svg 与 1672a949-3931-eb11-8da9-e4434bdf6706.svg 计算,复杂度为 0e72a949-3931-eb11-8da9-e4434bdf6706.svg

故最后的复杂度为: 1972a949-3931-eb11-8da9-e4434bdf6706.svg

注意:多头的计算并不是通过循环完成的,而是通过 transposes and reshapes,用矩阵乘法来完成的。假设有 0372a949-3931-eb11-8da9-e4434bdf6706.svg 个head,则新的representation dimension: 1d72a949-3931-eb11-8da9-e4434bdf6706.svg 。因为,我们将 f071a949-3931-eb11-8da9-e4434bdf6706.svg 的矩阵拆为 2072a949-3931-eb11-8da9-e4434bdf6706.svg 的张量,再利用转置操作转为 2372a949-3931-eb11-8da9-e4434bdf6706.svg 的张量。故 ee71a949-3931-eb11-8da9-e4434bdf6706.svg 的计算为: 2372a949-3931-eb11-8da9-e4434bdf6706.svg 与 2872a949-3931-eb11-8da9-e4434bdf6706.svg 做计算,得到 2972a949-3931-eb11-8da9-e4434bdf6706.svg 的张量,复杂度为 2b72a949-3931-eb11-8da9-e4434bdf6706.svg ,即 2e72a949-3931-eb11-8da9-e4434bdf6706.svg 。注意,此处 0372a949-3931-eb11-8da9-e4434bdf6706.svg 实际是一个常数,故 ee71a949-3931-eb11-8da9-e4434bdf6706.svg 复杂度为 f371a949-3931-eb11-8da9-e4434bdf6706.svg 。

Recurrent

3372a949-3931-eb11-8da9-e4434bdf6706.svg

  • 3472a949-3931-eb11-8da9-e4434bdf6706.svg : 3572a949-3931-eb11-8da9-e4434bdf6706.svg 与 3872a949-3931-eb11-8da9-e4434bdf6706.svg 运算,复杂度为 3a72a949-3931-eb11-8da9-e4434bdf6706.svg , 3b72a949-3931-eb11-8da9-e4434bdf6706.svg 为input size

  • 4072a949-3931-eb11-8da9-e4434bdf6706.svg : 1672a949-3931-eb11-8da9-e4434bdf6706.svg 与 4472a949-3931-eb11-8da9-e4434bdf6706.svg 运算,复杂度为 4672a949-3931-eb11-8da9-e4434bdf6706.svg

故一次操作的时间复杂度为 4672a949-3931-eb11-8da9-e4434bdf6706.svg , 0072a949-3931-eb11-8da9-e4434bdf6706.svg 次序列操作后的总时间复杂度为 0e72a949-3931-eb11-8da9-e4434bdf6706.svg

Convolution

注: 这里保证输入输出都是一样的,即均是  f071a949-3931-eb11-8da9-e4434bdf6706.svg
  • 为了保证输入和输出在第一个维度都相同,故需要对输入进行padding操作,因为这里kernel size为 4c72a949-3931-eb11-8da9-e4434bdf6706.svg ,(实际kernel的形状为 4e72a949-3931-eb11-8da9-e4434bdf6706.svg )如果不padding的话,那么输出的第一个维度为 4f72a949-3931-eb11-8da9-e4434bdf6706.svg ,因为这里stride是为1的。为了保证输入输出相同,则需要对序列的前后分别padding长度为 5072a949-3931-eb11-8da9-e4434bdf6706.svg 。

  • 大小为 4e72a949-3931-eb11-8da9-e4434bdf6706.svg 的卷积核一次运算的复杂度为: 5572a949-3931-eb11-8da9-e4434bdf6706.svg ,一共做了 0072a949-3931-eb11-8da9-e4434bdf6706.svg 次,故复杂度为 5872a949-3931-eb11-8da9-e4434bdf6706.svg

  • 为了保证第二个维度在第二个维度都相同,故需要 fd71a949-3931-eb11-8da9-e4434bdf6706.svg 个卷积核,所以卷积操作总的时间复杂度为 5a72a949-3931-eb11-8da9-e4434bdf6706.svg

序列操作数

  • 表明三种模型的并行程度:从计算方式上看,只有RNN才需要串行地完成 0072a949-3931-eb11-8da9-e4434bdf6706.svg 次序列操作,而self-attention和convolution的n次序列操作均可以并行完成。因为RNN还需要依赖于上一个时间步的隐藏层输出,而其他模型仅仅依赖于输入。

最大路径长度

1fd00ca44d16525fc5fddb25adbc2ce5.png
  • 最大路径长度即距离为 0072a949-3931-eb11-8da9-e4434bdf6706.svg 的两个结点传递信息所经历的路径长度,表征了存在长距离依赖的结点在传递信息时,信息丢失的程度,长度越长,两个节点之间越难交互,信息丢失越严重

  • RNN:长度为 0072a949-3931-eb11-8da9-e4434bdf6706.svg 的序列中,节点之间的最大路径长度为 0072a949-3931-eb11-8da9-e4434bdf6706.svg ,即 f471a949-3931-eb11-8da9-e4434bdf6706.svg 。第一个token的信息需要经过 0072a949-3931-eb11-8da9-e4434bdf6706.svg 次迭代才能传到最后一个时间步的状态中,信息丢失严重,很难建立节点间的长距离依赖。

  • CNN:通过convolution layer来捕捉局部依赖,扩大层数来扩大视野。对每个节点来说,能够“看到”的local context的大小取决于卷积核的大小和层数。在一个卷积核大小为 4c72a949-3931-eb11-8da9-e4434bdf6706.svg , 层数为 6772a949-3931-eb11-8da9-e4434bdf6706.svg 的CNN中,能看到最大的local context的大小为 6872a949-3931-eb11-8da9-e4434bdf6706.svg ,最大路径长度为 6a72a949-3931-eb11-8da9-e4434bdf6706.svg ,例如图(b)中是一个两层的卷积核大小为3的CNN,顶层节点能看到的最大local context为2*2+1=5个token的输入。粗略来看,上图可以看作一个 4c72a949-3931-eb11-8da9-e4434bdf6706.svg 叉树,深度为 0372a949-3931-eb11-8da9-e4434bdf6706.svg 的树,叶子节点个数为 7072a949-3931-eb11-8da9-e4434bdf6706.svg ,解得最大路径长度为 7272a949-3931-eb11-8da9-e4434bdf6706.svg ,即 7372a949-3931-eb11-8da9-e4434bdf6706.svg

  • Self-attention:任意两个结点都可以直接相连,即任意两个结点之间的距离为1,故最大路径长度为1

  • 受限的self-attention:类似于卷积核大小为 fb71a949-3931-eb11-8da9-e4434bdf6706.svg 的CNN,最大路径长度为 7672a949-3931-eb11-8da9-e4434bdf6706.svg

参考资料

  • https://tobiaslee.top/2018/12/13/Start-from-Transformer/

  • https://arxiv.org/abs/1808.08946

  • https://www.reddit.com/r/LanguageTechnology/comments/9gulm9/complexity_of_transformer_attention_network/

  • https://zhuanlan.zhihu.com/p/132554155


本文由作者授权AINLP原创发布于公众号平台,欢迎投稿,AI、NLP均可。

https://zhuanlan.zhihu.com/p/264749298

由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方"AINLP",进入公众号主页。

(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。

感谢支持,比心04b5bff2d27b04a84d672da2d00812f1.png

欢迎加入AINLP技术交流群 进群请添加AINLP小助手微信 AINLPer(id: ainlper),备注NLP技术交流 a39356a9161cb58ff4d54ab6ed41803c.png

推荐阅读

这个NLP工具,玩得根本停不下来

征稿启示| 200元稿费+5000DBC(价值20个小时GPU算力)

完结撒花!李宏毅老师深度学习与人类语言处理课程视频及课件(附下载)

从数据到模型,你可能需要1篇详实的pytorch踩坑指南

如何让Bert在finetune小数据集时更“稳”一点

模型压缩实践系列之——bert-of-theseus,一个非常亲民的bert压缩方法

文本自动摘要任务的“不完全”心得总结番外篇——submodular函数优化

Node2Vec 论文+代码笔记

模型压缩实践收尾篇——模型蒸馏以及其他一些技巧实践小结

中文命名实体识别工具(NER)哪家强?

学自然语言处理,其实更应该学好英语

斯坦福大学NLP组Python深度学习自然语言处理工具Stanza试用

关于AINLP

AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。

e43374cf1af45e56e88f7ccb18c5ec47.png

阅读至此了,分享、点赞、在看三选一吧?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值