在声音识别中进行异常值检测的方法?

Posted

技术标签:

【中文标题】在声音识别中进行异常值检测的方法?【英文标题】:Methods to do outlier detection in sound recognition? 【发布时间】:2016-01-08 02:42:27 【问题描述】:

有模型可以识别 2 类声音,即 A 类和 B 类。

如何将C类声音识别为异常声音?

我尝试在按帧识别时设置阈值。

above 70% -> class A or B
else      -> abnormal

例如,

如果一个声音有 10 帧,结果是

frame 1 2 3 4 5 6 7 8 9 10
      A B A B A A A B A  A     A=7 B=3
-> class A

frame 1 2 3 4 5 6 7 8 9 10
      B B A B A A A B A  A     A=6 B=4
-> abnormal

性能很差。

我该怎么办?

【问题讨论】:

对于异常值检测的二进制分类器的结果可能不是一个好主意。您的二元分类基础模型是什么? 神经网络,torch7 声音 A 和 B 是您要检测的特定事物?您是否考虑过为 C 引入带有杂散噪声或通用音频样本的训练示例? 你的意思是模型被训练来识别 A, B, C 吗?如果是的话,我已经考虑过了。但是,如果我训练一个 N 类模型,总会有与这些 N 类不同的声音。所以,我尝试进行异常值检测。 给你A或B的分类器有信心吗? 【参考方案1】:

有两种方式来看待这个问题:分类问题和异常值检测问题。

分类

作为一个分类问题,可能会引入在您的系统应用程序中可能遇到的外部声音,并使用它来创建第三类。对于这个第三类来说,拥有多种声音很重要,而且可能还有很多。

有了这个,您可能想要使用对成本敏感的一个而不是全部,因此调整精度/召回率以挑选出 A 类和 B 类。

这种方法的好处是您不必为异常值/异常模型设置任意阈值。在这种情况下,距离可能很难测量,因此很难找到合适的阈值。

包括我自己在内的许多人在与您的问题类似的 kaggle 比赛中使用了这种技术。 https://www.kaggle.com/c/axa-driver-telematics-analysis

异常值/异常检测

由于您使用的是神经网络,因此可以构建自动编码器。这将找到代表您尝试检测的声音的多种声音。您可以使用重建损失作为异常检测的距离度量。这仍然需要您确定一个阈值,最好使用一些现有的异常/异常数据来执行此操作。

【讨论】:

以上是关于在声音识别中进行异常值检测的方法?的主要内容,如果未能解决你的问题,请参考以下文章

一类 SVM 检测异常值

R异常数据检测及处理方法

R语言基于可视化进行多变量离群(Mulltivariate outliers)点检测识别:散点图可视化多变量离群点模型平滑多变量异常检测使用平行坐标图查看钻石数据集中的异常值

异常检测统计学方法

深度学习异常值检测方法

Novelty and Outlier Detection(奇异值和异常值检测)