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