技术文章和新闻稿

应用机器学习技术对乐器喇叭进行分类

安德鲁·哈珀(Andrew Harper), Celestion著


Celestion扬声器为许多著名吉他和贝司手的表演提供了动力,包括吉米·亨德里克斯等传奇人物。决定一个扬声器对专业音乐家来说是否足够好是一个漫长而艰苦的过程。每个扬声器都有自己独特的声音,基于声音特性的组合,如中频特性和亮度。评估乐器扬声器时,需要主观判断扬声器是否发出“良好”的声音。只有有多年经验的工程师才能做出可靠的决定,而且只有在反复聆听单个扬声器并将其产生的声音与参考扬声器产生的声音进行比较之后。

作为Celestion研发团队的成员,我最近解决了自动化本手册过程的问题,从聆听测试中腾出时间,经常重复。使用matlab.®,统计和机器学习工具箱™和信号处理工具箱™,我开发了一个使用机器学习算法的应用程序将一个扬声器模型分类为好或坏。该应用程序可以准确且一致地在几秒钟内判断扬声器,其结果既是一致的和可重复的。自信判断需要的重复盲目听力测试将需要更长时间,并且需要额外的手。

用MATLAB简化人工分类过程

要手动对单个扬声器进行分类,工程师侦听它产生的声音,因为吉他通过它播放,并将其与具有相同吉他和放大器的已知优秀参考扬声器产生的声音进行比较。这项工作是在我们专门设计的聆听室中完成的(图1)。工程师不寻找一个声音的扬声器,听起来与参考一样,但是听起来像参考一样好,并且在主观地确定的声音范围内。对于自信的分类,发言者必须在十个独立的听力测试中收到相同的评级至少九次。

对于大多数糟糕的扬声器,工程师可以在两个扬声器之间切换,并在某些和弦衰减时听到声音的差异。我们通常通过定制的切换设置在扬声器之间切换,如图1所示。但是,在两次听力测试后,扬声器必须进行物理交换。由于有大量的演讲者,而且每个演讲者都被聆听十次,这个物理过程就变成了劳动密集型的。

图1. Cleestion工程师测试扬声器的聆听室。

为了简化这部分过程,我开发了一个MATLAB应用程序,经过培训的听众可以使用它在参考和测试扬声器之间实时切换。我使用音频工具箱™ 为了直接从MATLAB传输实时音频,创建了用于播放和选择的主UI,并从文档中借用了一个示例来创建第二个UI,用于在播放过程中交互切换曲目(图2)。

图2。在MATLAB中开发的用户界面,用于播放声音,在参考扬声器和测试扬声器之间切换,并将测试扬声器分类为好或坏。

使用此应用程序,工程师可以在一小时而不是八个,而没有先前需要更改扬声器的额外人员,可以在一小时而不是额外的额外分类。人类投入只需要培训目的;最终机器学习程序纯粹基于电声测量,并产生相当于反复聆听测试的结果。

机器学习是在测量组之间找到最合适的区别,并以此作为测试基础的正确工具。一个关键的好处是,机器学习算法学习和适应边界,如果更多的信息随后出现。这意味着程序可以更新以适应变化的组件或口味。

已经建立了机器学习是该工作的工具,我必须开始从头开始建立我的技能。

学习机器学习

要开始,我参加了斯坦福大学安德鲁·努格教授的大规模开放的在线课程(MooC)。该课程提供了对机器学习技术和概念的介绍,包括线性回归,逻辑回归,神经网络和支持向量机(SVM)。万博1manbetx我通过手动编码MATLAB的机器学习算法完成了课程作业。

这些练习给了我对基础知识的赞赏,让我手动在课程中学到的时候手动应用不同的方法。但是,当我获得统计和机器学习工具箱时,我看到了结果的显着改进。一旦我开始使用工具箱,我发现我可以在几下完成我几小时或天数要编程和手动调试的内容。构建和比较许多复杂模型很简单,每个复杂的模型都会拍摄日期,如果不是手动编码的几个月。

创建标记的数据集

要培训机器学习分类器,我首先需要构建标记的数据集。对于此项目,数据集是大量扬声器测量,每个扬声器测量值都是基于聆听测试的好坏标记为好坏。

收集了60名扬声器进行初步调查,我可以使用每个扬声器运行传统的聆听测试,但这是一个漫长而昂贵的过程。相反,我将每个扬声器的离线录制与我开发的应用程序一起使用。这允许即时转换wav文件,而不是手动更换扬声器。将该应用程序交给专业的监听者,使我能够在使用传统方法所需时间的一小部分内构建一个标记的数据集。

选择特征训练机器学习算法

为了训练机器学习分类器,我不仅需要给每个发言者贴上“好”或“坏”的标签,我还需要对原始测量数据进行预处理,以提取有代表性的数字输入特征分类器可以使用。在几个月的时间里,我开发并检查了50多个功能。其中包括能源功能,如能源中心;光谱特征,如高频滚转和亮度;以及心理声学特征,比如清晰度。

心理声学特征与人类感知声音的方式有关,因此,与好的和坏的说话者群体之间的分离密切相关。

与可直接测量的频率响应不同,心理声学特征必须根据测量值计算。为了计算心理声学值,我使用了MATLAB、信号处理工具箱和DSP系统工具箱™ 实施一系列教科书中的心理声学既定公式。我应用了平滑、卷积、峰值查找和计算韦尔奇功率谱密度(PSD)估计等函数。

我从27个特征中选择了一个子集作为机器学习算法的输入。为了让一个特征被纳入,它必须与演讲者的好或坏分组有很好的相关性。没有一个单独的特征是足够的。例如,亮度与好的/坏的分离有最好的相关性,但是概率密度函数的图显示好的和坏的扬声器有相当多的重叠(图3)。

图3。好的扬声器(蓝色)和坏的扬声器(红色)的亮度概率密度函数。好的结果和坏的结果之间仍然有相当多的重叠,尽管在平均值上有明显的差异。

结果可以预测,但有很有限的确定性。我们的想法是,在结合许多结果时,确定性程度会增加。机器学习而不是线性“障碍”类型方法,可以让我们立即考虑所有功能的值,然后计算良好结果的总体概率。

比较的开发和编码特征是最耗时的部分,并为分析提供了一些伟大的新工具。一旦开发出来,是时候评估哪种统计方法最佳。

多元特征的Logistic回归分析

从最简单的方法开始,Logistic回归是一个众所周知的二进制分类器,它通过在特征之间找到最佳决策边界来从另一个中分开一个类。对于单个特征,决策边界由单个值表示。边界的一侧定义为好,另一侧是坏的。我已经看到,没有单个特征足以进行准确的分类,因此我开始使用多个功能来应用线性回归。当考虑两个特征时,决策边界是一条线。有三个特征,它是一个平面(图4)。

图4。使用线性回归确定的边界图,具有两个特征(左)和三个特征(右)。

我用所有27个功能进行了线性逻辑回归,实现了大约80-85%的分类精度。有许多不同的方法可用于Logistic回归。我使用统计和机器学习工具箱的分类学习者应用程序以快速尝试不同类型的实验。即使在使用仅几个特征时,绘图清楚地表明,具有二次和高阶边界的非线性回归将更好地分离测量。在MATLAB中探讨这种方法,我改善了相对于线性边界的性能,将其增加到90%。

用支持向量机改进分类性能万博1manbetx

支持向量机分类器通常比逻辑回归分类器更有效,更容易优化。

为了训练支持向量机模型,我再次使用了统计学和机器学习工具箱中的分类学习应用程序。我只是指定了我想要使用的特征,选择径向基函数(RBF)核,然后点击一下开始训练。在我用于线性逻辑回归的相同数据上进行训练,SVM模型的分类准确率约为91%。

图5中所示的绘图是使用与图3中相同的特征和数据创建的,但好的单元现在被分组在以蓝色突出显示的体积内,而不是通过平面边界与坏单元分开。

图5.三个特征的SVM决策边界曲线图。

我也使用人工神经网络(ANNS)和神经网络工具箱™培训并预测,但通常发现相对于SVM没有改善预测精度。这很可能是由于使用的数据集的大小和功能数量;ANNS可能会改善更大数据集的结果。

正规化,核心化方法和级联架构进行微调

使用超过2种特征来培训模型时,一个风险创建过于复杂的分类器,非常适合培训数据,但在类似但不相同的测量中表现不佳。为避免这种情况,我使用了正规化,采用单独的交叉验证数据集来确保模型将很好地转换为其他数据集。通过调整正则化参数λ,我减少了交叉验证集上的错误―代价是训练集上的错误稍高一些。我使用了优化工具箱™ 找到一个最佳值λ并最小化两个集合上的错误(图6)。

图6.作为训练集(蓝色)和交叉验证集(橙色)的正则化参数Lambda函数的函数。

为了进一步提高分类性能,我尝试了集成方法,再次使用统计和机器学习工具箱中的分类学习器应用程序。集成方法将几个性能合理的分类器组合成一个高性能分类器。集成方法将模型的性能提高到92%左右。

级联架构最初是为了在使用许多特性时减少计算成本而开发的。计算性能对我来说不是问题,但是级联架构的概念被证明是有用的,因为它识别了我的数据集中的异常值。我将分类错误的单位标记为异常,并将其移除,然后使用剩余的单位重新训练分类器。我重复了这一过程两次,以过滤出级联过程中的边界单元。这一步将最终算法的性能提高了约93%。这给了我们一个非常可重复的测试,节省了许多工程师的时间,并减少了对重复收听单个模型的乏味需求。

图7说明了最终机器学习算法的大大提高性能,而不是单独的任何单个特征1

图7。显示最终机器学习算法性能的图。

这些结果是建立在找到最佳分离的基础上的。在实践中,边界可以调整以适应任务,将其转向好的或坏的单位。这使得程序更加灵活,可以针对特定的任务进行调优,对于最重要的组,误差小于0.1%。最小化错误分类好的单元数量(最大精度)或最小化错误分类的坏单元数量(最大召回率)的做法允许算法根据应用程序进行调整。

得到教训

在创建这个应用程序的过程中,我学到了三个经验教训,这三个经验教训将很好地帮助我的团队扩大机器学习的使用范围。首先,应用简单算法(如线性逻辑回归)是有价值的,即使它们最终的性能不如支持向量机、神经网络或集成方法。有了更先进的机器学习技术,很难对结果进行分解和解释。在这方面,我从更简单的算法中学到了更多关于理想性能的知识。

第二个教训是,对于像特征提取这样的长而开放的过程,访问现成的信号处理功能实际上是这个项目的必要条件。它使我能够在相对较短的时间内尝试许多特征选项。

第三课是没有单机学习技术与所有数据集都很好。每个分类器算法的性能取决于数据集的大小,它包含的数据类型,包括多少个功能,等等。我发现无法预测哪些算法将在教科书中读取它们来读取最佳算法。我不得不试试他们。如果我手动编写了编码,那就花了我几年了。使用MATLAB和统计和机器学习工具箱,一旦我准备就绪,我可以在几分钟内尝试10或20个不同的分类器方法。

1这些结果以初步数据为基础,很快将被另外100个单位的结果所取代。

发布于2016 - 92998v00

查看相关功能的文章

查看相关行业的文章