当前位置:网站首页>注意力机制的详细理解
注意力机制的详细理解
2022-08-03 17:40:00 【如意的小家】
一、线性Attention的探索:Attention必须有个Softmax吗?
前几天笔者读到了论文 Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention [1] ,了解到了线性化 Attention (Linear Attention)这个探索点,继而阅读了一些相关文献,有一些不错的收获,最后将自己对线性化 Attention 的理解汇总在此文中.
Attention
相关解读可以参考笔者的一文读懂「Attention is All You Need」| 附代码实现,以及它的一些改进工作也可以参考突破瓶颈,打造更强大的 Transformer [3]、Google 新作 Synthesizer:我们还不够了解自注意力,这里就不多深入介绍了。
1.1 摘掉Softmax
读者也许想不到,制约 Attention 性能的关键因素,其实是定义里边的 Softmax!事实上,简单地推导一下就可以得到这个结论。注:关于矩阵乘法算法复杂度的计算
1).矩阵乘法
对于矩阵A(n×m),B(m×n), 这里A(n×m)表示A是n行乘m列的矩阵。
如果A×B,那么复杂度为O(n×m×n),即O(n^2×m) 。进一步思考,为什么呢,直接代码解释:
for(i=0;i<n;i++){
//A矩阵中的n
for(j=0;j<m;j++){
//A矩阵中的m 或者B矩阵中的m ,一样的
for(k=0;k<n;k++){
//B矩阵中的n
C[i][j]= C[i][j]+A[i][k]*B[k][j];
}
}
}
一个for循环是O(n),这里是三个for循环,所以为O(n×m×n)。(ps:个人感觉还是看代码比较好理解,后面三个矩阵乘法时,就会更加体会到)
对于矩阵A(m×n),B(n×m)和C(m×n), 这里A(m×n)表示A是m行乘n列的矩阵。(PS:这里记号和前面不同,主要方便和知乎截图符号一致)
- A×B,那么复杂度为O(m×n×m),即O(m^2×n) 。
- D(m×m)=A×B运算完后在和C运算。
- D×C,那么复杂度为O(m×m×n),即O(m^2×n) 。
为了方面理解,笔者直接上代码,这样清楚一点。
int A(m*n),
int B(n*m)
int C(m*n)
int D(m*m)
int E(m*n)
//先计算D=A*B
for(i=0;i<m;i++){
//A矩阵中的m
for(j=0;j<n;j++){
//A矩阵中的n 或者B矩阵中的n ,一样的
for(k=0;k<m;k++){
//B矩阵中的m
D[i][j]= D[i][j]+A[i][k]*B[k][j];
}
}
}
//在计算E=D*C
for(i=0;i<m;i++){
//D矩阵中的m
for(j=0;j<m;j++){
//D矩阵中的m 或者C矩阵中的m ,一样的
for(k=0;k<n;k++){
//C矩阵中的n
E[i][j]= E[i][j]+A[i][k]*B[k][j];
}
}
}
边栏推荐
- A complete detailed tutorial on building intranet penetration ngrok (with pictures and truth)
- 借助Web3盘活日本优质IP:UneMeta 与 OpenSea 的差异化竞争
- CC2530_ZigBee+华为云IOT:设计一套属于自己的冷链采集系统
- 目标检测-YOLOv3理论讲解
- cell delay and net delay
- 使用o.execute_sql 查询很很很小的表, 要7/8秒钟, 这个怎么解决
- 酷开科技 × StarRocks:统一 OLAP 分析引擎,全面打造数字化的 OTT 模式
- 【mysql】SIGN(x) function
- three.js简介
- Cool open technology x StarRocks: unified OLAP analysis engine, comprehensive building digital model of OTT
猜你喜欢
随机推荐
软件测试<进阶篇-->测试分类>
软件测试<用例篇>
华为ECS云服务器上安装Docker及部署Redis详细教程【华为云至简致远】
大型企业数据治理的现状和解决方案有哪些参考?_光点科技
JVS低代码移动端接入方案
sphinx error connection to 127.0.0.1:9312 failed (errno=0, msg=)
websocket Handshake failed due to invalid Upgrade header
JVM参数设置
双指针/滑动窗口问题
国内首发可视化智能调优平台,小龙带你玩转KeenTune UI
论文解读(JKnet)《Representation Learning on Graphs with Jumping Knowledge Networks》
【技术白皮书】第一章:OCR智能文字识别新发展——深度学习的文本信息抽取
精酿啤酒品牌,过把瘾就死?
JVS低代码-多数据模型与数据联动配置举例
【Metaverse系列一】元宇宙的奥秘
Uniswap或将开启“费用开关”,UNI持有者可享受分红
被误解的 MVC 和被神化的 MVVM(一)
【300+精选大厂面试题持续分享】大数据运维尖刀面试题专栏(十一)
mysql之的执行计划
持续投入商品研发,叮咚买菜赢在了供应链投入上