Численное и аналитическое вычисление градиента - PullRequest
0 голосов
/ 11 марта 2019

Меня попросили оптимизировать фрагмент кода, который используется для решения проблемы поиска наилучшего соответствия между двумя наборами точек, снятых двумя разными камерами.Текущий подход использует SCG, который требует функции для вычисления ошибки и другой для вычисления градиента.Оптимизация, которую я пытаюсь представить, состоит в том, чтобы вычислять градиент из функции ошибки, используя цепное правило, вместо численного вычисления градиента.К сожалению, сравнение числовых и аналитических градиентов в нескольких точках приводит к совершенно разным градиентам (по абсолютной величине, но с тем же знаком) .Меня смущает то, что если я ввожу что-то вроде скорости обучения - просто умножая градиент на 0,001 или 0,0001 , подход аналитического градиента сходится к тому же глобальному оптимуму, в противном случае он сходится к решению с более высоким значением дляфункция потери.

Поэтому я прошу совета, как отладить проблему и есть ли способ выяснить, что вызывает проблему, если мы предположим, что дифференцирование реализовано правильно!

PS.Весь код написан в Matlab.

...