Вопрос:
Я хочу начать дискуссию о том, как люди устанавливают алгоритмические параметры, когда невозможно провести валидацию по отношению к основополагающей истине (возможно, потому, что основополагающая истина просто не может быть получена или ее очень трудно / утомительно получить).
Я прочитал множество статей и реализовал базовые алгоритмы, в которых - говорят, что набор параметров был установлен «эмпирически» - и часто я обнаруживал, что именно они влияют на общность алгоритма (даже если теория, лежащая в основе метода, элегантна, соблазнительна и обоснована)
Буду признателен, если вы поделитесь своими мыслями. И нет правильного или неправильного ответа на этот вопрос. Я просто хочу знать, как все остальные справляются с этим.
Предпосылки / Источник-на-вопрос:
Я - ученый, работающий в области анализа изображений, компьютерного зрения и машинного обучения, и этот вопрос давно задумывался, поскольку я сталкивался с этой дилеммой не раз, когда я разрабатываю новый алгоритм и я потратил значительное количество времени на настройку параметров.
Кроме того, я думаю, что мой вопрос здесь более общий для любой области, где в вычислительных алгоритмах активно участвуют, и я хочу пригласить мысли людей из всех заинтересованных областей.
Я хотел бы привести вам конкретный пример, чтобы он помог вам подумать:
--- Возьмите случай обнаружения функции (скажем, круговые пятна или выступающие точки). Вы запускаете несколько фильтров (требуются параметры) в разных масштабах (параметры масштаба) и, вероятно, пороговый ответ (пороговый параметр). Как правило, невозможно получить основную истину для проверки и, таким образом, автоматически настроить параметры в таких сценариях.
--- Возьмите любую вычислительную среду, которая включает в себя множество компонентов обработки сигналов. Всегда есть параметры для настройки, и обычно нет основополагающих истин, и когда вы субъективно настраиваете их на небольшом случайном подмножестве своего набора данных, вы однажды столкнетесь со случаем, который он не обобщает.
Этот параметр devil более проблематичен, когда вы устанавливаете параметры для некоторых промежуточных шагов в вашем алгоритме.
И я часто обнаруживал, что невозможно найти проблему нахождения хороших значений для этих параметров как задачу оптимизации, с целевой функцией которой вы можете взять производную и, таким образом, использовать стандартные алгоритмы оптимизации для нахождения хороших значений.
Кроме того, во многих сценариях предоставление этих параметров конечному пользователю не вариант, так как мы часто разрабатываем приложения / программное обеспечение для неисчислительных конечных пользователей (скажем, биологов, врачей), и они обычно оказываются невежественными, когда вы просите их настроить это если его очень интуитивно понятно (например, приблизительный размер объекта).
Пожалуйста, поделитесь своими мыслями.
I want to kick up a discussion ...
действительно хороший признак того, что то, что вы спрашиваете, не подходит для формата * .SE.