自动参数调整

本文关键字:调整 参数 | 更新日期: 2023-09-27 18:04:42

我有一个音频处理应用程序,它接受输入音频文件,处理它,并吐出修改后的输出音频文件。这个音频处理应用程序有10-15个参数,影响它如何处理音频,从而影响输出音频文件的内容(它可能有,说,不同的频率响应,更大声,更安静等)。所有这些参数都有限定的范围(x0必须是<例如1和> -1)。

输出音频文件由一个工具评估,并给出一个分数。这个工具知道"理想的"输出应该是什么样子,并相应地对输出文件进行评分。得分为1.0意味着输出是理想的,即输入文件是用最好的参数集处理的。分数为0表示输出完全错误。

所以有10-15个参数和它们的有效范围,组合是无止境的!我会一直坐在这里手动调整这些参数直到我得到最好的解决方案。我已经检查了一些LP/MIP求解器(CBC, MS Solver Foundation, GKLP),但它们使用数学方程作为目标函数……据我所知,你没有"插入"一个外部评估函数。

LP/MIP求解器是帮助参数调优的正确工具吗?什么好主意吗?

谢谢,

akevan

自动参数调整

您可以使用模拟退火或遗传算法等一般启发式方法。您的评估过程将是适应度/目标函数。

您可以使用SPOT包(R编程语言)。它允许您使用比蛮力更少的运行来找到(接近)最佳参数设置。您可以为您的健身功能代码使用任何编程语言,SPOT有一个适配器,并提供默认设置的自动模式(您不必担心设计类型和预测模型)。它有一个陡峭的学习曲线,但一旦你了解了基本知识,它就是一个强大的工具。这里有一个快速指南;第2.6章给出了一个具体的例子。SPOT包附带了几个例子。

如果你有目标函数,那么LP将是理想的方法(并且会给出理想的答案);解是纯解析的。但是在没有函数的情况下,你似乎已经正确地理解了这个问题变成了一个整数规划问题。我对整数规划的知识不多,但我相信它也假设了一个目标函数来解决。即使有了这个函数,整数程序也是np困难的。

因此,似乎您需要使用蛮力来检测局部最大值,然后对其进行调优。我知道那正是你不想做的事,但这正是我想到的。