Transformer 是不是缺乏跨维度关系捕捉能力? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
LeeReamond
V2EX    Python

Transformer 是不是缺乏跨维度关系捕捉能力?

  •  
  •   LeeReamond 2024-01-26 07:26:15 +08:00 2662 次点击
    这是一个创建于 626 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,用别人开源的模型做 NLP 任务有几年了,第一次认真看了下 Transformer 的公式,感觉这东西是不是除了 NLP 其他领域迁移能力差,因为本身夸维度捕捉能力就差。

    假设有三个中文输入:“你好”,每个字被编码为一个三维的向量,那么也许可以写成这样一个 3x2 矩阵:

    input = [ [a1, b1], [a2, b2], [a3, b3], ] 

    我仔细看了一下 attention 的公式,所以注意力结果应该是

    z = Softmax(QK/sqrt(x))V 

    其中 QKV 是三个矩阵乘出来的

    那么整个运算过程中从单个变量的三个维度出发的话,在上文的 2 字例子中,Q 的第一维只会和 K 的第一维发生关系,似乎并不会参与其他维度运算,这是否导致跨维度捕捉能力的缺失?

    所以只有 NLP 做得好,因为 NLP 的多维度量基是人为构建的,而且尽量使其分布平均。一到涉及现实世界的任务就拉了胯了,VIT 近视眼,其他现实建模量基不同的全都寄

    flyv2x
        1
    flyv2x  
       2024-01-26 09:47:30 +08:00
    词嵌入向量:向量旨在捕捉词汇的语义特征,每个维度代表不同的潜在语义属性。
    词嵌入向量->转换到 Q 、K 、V 过程是通过权重矩阵相乘来实现。在 Transformer 中,Q (查询)、K (键)和 V (值)向量的每个维度都是原始词嵌入向量所有维度的加权结果。
    zhusimaji
        2
    zhusimaji  
       2024-01-26 10:02:57 +08:00
    从实践来看,Attention 在推荐里用的也不少啊,MHA 用的挺广泛的
    Yuhyeong
        3
    Yuhyeong  
       2024-01-26 10:04:32 +08:00
    transformer 都杀疯了,基本所有领域都霸榜了。要不是硬件成本太高,大家 backbone 恨不得全换成 transformer 。
    Yuhyeong
        4
    Yuhyeong  
       2024-01-26 10:04:53 +08:00
    @zhusimaji transformer 就是用的 attention
    Yuhyeong
        5
    Yuhyeong  
       2024-01-26 10:06:13 +08:00
    @Yuhyeong paperwithcode 搜搜 Vit ,看看在几个 benchmark 上是 top3
    zhusimaji
        6
    zhusimaji  
       2024-01-26 10:14:10 +08:00
    还好吧,现在都有专门的优化了,比如 Attention 有 flash attention 最近看 openai 新一代注意力机制 Lightning Attention-2:无限序列长度、恒定算力开销、更高建模精度。
    think9999
        7
    think9999  
       2024-01-26 10:19:57 +08:00
    我认为:Transformer 不缺乏跨维度关系捕捉能力。甚至,它比 CNN 可以捕捉等多的维度关系。
    之前有个图像识别的例子用 Transformer 来做,从结果可以验证。
    其实,Transformer 里面用了很多 attention ,不是只有 1 个,是很多个,越大的基于 Transformer 的模型,里面的 attention 数量越大(非线性增长)。 而每 1 个 attention 就是去找一个关系, 那么多 attention 它其实就是在遍历找关系。
    我认为它就类似于 Faster R-CNN 检测一个目标,几乎就是在用算力去框一个对象,只要算力足够,那么目标就一定能被检测出来。
    icetea12138
        8
    icetea12138  
       2024-01-26 10:26:54 +08:00   1
    我还以为你说变形金刚呢
    Morriaty
        9
    Morriaty  
       2024-01-26 10:29:19 +08:00
    目前主流的大模型都是高维度 embedding ,维度之间本身就是默认正交的,简单理解,假设有个低维 128 维度的 embedding ,我可以手动组合 d1d2 组合维度作为 d129 维,再手动组合 d1d3 组合作为 d130 维,这是交叉特征 FM 的思想。只不过在深度神经网络时代( bert )之后,手动组合特征变成了直接设置为高维度 embedding ,让网络自己去学习这种“特征组合”。


    @zhusimaji 另外请问下,MHA 全称是啥,挺感兴趣的,但我没查到
    neopenx
        10
    neopenx  
       2024-01-26 10:31:29 +08:00
    你可能不熟悉矩阵乘法把。QK 的注意力矩阵乘法是[2,3]@[3, 2], 也就是做了 2x2 四次向量点积,每个点积都用到了全部三维。这是单头注意力情况。维度更高需要用多头减少每组点积向量的维度,避免参与的维度过多导致注意力不 diverse
    pipapa
        11
    pipapa  
       2024-01-26 10:50:30 +08:00
    @Morriaty multi-head-attention
    Morriaty
        12
    Morriaty  
       2024-01-26 11:19:38 +08:00
    @pipapa 哦哦我还以为是专门用于推荐设计的算法,类似于 DIN 之类的,难怪我查不到
    LeeReamond
        13
    LeeReamond  
    OP
       2024-01-26 12:14:39 +08:00
    @flyv2x 所以 transformer 的维度关系捕捉能力可以认为是 W(QKV)的这一个(三个)全连接层的关系?

    @neopenx 你要不要重新看看你都写的啥
    zhusimaji
        14
    zhusimaji  
       2024-01-26 12:25:24 +08:00 via iPhone
    @Morriaty 有人回答了
    neopenx
        15
    neopenx  
       2024-01-26 13:38:47 +08:00
    @LeeReamond 并没有啥问题啊。你的维度困惑在于把 QK 理解成逐元素向量乘法了..上面一堆回答都歪了..
    zhangyichent
        16
    zhangyichent  
       2024-01-26 13:47:08 +08:00
    @neopenx 我也觉得你说的对头
    lrigi
        17
    lrigi  
       2024-01-26 13:54:32 +08:00 via iPhone
    楼主后面不是还有个*V 吗,attention 本身关注的就是不同词之间的关系
    liangzhh25
        18
    liangzhh25  
       2024-01-26 14:17:05 +08:00
    @neopenx 我理解 op 的问题也是你说的那样 hhh
    liangzhh25
        19
    liangzhh25  
       2024-01-26 14:36:05 +08:00
    发现说的有点不对,transformer 的注意力确实是两个词的 q 和 k 在各自的维度相乘,求和计算得到的,这个注意力本身就有点类似 cv 的空间注意力。也能理解,要是维度之间还要计算相关的话,attention 计算量就要爆炸了。以上是个人理解。
    liangzhh25
        20
    liangzhh25  
       2024-01-26 14:55:31 +08:00
    再补充一点,一般注意力结构后面都会再接个 mlp 或者 ffn ,这里会有通道维度上的全连接,通过多个 attn-mlp 结构,应该是能实现 op 说的跨维度信息捕捉的能力。
    lrigi
        21
    lrigi  
       2024-01-26 15:08:53 +08:00 via iPhone
    Yuhyeong
        22
    Yuhyeong  
       2024-01-26 15:25:50 +08:00
    @lrigi 啊?我意思就是 vit 大部分 sota 啊,op 说 vit 在 nlp 之外不行,我在举反例啊。
    Yuhyeong
        23
    Yuhyeong  
       2024-01-26 15:30:09 +08:00
    @lrigi 哥们,不说反问句就看不到了吗
    lrigi
        24
    lrigi  
       2024-01-26 15:30:43 +08:00 via iPhone
    @Yuhyeong 哦 抱歉我理解错了讲道理楼主真的做了几年 nlp 吗这也太外行了
    sujin190
        25
    sujin190  
       2024-01-26 15:48:29 +08:00
    怎么记得 QK 好像是矩阵乘法,也就是点乘,哪里的 Q 第一维度只和 K 的第一维度产生作用,就不符合点乘规则吧,和后面 V 才是普通乘法才有你说的这个问题吧,你从哪找的这个公式都看不出是点乘还是普通乘法了
    flyv2x
        26
    flyv2x  
       2024-01-26 17:49:40 +08:00
    @LeeReamond transformer 不只是生成查询( Q )、键( K )和值( V )的一个全连接层,还有多头注意力机制,FFNN 都有用到。
    简要流程:
    1.每个词通过词嵌入模型被转换为一个固定长度的向量(词嵌入向量),这个过程是自然语言处理( NLP )中的常规步骤。(词嵌入向量每个维度代表不同的潜在语义属性)
    2.在自注意力机制中将每个词的嵌入向量与三个不同的权重矩阵相乘,分别得到 Q (查询)、K (键)和 V (值)向量。这里用到的三个权重矩阵 WQ,WK,WV 是模型通过训练学习到的参数。
    3.Softmax(QK/sqrt(x))->求出注意力分数,注意力分数会对值向量 V 进行加权求和,以生成每个位置的输出向量。这样,*每个输出向量就是输入序列中所有位置的信息的加权组合*,其中的权重反映了每个输入位置对当前输出位置的重要性。

    实际 Transformer 模型中,会使用“多头注意力”机制(multi-head-attention),即并行地进行多次上述 2,3 注意力计算,每次使用不同的 Q 、K 、V 权重矩阵。这允许模型在不同的表示子空间中捕获信息。然后,所有头的输出会被拼接起来,并通过另一个线性层进行变换,以生成最终的多头注意力层的输出。
    summerzhen
        27
    summerzhen  
       2024-01-26 23:04:28 +08:00
    时间预测领域的近几年的几个 sota:Informer ,FEDformer ,Autoformer ,PatchTST ,都是魔改 Transformer
    LeeReamond
        28
    LeeReamond  
    OP
       2024-01-27 08:03:24 +08:00
    @lrigi 工作不做这个,用 NLP 属于业余在做,不值一提。

    @flyv2x 是我想错了,不过按照这个说法,先是 W(...)到 Q,K ,然后 QK 这步会消融原有的维度和空间关系,因为他们之间没有经过非线性激活,所以还是可以认为是经过了一个线性层,然后后面 FFN 外加 1.5 个线性层这样。我现在不是很确定,比如输入就是一楼里写的[1, 3, 2]这个形状,忽略编码部分以后,看数学公式似乎它的 3 维度和 2 维度两个方向上似乎在关系捕捉上没有什么区别?

    @Yuhyeong 榜都看过,不傻的都知道行,只不过行不行是相对而言。以前在跟做 CV 方向的朋友聊天中谈过,相对 NLP 领域 Transformer 是完全成为新 baseline ,CV 这边 ViT 的很多方法只是看起来不错,具体需要 argue 的地方也很多,并没有成为行业新标准,同样不能秒杀 CNN 。效率问题只是一方面,另一方面是 patch+全局感受域带来的近视眼问题,ImageNet 这样脱离实际应用场景的低分场景下跑分性能不错。
    Yuhyeong
        29
    Yuhyeong  
       2024-01-27 11:29:33 +08:00
    @LeeReamond 没完全替代 cnn 是因为 cv 领域本身更偏向边缘设备落地,比 nlp 有更高的实用需求,落地边缘设备的话谁会选择性能难以优化的 Transformer 呢,杀鸡也没必要上牛刀,不像 NLP ,有几个出名的 NLP 项目是不依赖于高性能工作站的? Transformer 可不是仅仅看起来不错而已。
    > Q 的第一维只会和 K 的第一维发生关系
    你主要还是没学习基本原理,做这么久 NLP 实在不应该,QKV 矩阵怎么算的你都不清楚。QKV 是完全依赖全局序列关系得到的,完全考虑了每个分段的语义信息和相关性,根本不存在你说的只会和当前状态有关系。他替代 RNN 类时序模型,最大的原因就是 transfomer 能捕捉更多更完整的上下文信息,而且 QKV 矩阵本身就已经从高纬度语义空间上获取了更多的信息。近视眼是因为 attention 本身就会专注于人类视角中认为更关键的的信息,从 attention 的名字你应该就能注意到了。你不能期望一个小小的 backbone 去解决所有问题,照你这个逻辑,你可以说 cnn 远视眼,所以不好用呢。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2993 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 13:35 PVG 21:35 LAX 06:35 JFK 09:35
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86