如题,用别人开源的模型做 NLP 任务有几年了,第一次认真看了下 Transformer 的公式,感觉这东西是不是除了 NLP 其他领域迁移能力差,因为本身夸维度捕捉能力就差。
假设有三个中文输入:“你好”,每个字被编码为一个三维的向量,那么也许可以写成这样一个 3x2 矩阵:
input = [
[a1, b1],
[a2, b2],
[a3, b3],
]
我仔细看了一下 attention 的公式,所以注意力结果应该是
z = Softmax(Q·K/sqrt(x))·V
其中 QKV 是三个矩阵乘出来的
那么整个运算过程中从单个变量的三个维度出发的话,在上文的 2 字例子中,Q 的第一维只会和 K 的第一维发生关系,似乎并不会参与其他维度运算,这是否导致跨维度捕捉能力的缺失?
所以只有 NLP 做得好,因为 NLP 的多维度量基是人为构建的,而且尽量使其分布平均。一到涉及现实世界的任务就拉了胯了,VIT 近视眼,其他现实建模量基不同的全都寄
1
flyv2x 303 天前
词嵌入向量:向量旨在捕捉词汇的语义特征,每个维度代表不同的潜在语义属性。
词嵌入向量->转换到 Q 、K 、V 过程是通过权重矩阵相乘来实现。在 Transformer 中,Q (查询)、K (键)和 V (值)向量的每个维度都是原始词嵌入向量所有维度的加权结果。 |
2
zhusimaji 303 天前
从实践来看,Attention 在推荐里用的也不少啊,MHA 用的挺广泛的
|
3
Yuhyeong 303 天前
transformer 都杀疯了,基本所有领域都霸榜了。要不是硬件成本太高,大家 backbone 恨不得全换成 transformer 。
|
6
zhusimaji 303 天前
还好吧,现在都有专门的优化了,比如 Attention 有 flash attention 最近看 openai 新一代注意力机制 Lightning Attention-2:无限序列长度、恒定算力开销、更高建模精度。
|
7
think9999 303 天前
我认为:Transformer 不缺乏跨维度关系捕捉能力。甚至,它比 CNN 可以捕捉等多的维度关系。
之前有个图像识别的例子用 Transformer 来做,从结果可以验证。 其实,Transformer 里面用了很多 attention ,不是只有 1 个,是很多个,越大的基于 Transformer 的模型,里面的 attention 数量越大(非线性增长)。 而每 1 个 attention 就是去找一个关系, 那么多 attention 它其实就是在遍历找关系。 我认为它就类似于 Faster R-CNN 检测一个目标,几乎就是在用算力去框一个对象,只要算力足够,那么目标就一定能被检测出来。 |
8
icetea12138 303 天前 1
我还以为你说变形金刚呢
|
9
Morriaty 303 天前
目前主流的大模型都是高维度 embedding ,维度之间本身就是默认正交的,简单理解,假设有个低维 128 维度的 embedding ,我可以手动组合 d1d2 组合维度作为 d129 维,再手动组合 d1d3 组合作为 d130 维,这是交叉特征 FM 的思想。只不过在深度神经网络时代( bert )之后,手动组合特征变成了直接设置为高维度 embedding ,让网络自己去学习这种“特征组合”。
@zhusimaji 另外请问下,MHA 全称是啥,挺感兴趣的,但我没查到 |
10
neopenx 303 天前
你可能不熟悉矩阵乘法把。Q·K 的注意力矩阵乘法是[2,3]@[3, 2], 也就是做了 2x2 四次向量点积,每个点积都用到了全部三维。这是单头注意力情况。维度更高需要用多头减少每组点积向量的维度,避免参与的维度过多导致注意力不 diverse
|
13
LeeReamond OP |
15
neopenx 302 天前
@LeeReamond 并没有啥问题啊。你的维度困惑在于把 Q·K 理解成逐元素向量乘法了..上面一堆回答都歪了..
|
16
zhangyichent 302 天前
@neopenx 我也觉得你说的对头
|
17
lrigi 302 天前 via iPhone
楼主后面不是还有个*V 吗,attention 本身关注的就是不同词之间的关系
|
18
liangzhh25 302 天前
@neopenx 我理解 op 的问题也是你说的那样 hhh
|
19
liangzhh25 302 天前
发现说的有点不对,transformer 的注意力确实是两个词的 q 和 k 在各自的维度相乘,求和计算得到的,这个注意力本身就有点类似 cv 的空间注意力。也能理解,要是维度之间还要计算相关的话,attention 计算量就要爆炸了。以上是个人理解。
|
20
liangzhh25 302 天前
再补充一点,一般注意力结构后面都会再接个 mlp 或者 ffn ,这里会有通道维度上的全连接,通过多个 attn-mlp 结构,应该是能实现 op 说的跨维度信息捕捉的能力。
|
21
lrigi 302 天前 via iPhone
|
25
sujin190 302 天前
怎么记得 QK 好像是矩阵乘法,也就是点乘,哪里来的 Q 第一维度只和 K 的第一维度产生作用,就不符合点乘规则吧,和后面 V 才是普通乘法才有你说的这个问题吧,你从哪找的这个公式都看不出是点乘还是普通乘法了
|
26
flyv2x 302 天前
@LeeReamond transformer 不只是生成查询( Q )、键( K )和值( V )的一个全连接层,还有多头注意力机制,FFNN 都有用到。
简要流程: 1.每个词通过词嵌入模型被转换为一个固定长度的向量(词嵌入向量),这个过程是自然语言处理( NLP )中的常规步骤。(词嵌入向量每个维度代表不同的潜在语义属性) 2.在自注意力机制中将每个词的嵌入向量与三个不同的权重矩阵相乘,分别得到 Q (查询)、K (键)和 V (值)向量。这里用到的三个权重矩阵 WQ,WK,WV 是模型通过训练学习到的参数。 3.Softmax(Q·K/sqrt(x))->求出注意力分数,注意力分数会对值向量 V 进行加权求和,以生成每个位置的输出向量。这样,*每个输出向量就是输入序列中所有位置的信息的加权组合*,其中的权重反映了每个输入位置对当前输出位置的重要性。 实际 Transformer 模型中,会使用“多头注意力”机制(multi-head-attention),即并行地进行多次上述 2,3 注意力计算,每次使用不同的 Q 、K 、V 权重矩阵。这允许模型在不同的表示子空间中捕获信息。然后,所有头的输出会被拼接起来,并通过另一个线性层进行变换,以生成最终的多头注意力层的输出。 |
27
summerzhen 302 天前
时间预测领域的近几年的几个 sota:Informer ,FEDformer ,Autoformer ,PatchTST ,都是魔改 Transformer
|
28
LeeReamond OP @lrigi 工作不做这个,用 NLP 属于业余在做,不值一提。
@flyv2x 是我想错了,不过按照这个说法,先是 W(...)到 Q,K ,然后 Q·K 这步会消融原有的维度和空间关系,因为他们之间没有经过非线性激活,所以还是可以认为是经过了一个线性层,然后后面 FFN 外加 1.5 个线性层这样。我现在不是很确定,比如输入就是一楼里写的[1, 3, 2]这个形状,忽略编码部分以后,看数学公式似乎它的 3 维度和 2 维度两个方向上似乎在关系捕捉上没有什么区别? @Yuhyeong 榜都看过,不傻的都知道行,只不过行不行是相对而言。以前在跟做 CV 方向的朋友聊天中谈过,相对 NLP 领域 Transformer 是完全成为新 baseline ,CV 这边 ViT 的很多方法只是看起来不错,具体需要 argue 的地方也很多,并没有成为行业新标准,同样不能秒杀 CNN 。效率问题只是一方面,另一方面是 patch+全局感受域带来的近视眼问题,ImageNet 这样脱离实际应用场景的低分场景下跑分性能不错。 |
29
Yuhyeong 302 天前
@LeeReamond 没完全替代 cnn 是因为 cv 领域本身更偏向边缘设备落地,比 nlp 有更高的实用需求,落地边缘设备的话谁会选择性能难以优化的 Transformer 呢,杀鸡也没必要上牛刀,不像 NLP ,有几个出名的 NLP 项目是不依赖于高性能工作站的? Transformer 可不是仅仅看起来不错而已。
> Q 的第一维只会和 K 的第一维发生关系 你主要还是没学习基本原理,做这么久 NLP 实在不应该,QKV 矩阵怎么算的你都不清楚。QKV 是完全依赖全局序列关系得到的,完全考虑了每个分段的语义信息和相关性,根本不存在你说的只会和当前状态有关系。他替代 RNN 类时序模型,最大的原因就是 transfomer 能捕捉更多更完整的上下文信息,而且 QKV 矩阵本身就已经从高纬度语义空间上获取了更多的信息。近视眼是因为 attention 本身就会专注于人类视角中认为更关键的的信息,从 attention 的名字你应该就能注意到了。你不能期望一个小小的 backbone 去解决所有问题,照你这个逻辑,你可以说 cnn 远视眼,所以不好用呢。 |