Одной из ключевых проблем при обучении нейронных сетей является попадание в локальные минимумы функции потерь. В контексте библиотеки Synaptic это проявляется при использовании алгоритма обратного распространения ошибки (backpropagation) для оптимизации весов сети. Функция потерь, особенно для сложных многослойных сетей, имеет высокую нелинейность, что создаёт множество точек критического значения, среди которых встречаются локальные минимумы, плато и седловые точки.
Локальный минимум — это такая точка функции потерь, в которой градиент равен нулю, а значение функции меньше, чем в окрестности, но не обязательно минимальное глобально. Формально, если обозначить функцию потерь как ( L() ), где () — вектор весов сети, локальный минимум (^*) удовлетворяет условиям:
[ L(^) = 0, L(^) < L() ^*.]
Ключевая особенность: градиентный спуск остановится в локальном минимуме, если не применяются методы, позволяющие “выбраться” из него.
Нелинейные активации и многослойность Использование функций активации, таких как sigmoid или tanh, делает поверхность ошибки крайне неровной, создавая большое количество локальных минимумов. Чем больше скрытых слоёв, тем выше вероятность появления сложной топологии функции потерь.
Начальные веса В Synaptic веса инициализируются случайным образом. Плохая инициализация может поместить алгоритм сразу в область с локальными минимумами или узкие “долины”, из которых трудно выбраться.
Малые размеры батчей и шум данных Малые батчи при обучении через стохастический градиентный спуск (SGD) могут создавать шумные градиенты, которые локально стабилизируют сеть в субоптимальных точках.
Synaptic поддерживает стохастическую версию градиентного спуска, где веса обновляются после каждого примера или небольшого батча. Формула обновления весов:
[ w_{ij} w_{ij} - ]
где () — коэффициент обучения. Шум, внесённый случайной выборкой, позволяет сети покинуть мелкие локальные минимумы.
В Synaptic можно реализовать моментум при обновлении весов:
[ v_{ij}(t) = v_{ij}(t-1) - , w_{ij} w_{ij} + v_{ij}(t)]
где () — коэффициент момента. Моментум помогает преодолевать “плоскости” и мелкие локальные минимумы, создавая инерцию движения по поверхности ошибки.
Хотя Synaptic не имеет встроенных Adam или RMSProp, их можно реализовать вручную для более устойчивого выхода из локальных минимумов. Основная идея: динамическая корректировка шага обучения по величине градиента, что предотвращает “застревание” в областях с маленькими градиентами.
Иногда локальные минимумы неизбежны. Простое решение —
повторное обучение с другими начальными весами. В
Synaptic это делается через метод
layer.set({bias:..., weights:...}) или вручную
перезаписывая веса. Этот метод особенно эффективен для сетей с небольшой
глубиной, где количество глобальных минимумов невелико.
XOR-проблема с одной скрытой нейросетью Если скрытый слой мал и веса инициализированы неблагоприятно, сеть может “зациклиться” на выводе всех нулей или единиц, что соответствует локальному минимуму функции потерь.
Распознавание рукописных цифр В многослойной сети MNIST, при недостаточно больших батчах или малом коэффициенте обучения, сеть иногда стабилизируется на точности около 85–90%, хотя глобальный минимум обеспечивает точность выше 95%.
Эффективное управление локальными минимумами напрямую связано с архитектурой сети, размером данных и параметрами обучения. Практика показывает, что сочетание небольших батчей и адаптивного шага обучения снижает вероятность попадания в субоптимальные состояния и ускоряет сходимость к глобальному минимуму.