Автоматическая настройка параметров

У меня есть приложение для обработки аудио, которое принимает входной аудиофайл, обрабатывает его и выплевывает измененный выходной аудиофайл. Это приложение для обработки аудио имеет 10-15 параметров, которые влияют на то, как оно обрабатывает аудио, и, следовательно, влияют на содержимое выходного аудиофайла (например, у него может быть другая частотная характеристика, например, громче, тише и т. Д.). Все эти параметры имеют ограниченные диапазоны (например, x0 должно быть < 1 и> -1).

Выходной аудиофайл оценивается инструментом, который дает ему оценку. Этот инструмент знает, как должен звучать "идеальный" вывод, и соответствующим образом оценивает выходной файл. Оценка 1,0 означает, что выходные данные являются идеальными, т.е. входной файл был обработан с наилучшим возможным набором параметров. Оценка 0 означает, что вывод совершенно неверный.

Таким образом, с 10-15 параметрами с их допустимыми диапазонами комбинации бесконечны! Я буду сидеть здесь, вручную настраивая эти параметры, пока не найду лучшее решение. Я проверил некоторые решатели LP/MIP (CBC, MS Solver Foundation, GKLP), но они используют математическое уравнение в качестве целевой функции... вы не "подключаете" функцию внешней оценки, насколько я вижу,

Является ли LP/MIP-решатель правильным инструментом для настройки параметров? Есть идеи?

Спасибо,

akevan

3 ответа

Решение

Вы можете использовать общую эвристику, такую ​​как имитация отжига или генетические алгоритмы. Ваш процесс оценки был бы пригодностью / целевой функцией.

Если бы у вас была целевая функция, то да, LP был бы идеальным подходом (и дал бы идеальный ответ); решение будет чисто аналитическим. Но в отсутствие функции кажется, что вы правильно поняли, что проблема становится проблемой целочисленного программирования. У меня меньше знаний о целочисленном программировании, но я считаю, что это также предполагает целевую функцию для решения. Даже с этой функцией целочисленные программы являются NP-сложными.

Таким образом, кажется, вам нужно будет использовать грубую силу, чтобы обнаружить локальные максимумы, а затем настроить его. Я понимаю, что это именно то, что вы не хотели делать, но это то, что приходит на ум.

Вы можете использовать пакет SPOT (язык программирования R). Это позволяет вам находить (почти) оптимальные настройки параметров, используя значительно меньшее количество прогонов, чем перебор. Вы можете использовать любой язык программирования для своего кода функции пригодности, SPOT имеет адаптер для этого и предлагает автоматический режим с настройкой по умолчанию (вам не нужно беспокоиться о типах конструкции и моделях прогнозирования). У него крутая кривая обучения, но как только вы поймете основы, он станет мощным инструментом. Вот краткое руководство; Глава 2.6 предлагает конкретный пример. Пакет SPOT поставляется с несколькими примерами.

Другие вопросы по тегам