Параметр momentum является ключевым
элементом настройки обучения нейронных сетей в библиотеке Brain.js. Он
относится к алгоритму обратного распространения ошибки
(backpropagation) и влияет на скорость и стабильность процесса
оптимизации весов сети.
В стандартном градиентном спуске корректировка весов сети осуществляется строго пропорционально градиенту функции ошибки. Это может приводить к:
Параметр momentum вводит понятие
“инерции”: корректировка весов учитывает не только текущий градиент, но
и предыдущее изменение весов. Формула обновления весов с учетом momentum
выглядит так:
[ w(t) = E(w(t)) + w(t-1)]
где:
learningRate),momentum),Ключевой момент: momentum помогает “прогнать” сеть через мелкие локальные минимумы и сгладить колебания.
В Brain.js momentum задается в объекте конфигурации при создании сети:
const brain = require('brain.js');
const net = new brain.NeuralNetwork({
hiddenLayers: [4, 4],
learningRate: 0.3,
momentum: 0.8
});
Стабилизация процесса Momentum уменьшает вероятность резких колебаний весов, особенно при сложных или сильно нелинейных данных.
Ускорение сходимости При правильной настройке сети достигают минимальной ошибки быстрее, чем без momentum.
Риск «перелета» через минимум Слишком высокое значение может вызвать нестабильность, особенно при большой скорости обучения. Оптимальное сочетание learningRate и momentum критично для эффективного обучения.
const trainingData = [
{ input: [0, 0], output: [0] },
{ input: [0, 1], output: [1] },
{ input: [1, 0], output: [1] },
{ input: [1, 1], output: [0] }
];
const net = new brain.NeuralNetwork({
hiddenLayers: [3],
learningRate: 0.2,
momentum: 0.7
});
net.train(trainingData, {
iterations: 20000,
errorThresh: 0.005,
log: true,
logPeriod: 1000
});
const output = net.run([1, 0]);
console.log(output);
В этом примере momentum позволяет сети быстрее освоить XOR-функцию, сглаживая колебания весов и предотвращая застревание в локальном минимуме.
learningRate — основной ускоритель
обучения. Сочетание высокой learningRate и высокого momentum может
привести к нестабильности.iterations и errorThresh
— определяют, как долго и с какой точностью сеть будет обучаться.
Momentum помогает быстрее достигать заданного
errorThresh.hiddenLayers — глубина сети влияет на
чувствительность к momentum. Чем глубже сеть, тем выше полезность
небольшого значения momentum для предотвращения колебаний.Внутри Brain.js обновление веса с учетом momentum можно понимать так:
Δw = learningRate * gradient + momentum * previousΔw
weight += Δw
Это простое выражение объединяет инерцию и текущий градиент, обеспечивая более устойчивое и предсказуемое обучение нейронной сети.
Momentum является инструментом тонкой настройки, позволяющим значительно улучшить эффективность и стабильность обучения в задачах различной сложности.