| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 文献阅读:Synthesizer: Rethinking Self-Attention in Transformer Models -> 正文阅读 |
|
[人工智能]文献阅读:Synthesizer: Rethinking Self-Attention in Transformer Models |
1. 文章简介前两天在看Google的Transformer Quality in Linear Time突然想起来这篇long long ago之前看过的transformer的变体,因此这里就回来考个古,顺便加深一下理解吧。 这篇文章同样是Google提出来的一个工作,不过是在20年了。某种程度上,确实还是非常的佩服Google的,因为考虑到近年来Transformer在NLP以及CV领域的各种猪突猛进,主流的工作感觉都是在Transformer的基础上进行工作迁移,结构优化以及各种细化研究,但是Google自己却总感觉对于Transformer本身不太满意,时不时就搞出一篇文章来想要从根本上推翻transformer的基础架构。 这篇Synthesizer就是其中之一,他的关注点在于Transformer自身的self-attention的权重计算部分,考察 Q Q Q和 K K K的点积计算attention权重的方式是否是真的必要的。如果直接给出一个与输入token无关的全局self-attention权重是否同样能够生效,感觉实在考察self-attention结构之所以有效的更为本质的原因。 结论而言,文章认为 Q Q Q和 K K K的点积计算attention权重的方式似乎效果并不是那么的重要,直接训练权重都能够获得不弱于sota的结果,甚至直接随机权重然后fix都能得到一些过去的结果…… 不过要想要达到sota,似乎attention权重还是要和输入权重关联起来才能达到效果的最优。 Anyway,当时看这篇文章感觉还是很震惊的,不过两年过去了,感觉似乎这篇文章相关的结构也没有被大幅利用起来,整体来说还是vanilla的transformer占着主导的地位…… 2. 核心方法如前所述,这篇文章的核心就是针对self-attention的结构进行了细化研究,尝试优化掉了点积操作,从而可以考察self-attention权重的更本质的含义。 我们首先给出各个版本的self-attention结构图以及对应的参数量如下: 1. Vanilla Self-Attention (V)对于最基础的self-attention结构,假设attention层的输入为 X ∈ R l ? d X \in \mathbb{R}^{l*d} X∈Rl?d,则有: { Q = W Q ? X + b Q K = W K ? X + b K V = W V ? X + b V O = s o f t m a x ( W Q ? W k T d ) ? V \left\{ \begin{aligned} Q &= W_Q \cdot X + b_Q \\ K &= W_K \cdot X + b_K \\ V &= W_V \cdot X + b_V \\ O &= softmax(\frac{W_Q \cdot W_k^T}{\sqrt{d}}) \cdot V \end{aligned} \right. ????????????????QKVO?=WQ??X+bQ?=WK??X+bK?=WV??X+bV?=softmax(d?WQ??WkT??)?V? 其中, W Q , W K , W V ∈ R d × d W_Q, W_K, W_V \in \mathbb{R}^{d \times d} WQ?,WK?,WV?∈Rd×d,所以,总的参数量级为 O ( 3 d 2 ) O(3d^2) O(3d2),Self-Attention部分的参数量级为 O ( 2 d 2 ) O(2d^2) O(2d2)( W Q , W K W_Q, W_K WQ?,WK?)。 后续由于只调整self-attention的权重部分,因此,我们说的self-attention部分的参数量就仅指除了 V V V之外的部分的参数量,即权重部分的参数量。 2. Dense Synthesizer (D)Dense Synthesizer的核心思路是说使用FFN层来替换掉attention权重的生成过程,即: { B = W 2 ( σ R ( W 1 ? X + b 1 ) ) + b 2 V = W V ? X + b V O = s o f t m a x ( B ) ? V \left \{ \begin{aligned} B &= W_2(\sigma_R(W_1 \cdot X + b_1)) + b_2 \\ V &= W_V \cdot X + b_V \\ O &= softmax(B) \cdot V \end{aligned} \right. ??????BVO?=W2?(σR?(W1??X+b1?))+b2?=WV??X+bV?=softmax(B)?V? 其中, W 1 ∈ R d × d W_1 \in \mathbb{R}^{d \times d} W1?∈Rd×d, W 2 ∈ R l × d W_2 \in \mathbb{R}^{l \times d} W2?∈Rl×d,因此,其参数量级为 O ( d × l + d 2 ) O(d\times l + d^2) O(d×l+d2)。 3. Random Synthesizer (R)Random Synthesizer的思路较之上述的Dense Synthesizer则更加暴力,我们直接给出一组与输入无关的权重矩阵,然后直接训练这组权重然后考察效果。 具体而言,即为: { V = W V ? X + b V O = s o f t m a x ( R ) ? V \left \{ \begin{aligned} V &= W_V \cdot X + b_V \\ O &= softmax(R) \cdot V \end{aligned} \right. {VO?=WV??X+bV?=softmax(R)?V? 其中, R ∈ R l × l R \in \mathbb{R}^{l\times l} R∈Rl×l,对应的参数量极同样为 O ( l 2 ) O(l^2) O(l2)。 4. Factorized Model这里,我们注意到一点,这里,我们虽然减少了权重的计算,但是Self-Attention层的参数总量却从 O ( 2 d 2 ) O(2d^2) O(2d2)增加到了KaTeX parse error: Undefined control sequence: \tims at position 4: O(l\?t?i?m?s? ?d + d^2)(Dense Synthersizer)或者 O ( l 2 ) O(l^2) O(l2)(Random Synthesizer)。 由于通常来说句长 l l l是大于模型维度 d d d的,因此模型的参数总量事实上是有所增加的。 因此,这里通过对句长进行拆分来缩减来减少参数总量。 我们假设句长 l = a × b l = a \times b l=a×b,则我们具体有: 1. Factorized Dense Synthesizer (FD){ A = σ R ( W 0 ? X + b 0 ) B 1 = W 1 A + b 1 B 2 = W 2 A + b 2 B = B 1 ? B 2 \left \{ \begin{aligned} A &= \sigma_R(W_0 \cdot X + b_0) \\ B_1 &= W_{1}A + b_{1} \\ B_2 &= W_{2}A + b_{2} \\ B &= B_1 * B_2 \end{aligned} \right. ????????????AB1?B2?B?=σR?(W0??X+b0?)=W1?A+b1?=W2?A+b2?=B1??B2?? 其中, W 0 ∈ R d × d , W 1 ∈ R a × d , W 2 ∈ R b × d W_0 \in \mathbb{R}^{d \times d}, W_1 \in \mathbb{R}^{a \times d}, W_2 \in \mathbb{R}^{b \times d} W0?∈Rd×d,W1?∈Ra×d,W2?∈Rb×d。 由此,就可以将参数总量缩减至 O ( d 2 + d × ( a + b ) ) O(d^2 + d \times (a + b)) O(d2+d×(a+b))。 2. Factorized Random Synthesizer (FR){ R = R 1 × R 2 V = W V ? X + b V O = s o f t m a x ( R ) ? V \left \{ \begin{aligned} R &= R_1 \times R_2 \\ V &= W_V \cdot X + b_V \\ O &= softmax(R) \cdot V \end{aligned} \right. ??????RVO?=R1?×R2?=WV??X+bV?=softmax(R)?V? 其中, R 1 ∈ R l × k , R 2 ∈ R k × l , k ? l R_1 \in \mathbb{R}^{l \times k}, R_2 \in \mathbb{R}^{k \times l}, k \ll l R1?∈Rl×k,R2?∈Rk×l,k?l。 5. Mixture of SynthesizerMixture of Synthesizer方法事实上就是在计算权重过程中联合使用上述的全部方法,具体而言,即有: O = S o f t m a x ( ∑ i α i ? S i ( X ) ) ? V O = Softmax(\sum_{i} \alpha_i \cdot S_i(X)) \cdot V O=Softmax(i∑?αi??Si?(X))?V 其中, ∑ i α i = 1 \sum_i \alpha_i = 1 ∑i?αi?=1,为一组归一化的权重因子,而 S i ( X ) S_i(X) Si?(X)上上述介绍的任意一种权重因子。 为了泛化其效果,参数 α \alpha α并没有使用超参,而是交由模型自己进行学习得到的。 3. 实验考察下面,我们来看一下上述各个版本下的模型实际的效果以及性能。 1. 模型效果考察1. 翻译 & 语言模型文中首先考察一下变换了self-attention的权重构成方式之后在翻译以及语言模型上的效果。 可以看到:
2. 文本生成同样的,作者也在文本归纳以及对话任务当中也进行了一下考察,得到结果如下: 可以看到:
3. GLUE & SuperGlue在Glue和SuperGlue任务当中,Vanilla Transformer的设计则是完全优于Dense Synthesizer和Random Synthesizer的,但是后两者同样可以提供一些辅助的效果,使得Mixture模型达到更好的效果。 4. 结论综上,我们可以看到:
2. 模型性能考察最后,我们来考察一下Synthesizer模型的实际运行性能。 1. 与Transformer以及CNN比较首先,文中拿Synthesizer与Vanilla Transformer以及Conv网络比了一下效果,得到结果如下: 可以看到:
2. 与Linformer比较同样的,文中还拿Synthesizer与Linformer进行了一下比较,得到结果如下: 可以看到:
3. 结论综上,Synthesizer去除了点积计算之后确实在性能上通常能够带来一定的提升,但是考虑到效果,并不一定总是我们想要的结果。 4. 结论 & 思考综上,整体来说,无怪乎Synthesizer无法全面替代掉Vanilla Transformer,虽然其在计算量上面确实较之Vanilla Transformer有一定的减少,但是其代价就是增加了参数量,并且其模型的效果较之Vanilla的Transformer同样所有下滑,虽然在翻译以及生成任务上的下滑并不明显。 但是从好的一面来说,文中对于self-attention权重本质的考察还有很有意义的,只不过与文中的目标相反,似乎从结果来看,还是与token相关联的self-attention权重才是比较好的权重生成方式。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 13:55:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |