В восхождении на холм для 1 измерения я стараюсь, чтобы два соседа - небольшая дельта слева и одна справа от моей текущей точки, а затем держите ту, которая дает более высокое значение целевой функции. Как расширить его до n-мерного пространства? Как определить сосед для n-мерного пространства? Должен ли я попробовать 2^n соседей (дельта применяется к каждому измерению)?Холм, поднимающийся в n-мерном пространстве: поиск соседа
ответ
Вам не нужно сравнивать каждую пару соседей, вам нужно вычислить набор соседей, например. на круг (сферу/гиперсферу в более высоких измерениях) с радиусом дельта, а затем взять тот, который имеет самые высокие значения, чтобы «подняться вверх». В любом случае вы будете дискретизировать окрестности вашего текущего решения и вычислить функцию оценки для каждого соседа. Если вы можете дифференцировать свою функцию, то алгоритмы, основанные на градиентном восхождении/спуске, могут решить вашу проблему: 1) Вычислить градиент (направление самого крутого подъема) 2) Пройти небольшой шаг в направлении градиента 3) Остановить, если решение не изменяется
Общей проблемой с этими алгоритмами является то, что вы часто находите локальные максимумы/минимумы. Вы можете найти отличный обзор алгоритмов спуска/подъема градиента здесь: http://sebastianruder.com/optimizing-gradient-descent/
Это не объясняет, что считать соседи в многомерном пространстве. Например, должно быть только 2n соседей в n кардинальных направлениях или 2^n соседей для гиперкуба {-delta, + delta}^n, как предложено в вопросе, или, может быть, 3^n - 1 соседей для {-delta, 0, + delta}^n? – Gassa
Имея дело с действительными числами, у нас есть бесконечное количество соседей на выбор. В случае 1D, учитывая дельта, у нас есть только два соседа. В 2D мы получаем уже круг с бесконечным числом негров на этом круге. Конечно, мы можем идти только по направлениям (2^2 = 4). Возможно, дискретизируя окрестности (в 2D сетке, в 3D сетка вокселей может быть решением). –
Одним из примеров многомерного алгоритма поиска, которому нужны только соседи O (n) вместо O (2^n), является симплексный метод Торцона, описанный в http://www.caam.rice.edu/tech_reports/1990/TR90-07.pdf. Я выбрал это по более широко известному методу Нельдера-Мида, потому что метод симметрии Торчона имеет доказательство конвергенции (сходимость к локальному оптимуму при некоторых разумных условиях).
- 1. Восхождение на холм в пространстве 7D
- 2. Быстрый поиск ближайшего соседа
- 3. Поиск соседа в массиве 2d
- 4. Поиск ближайшего соседа битовой строки
- 5. Поиск наименьшего соседа в 2D-массиве
- 6. Поиск идентификатора ближайшего соседа в SQL
- 7. Поиск ближайшего соседа (-ов) в дереве KD
- 8. Поиск действительных индексов соседа в массиве 2d
- 9. Как работает поиск ближайшего соседа KD-дерева?
- 10. Эффективный поиск ближайшего соседа для разреженных матриц
- 11. 2D KD дерева и ближайшего соседа Поиск
- 12. Пространственный поиск для соседа с лимитом расстояния?
- 13. Меню поднимающийся из нижней части изображения
- 14. Поиск специальных символов в пространстве в sphinx
- 15. поиск в пространстве имен в C++
- 16. Matlab - поиск ближайшего соседа в трехмерной системе координат
- 17. Поиск ближайшего соседа в 2D с использованием разбиения сетки
- 18. AntHill? Как добавить проект на холм?
- 19. Как заполнить холм пользовательской текстурой, используя OpenGl?
- 20. Поиск свободного места в огромном пространстве памяти
- 21. Поиск «ноги» высоты треугольника в 3D-пространстве
- 22. Указатели символов и поиск в пространстве
- 23. Хранение ближайшего соседа
- 24. Как получить управление соседа/соседа в ретрансляторе после автоповтора
- 25. Поиск ближайшего соседа от 1 до 2 миллионов движущихся объектов
- 26. Быстрый поиск ближайшего соседа с использованием Parse as backend
- 27. Поиск ближайшего соседа между двумя наборами датированных точек
- 28. Поиск ближайшего соседа с использованием оптимизированного алгоритма Левенштейна
- 29. C++ - Поиск ближайшего соседа с использованием opencv flann
- 30. Как реализовать поиск ближайшего соседа с помощью KDTrees?
Отметьте [этот ответ для поиска ближайшего соседа в данных высокого размера] (http://stackoverflow.com/questions/5751114/nearest-neighbors-in-high-dimensional-data). – macco