Снова про оптимизацию.

Jan 15, 2018 23:09

Итак, при оптимизации сложных функций наподобие современных сетей есть проблема исчезающе малого изменения (vanishing gradient problem). Современные методы градиентного спуска справляются с ней путём изменения весов при коэффициентах - после вычисления вектора градиента он поэлементно домножается на вектор весов, который в разных вариантах считается по-разному, но назначение у него всегда одно, это понижение изменений в сильно меняющихся переменных.

В предыдущей серии я поборол эту проблему, введя массы частиц - вектор параметров интерпретируется, как вектор одномерных координат частиц, - чем дальше от выхода параметр, тем меньше масса частицы, связанной с параметром. В результате я получил приятное ускорение процесса оптимизации. заветные 94% точности на PenDigits процесс начал достигать за 80 итераций, против 130-150 без масс частиц.

Однако это решение не так, чтобы очень хорошо. Для вычисления массы надо знать структуру задачи, а в некоторых случаях это практически невозможно. Самый простой пример это тренировка рекурсивной сети, где происходит разворот сети во времени и, в некоторых случаях, разворачивание может произвольным.

Поэтому я взял финт ушами из природы - я ввёл скорость света, как предельную скорость изменений.

Предварительные эксперименты показывают, что такой подход вполне работает в начале оптимизации, когда перемещения велики. Позже, когда веса более-менее устаканиваются, он перестаёт работать. Надо ещё эксперименты провести.

Плюс, множитель Лоренца включает в себя корень квадратный, а он определён для положительных подкоренных выражений. И если у меня из-за неточности вычислений подкоренное выражение становится отрицательным, то могут возникнуть ошибки, корректировка которых также может привести к ошибкам точности. Такое ещё возможно для 1/f(t) - надо смотреть, чтобы делитель не пересёк 0.

В общем, прогресс есть, и довольно интересный.

А ещё у меня возникает вопрос - не меняется ли у нас скорость света в нашем физическом мире? ;)

Если я правильно все понимаю, она должна уменьшаться. ;)

физика, нейронные сети, оптимизация

Previous post Next post
Up