Я не знаю, что вы подразумеваете под "простыми производными". Я понимаю, что это означает, что вы протестировали градиентный спуск и нашли его неудовлетворительным из-за обилия локальных экстремумов. Если это так, вы хотите посмотреть имитация отжига :
Отжиг - это металлургический процесс, используемый для закалки металлов путем нагревания и охлаждения. (...). Эти нарушения происходят из-за залипания атомов в неправильном месте структуры. В процессе отжига металл нагревается, а затем ему дают медленно остыть. Нагревание дает атомам энергию, необходимую для того, чтобы они застряли, а медленный период охлаждения позволяет им перейти в правильное положение в структуре.
(...)
Однако, чтобы избежать локальной оптимы, алгоритм будет иметь вероятность сделать шаг в неправильном направлении : другими словами, сделать шаг, который увеличивает значение для задачи минимизации или уменьшает значение для задачи максимизации. Для моделирования процесса отжига эта вероятность будет частично зависеть от параметра «температуры» в алгоритме, который инициализируется при высоком значении и уменьшается на каждой итерации. Следовательно, алгоритм изначально будет иметь высокую вероятность ухода от ближайшего (вероятно, локального) оптимума . В течение итераций эта вероятность будет уменьшаться, и алгоритм будет сходиться к (мы надеемся, глобальному) оптимуму, от которого у него не было шансов уйти. ( источник , порезы &, выделение мое)
Я знаю , что локальная оптима - это именно то, что круги на вашем рисунке представляют выше, и, следовательно, то, что вы хотите найти. Но, поскольку я интерпретирую цитату « так много локальных мин и макс, простые производные не будут работать. », это также то, что вы найдете слишком много. Я предполагаю, что у вас есть проблемы со всем "зигзагообразным", который ваша кривая делает между двумя обведенными точками.
Все, что, по-видимому, отличает оптимум, который вы обводите от остальных точек кривой, это их глобальность , а именно: чтобы найти более низкую точку , чем первая точка, которую вы обведите слева вам нужно пройти дальше от в любую сторону в координате x, чем вам нужно сделать то же самое для его ближайших соседей. Это то, что дает вам отжиг: в зависимости от температурного параметра вы можете контролировать размер скачков, которые вы позволяете себе делать. Там имеет , чтобы быть значением, для которого вы ловите «большие» локальные оптимумы, и все же пропускаете «маленькие». То, что я предлагаю, не является революционным: есть несколько примеров (например, 1 2 ), где люди получают хорошие результаты из таких шумных данных.