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

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

Celestion扬声器为许多著名吉他手和贝斯手的表演提供了动力,包括吉米·亨德里克斯(Jimi Hendrix)等传奇人物。决定一个扬声器是否适合专业音乐家是一个漫长而艰苦的过程。每个扬声器都有自己独特的声音,这是基于中音字符和亮度等音质特征的组合。评估一个乐器的扬声器包括对它是否发出“好”声音的主观判断。只有具有多年经验的工程师才能做出可靠的决定,而且必须在反复听单个扬声器并将其发出的声音与参考扬声器发出的声音进行比较之后。

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

用MATLAB简化手工分类过程

手动对单个发言者进行分类,工程师听声音产生作为一个吉他是通过它和比较已知的好的参考扬声器产生的声音相同的吉他,amp。这项工作是在我们的特别设计的听力室(图1),工程师不是寻找一个扬声器听起来完全一样的但对于一个参考sounds as good as the reference and is within a subjectively determined sonic range. For a confident classification, a speaker has to receive the same rating at least nine times in ten independent listening tests.

对于大多数糟糕的扬声器,工程师可以在两个扬声器之间切换,并听到某些和弦衰减时的声音差异。我们通常使用定制的切换设置在扬声器之间切换,如图1所示。然而,在两次听力测试后,发言者必须进行物理交换。由于演讲者人数众多,每个人都要听十遍,这个物理过程变得非常吃力。

图1所示。听力室,Celestion工程师测试扬声器的地方。

为了简化这一部分的过程,我开发了一个MATLAB应用程序,训练听众可以使用它在参考和测试演讲者之间进行实时切换。我使用Audio Toolbox™直接从MATLAB传输实时音频,创建了用于播放和选择的主UI,并从文档中借用了一个示例来创建第二个UI,用于在播放期间交互式地切换音轨(图2)。

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

使用这个应用程序,工程师可以在一小时内对大量扬声器进行分类,而不是八个小时,而且以前需要额外的人来帮助更换扬声器。人力投入仅用于培训目的;最终的机器学习程序完全基于电声测量,产生的结果相当于重复的听力测试。

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

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

学习机器学习

首先,我报名参加了一个由斯坦福大学的Andrew Ng教授的大型公开网络课程(MOOC)。本课程介绍机器学习技术和概念,包括线性回归、逻辑回归、神经网络和支持向量机(svm)。金宝app我在MATLAB中手工编写机器学习算法来完成课程作业。

这些练习让我了解了基础知识,让我能够像在课程中学习的那样手动应用不同的方法。然而,当我使用统计学和机器学习工具箱时,我看到了结果的显著改善。一旦我开始使用工具箱,我发现我可以在几次点击中完成我花了几个小时或几天手工编程和调试的工作。构建和比较许多复杂的模型是很简单的,每个模型都需要数天(如果不是数周的话)的手工编码工作。

创建标记数据集

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

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

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

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

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

与可以直接测量的频率响应不同,心理声学特征必须由测量值计算出来。为了计算心理声学值,我使用MATLAB、Signal Processing Toolbox和DSP System Toolbox™来实现从一系列教科书中建立的心理声学公式。我应用了平滑、卷积、峰值查找和计算Welch的功率谱密度(PSD)估计等函数。

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

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

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

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

多特征Logistic回归的应用

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

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

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

用支持向量机改进分类性能金宝app

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

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

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

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

我还使用人工神经网络(ann)和神经网络工具箱™进行训练和预测,但通常发现,预测精度没有提高相对于支持向量机。这可能是由于使用的数据集的大小和功能的数量;人工神经网络有可能改善更大数据集的结果。

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

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

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

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

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

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

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

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

经验教训

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

第二个教训是,在像特征提取这样的长而开放的过程中,获取现成的信号处理函数几乎是必要的——在这个项目中,它使我能够在相对较短的时间内试验许多特征选项。

第三个教训是,没有一种单一的机器学习技术适用于所有的数据集。每个分类器算法的性能取决于数据集的大小、它包含的数据类型、包含多少特性,等等。我发现不可能通过阅读教科书来预测哪种算法最有效。我只能试一试。如果我手动编写代码,可能要花几年时间。有了MATLAB、统计学和机器学习工具箱,一旦我准备好了数据,我可以在几分钟内尝试10或20种不同的分类器方法。

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

发布于2016 - 92998v00


查看相关功能的文章

查看相关行业的文章