parallel attention -- AOA &Bi-DAF

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了parallel attention -- AOA &Bi-DAF相关的知识,希望对你有一定的参考价值。

参考技术A parallel attention是双向注意力机制中的一种,在阅读理解中是passage和query 计算attention常用的方法,相比于单向注意力机制,信息融合能够表达得更好。

下面从两个框架AOA &Bi-DAF分别介绍parallel attention的思想,先从简单的开始。

AOA(Attention-over-Attention)

在AOA中,query和document都是经过双向GRU编码过的,输出向量分别是 和 。query每一个timestep都会和document的每一个timestep,就会得到一个score矩阵A。假如query的长度为J,document的长度为T,那么这个矩阵就是T*J维。矩阵A的每个元素A[ij]是一个score,score是通过query某一时刻的输出向量与document某一时刻输出向量的点积。

对于矩阵A,分别从行和列方向进行softmax。从列方向softmax后,得到的仍然是T*J维的矩阵,矩阵中元素从score变成了权重,每一列表示document的每一个单词对query的某个单词的相似性或者重要性。从行方向softmax后,得到的仍然是T*J维的矩阵,每一行表示query的每一个单词对document某个单词的相似性或者重要性。还要再进行重要的一步,从列方向上平均,得到一个J维的向量。为什么要做average呢?其实只是为了维度计算,并没有太多的内涵,并且一定程度损失了信息。

最终,T*J维矩阵和J维的向量相乘,得到一个T维的向量。这个T维的向量是想与document长度保持一致,后面AOA想干嘛干嘛,不重要了。重要的不是AOA框架,而是这个二维注意力机制的思想。

Bi-DAF(Bidirectional Attention Flow)

相比于AOA,Bi-DAF的结构更复杂了,复杂之处体现在:一是用了两层embedding,二是LSTM结构重复使用了几次,三是attention的机制不一样。Attetion Flow Layer才是这个架构的重点。

与AOA一样,Attetion Flow Layer首先计算有个关于score的相似矩阵A,假设J*T维(为啥不是T*J,下面有说明👇),然后分别从行和列两个方向进行softmax。元素A[ij]的计算方式:

为了避免理解混乱,值得注意的是,在AOA架构图中的相似矩阵是T*J维的,Bi-DAF架构图从感官上看,(h1,h2,..,hT)这个T维放在列方向上,所以Bi-DAF架构图中实际是J*T维的。AOA和Bi-DAF图中两个相似矩阵维度不一样,实质没啥区别。

从列方向上softmax,得到J*T维的矩阵,这个矩阵在图中是context2query,每一列表示document的每一个单词对query的某个单词的相似性或者重要性。从行方向上softmax,得到J*T维的矩阵,然后取每一行的最大值再进行softmax,得到一个J维向量,再将这个J维向量原模原样重复T次,得到J*T维的矩阵,这个矩阵的每一列都是一样的,在图中是query2context。这里和AOA做一下对比,AOA是取得average,但并没有重复T次。他们相同之处在于query to context方向上的注意力计算方式相同,都是做了聚合。

通过对AOA和Bi-DAF两个框架的attention机制的介绍,对parallel attention 有了基础的认识。其实就是通过计算一个score的相似矩阵,然后从行和列方向并列计算注意力权重。

Android、AOA2、USB 同步音频接口(流)

【中文标题】Android、AOA2、USB 同步音频接口(流)【英文标题】:Android, AOA2, USB Isochronous Audio Interface ( Streaming ) 【发布时间】:2015-02-01 00:21:38 【问题描述】:

环境:

三星 Galaxy 5,Android 4.4.2 Windows 桌面 (x64) USB 连接到 Android 设备 WinUsb

实施

根据this link,我正在尝试从我的三星 G5 设备接收 USB 同步音频(流),我将设备切换到附件模式,同时使用请求 58 将音频模式设置为 44100x2x16。

设备已成功切换到附件模式,显示为“0x2D05 - 附件 + 音频 + adb”。

我成功连接到同步端点 (#0x83) 并开始读取同步数据包/帧。

然而,虽然数据包被成功接收,但没有负载......

问题

除了上述之外,我还应该设置什么吗?我应该向端点和/或音频接口发送任何 USB 控制命令吗?

【问题讨论】:

【参考方案1】:

Isochronous USB Audio实际工作如上,启动设备,切换到AOA2,连接Isochronous Endpoint,开始读取。

只有在设备上播放音频时才存在实际有效负载,因此不会流式传输静音数据包(当设备上没有音频时会发送空数据包)。

上面提到的还有一个警告,使用 adb.exe 并执行以下操作时音频流停止:

adb shell screencap

这似乎是 Android v4.4.2 或 Samsung Permutation 的错误,原因可能是由于 USB 高流量,或者是由于操作系统音频路由问题。

问题报告@https://code.google.com/p/android/issues/detail?id=82014

更新: 使用“Nexus 5”,这实际上有效,这意味着问题是三星特有的......

【讨论】:

以上是关于parallel attention -- AOA &Bi-DAF的主要内容,如果未能解决你的问题,请参考以下文章

基于嵌入式板卡实现的蓝牙AOA基站

基于信号到达角度(AOA)的无线传感器网络定位——最大似然估计

「技术」室内定位—AOA测距算法,定位精度可达1m

「技术」室内定位—AOA测距算法,定位精度可达1m

蓝牙AOA融合定位技术汇总

蓝牙AOA融合定位技术汇总