弱标注下的声音事件检测
- Sunny
- 0
本文内容来自ICASSP19a论文《A comparison of five multiple instance learning pooling functions for sound event detection with weak labeling》,作者王赟
https://arxiv.org/pdf/1810.09050.pdf
研究背景
在分类任务中,数据必须是带标注的,但对于声音事件检测任务而言,大多数情况下,我们能处理的数据都是不带标签的,或是标签不精确的,我们将这类数据称之为弱标注(weakly label)数据。
现行开源数据集中,强标注数据是非常少的,这使得我们要想训练超大规模的检测模型只能使用弱标注和无标注数据。
任务抽象
弱标注下的声音事件检测任务可以抽象成多实例学习(multiple instance learning)任务。将含有少量标注的大段数据看作一个大包,只知道这个包中含有某类事件,但不知道这些类的事件在数据包中的具体位置。声音事件检测的任务就是检测出这些事件的类别和事件的发生位置。
需要预设的一个先决条件是:
- 当整个包为正时,包内一定含有正的实例,但也可能含有负的实例;
- 当整个包为负时,包内仅含有负的实例。
聚合函数
从包含单元帧信息量的角度来看,聚合函数(pooling function)分为max pooling,softmax pooling,average pooling。常用的softmax有linear softmax,exp softmax和attention。
王赟在论文中提出的观点表明,效果最好的是linear softmax,而attention的效果并不如linear softmax(这一点存疑,因为其代码中对于attention的部分使用的linear层进行运算,并非self-attention)。
max pooling
max pooling是指用袋子中最大值的实例代替整个袋子,其表达式为:
这种pooling方式确实符合多实例学习的规则,但这种方式会丢失概率值低的实例的信息。
average pooling
average pooling是指用袋子中各实例的平均值代替整个袋子,其表达式为:
average pooling的池化方式在一定程度上保留了所有实例对袋子的影响,但却可能出现违反多实例学习规则的情况。当包为正,绝大部分实例都为负时,average pooling的结果往往会是负。
linear softmax
linear softmax是用实例自身的概率作为实例的权重,其表达式为:
对其求导:
发现当时,导数为正,则我们可以得出一下的性质:
- 如果整个包为正:
- 当时,实例的权重将会随着概率增大而增大;
- 当时,实例的权重将会随着概率减小而减小;
- 如果整个包为负:
- 会朝着趋近,最终趋近于0
这就会使得包中的实例会被进一步拉大间距,概率大的变得更大,概率小的变得更小。
attention
这里包的概率将受到实例的概率及其对应权重共同影响(有两个自变量),因此我们需要对其两个自变量分别做偏导:
\begin{aligned} &\frac{\partial 𝑦}{\partial𝑦_𝑖 }=\frac{𝑤_𝑖}{∑_𝑗𝑤_𝑗 }>0 \\ &\frac{\partial 𝑦}{\partial𝑤_𝑖 }=\frac{𝑦_𝑖−𝑦}{∑_𝑗𝑤_𝑗 } \end{aligned}
当[katex]y_i>y[/katex]时,偏导数为正。这时可以推出:
- 如果整个包为正:
- 所有的都为正,则想要增大,则每个[katex]y_i[/katex]都会增大;
- 当时, 为正;
- 当时, 为负;
- 如果整个包为负:
- 所有的都为正,则想要减小,则每个都会减小;
- 当时, 为负;
- 当时, 为正;
即当包为正时,概率越大权重越大,概率越小权重越小,当包为负时,概率越大权重越小,概率越小权重越大,显然,这一点与多实例学习的设定相违背。
写在最后
这里的attention在理论上确实会性能不如softmax,但实际上王赟在实现这一算法的过程中使用的并非attention而是linear fully connected layer,这二者在理论上有着诸多不同,因此实际算法的结果可能并不如论文中所言。最终论文复现的结论会在新的一篇博客中进行展示