自动参数调整
我有一个音频处理应用程序,它接受输入音频文件,对其进行处理,然后输出修改后的输出音频文件。该音频处理应用程序有 10-15 个参数,这些参数会影响其处理音频的方式,从而影响输出音频文件的内容(例如,它可能具有不同的频率响应、更大声、更安静等)。所有这些参数都有限制范围(例如,x0 必须<1 且>-1)。
输出音频文件由为其评分的工具进行评估。该工具知道“理想”输出听起来应该是什么样子,并相应地对输出文件进行评分。 1.0 分表示输出是理想的,即输入文件是使用最佳参数集进行处理的。 0分意味着输出完全错误。
因此,有 10-15 个参数及其有效范围,组合是无穷无尽的!我会永远坐在这里手动调整这些参数,直到找到最佳解决方案。我已经检查了一些 LP/MIP 求解器(CBC、MS Solver Foundation、GKLP),但它们使用数学方程作为目标函数......据我所知,您不会“插入”外部评估函数。
LP/MIP 求解器是帮助参数调整的正确工具吗?有什么想法吗?
谢谢,
阿克万
I've got a an audio processing app that takes an input audio file, processes it, and spits out a modified output audio file. This audio processing app has 10-15 parameters that affect how it processes the audio, and thus affects the content of the output audio file (it might have, say, a different frequency response, be louder, quieter, etc.). All these parameters have constrained ranges (x0 must be < 1 and > -1 for example).
The output audio file is evaluated by a tool that gives it a score. This tool knows what the "ideal" output should sound like, and scores the output file accordingly. A score of 1.0 means the output is ideal, i.e. the input file was processed with the best possible parameter set. A score of 0 means the output is completely wrong.
So with 10-15 parameters with their valid ranges, the combinations are endless! I'd be sitting here manually tweaking these parameters forever until I got the best solution. I've checked out some LP/MIP solvers (CBC, MS Solver Foundation, GKLP) but these use a mathematical equation as an objective function... you don't "plug in" an external evaluation function as far as I can see.
Is a LP/MIP solver the right tool to aid in the parameter tuning? Any ideas?
Thanks,
akevan
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用一般启发式方法,例如模拟退火或遗传算法。您的评估过程将是适应度/目标函数。
You could use a general heuristic like simulated annealing or genetic algorihms. Your evaluation process would be the fitness/objective function.
您可以使用 SPOT 数据包(R 编程语言)。它允许您使用比蛮力少得多的运行次数来找到(接近)最佳参数设置。您可以使用任何编程语言来编写健身功能代码,SPOT 有一个适配器,并提供默认设置的自动模式(您不必担心设计类型和预测模型)。它的学习曲线很陡峭,但是一旦您了解了基础知识,它就是一个强大的工具。 这里是一个快速指南; 2.6 章提供了一个具体的例子。 SPOT 包附带了几个示例。
You could use the SPOT packet (R programming language). It allows you to find (near-)optimal parameter settings using significantly less runs than brute force. You can use any programming language for your fitness function code, SPOT has an adapter for that, and offers an automatic mode with default setup (You don't have to worry about the design types and prediction models). It has a steep learning curve, but once you understood the basics, it is a powerful tool. Here is a quick guide; chapter 2.6 offers a concrete example. The SPOT package comes with several examples.
如果你有目标函数,那么 LP 将是理想的方法(并且会给出理想的答案);解决方案将是纯粹的分析。但在没有该函数的情况下,您似乎已经正确理解该问题成为整数规划问题。我对整数规划的了解较少,但我相信它也假设有一个目标函数来解决。即使有了这个函数,整数程序也是 NP 困难的。
因此,您似乎需要使用强力来检测局部最大值,然后对其进行调整。我知道这正是你不想做的,但这就是你想到的。
If you had the objective function, then yes LP would be the ideal approach (and would give the ideal answer); the solution would be purely analytic. But in the absence of the function it seems you've correctly understood the problem becomes an integer programming problem. I have less knowledge of integer programming, but I believe that too assumes an objective function to solve. Even with the function, integer programs are NP-hard.
So it seems you would need to use brute force to detect a local maxima, and then tune it. I realize that is exactly what you didn't want to do, but that is what comes to mind.