Стратегии изменения learning rate в процессе

В библиотеке Synaptic learning rate (скорость обучения) задаётся через параметр learningRate при обучении сети методом обратного распространения ошибки. Значение этого параметра определяет, насколько сильно корректируются веса нейронной сети на каждой итерации обучения. Управление learning rate является критически важным для сходимости сети и скорости обучения.

network.train(trainingSet, {
    rate: 0.1, // learning rate
    iterations: 20000,
    error: 0.005,
    shuffle: true,
    log: 1000
});

В этом примере rate: 0.1 задаёт базовую скорость обучения. Простая константная скорость подходит для небольших или стабильных задач, но в более сложных сценариях часто требуется динамическая корректировка learning rate.


Постепенное уменьшение learning rate

Одна из распространённых стратегий — уменьшение learning rate по мере обучения. Цель — позволить сети сначала быстро адаптироваться, а затем более точно уточнять веса. В Synaptic это реализуется вручную через циклы обучения и изменение параметра rate.

Пример:

let rate = 0.5;
for (let i = 0; i < 10000; i++) {
    network.activate(inputData);
    network.propagate(rate, targetOutput);

    // Линейное уменьшение learning rate
    rate *= 0.999;
}

Ключевой момент: слишком резкое уменьшение learning rate может замедлить обучение, а слишком медленное — привести к колебаниям и нестабильности.


Пошаговое снижение learning rate

Для более контролируемого снижения используется пошаговое уменьшение. Здесь learning rate фиксируется на определённом значении несколько итераций, а затем уменьшается на ступень:

let initialRate = 0.5;
let steps = [5000, 10000, 15000]; // итерации, после которых уменьшается rate
let rates = [0.5, 0.1, 0.01, 0.001];

for (let i = 0; i < 20000; i++) {
    network.activate(inputData);
    network.propagate(rates[0], targetOutput);

    if (i >= steps[0]) rates[0] = rates[1];
    if (i >= steps[1]) rates[0] = rates[2];
    if (i >= steps[2]) rates[0] = rates[3];
}

Пошаговое снижение подходит для задач, где требуется стабильная сходимость на финальных этапах обучения.


Адаптивные стратегии

Адаптивное изменение learning rate основано на мониторинге ошибки. Если ошибка уменьшается медленно или колеблется, learning rate корректируется автоматически:

let rate = 0.3;
let prevError = Infinity;

for (let i = 0; i < 10000; i++) {
    let output = network.activate(inputData);
    let error = network.propagate(rate, targetOutput);

    if (error > prevError) {
        rate *= 0.9; // уменьшение, если ошибка растёт
    } else {
        rate *= 1.01; // небольшое увеличение при успешной сходимости
    }

    prevError = error;
}

Адаптивная стратегия позволяет избегать застревания в локальных минимумах и повышает стабильность обучения.


Комбинирование стратегий

Часто на практике используют комбинированные подходы: начальное быстрое обучение с высоким learning rate, затем пошаговое или адаптивное уменьшение. Такой подход повышает скорость обучения на начальных этапах и точность на финальных:

let rate = 0.5;
let prevError = Infinity;

for (let i = 0; i < 20000; i++) {
    let output = network.activate(inputData);
    let error = network.propagate(rate, targetOutput);

    // Адаптивная корректировка
    if (error > prevError) rate *= 0.95;

    // Пошаговое снижение
    if (i === 10000) rate = 0.05;

    prevError = error;
}

Рекомендации по выбору learning rate

  • Высокие значения (0.5–1.0) ускоряют начальное обучение, но повышают риск расходимости.
  • Средние значения (0.1–0.3) подходят для большинства задач с умеренной сложностью.
  • Низкие значения (0.001–0.01) нужны для тонкой настройки весов и стабилизации на финальных этапах.
  • Использование динамических стратегий почти всегда эффективнее константного значения, особенно при сложных и многослойных сетях.

Практические нюансы в Synaptic

  1. Synaptic не имеет встроенного автоматического механизма адаптивного learning rate, поэтому все стратегии реализуются вручную через циклы и изменения параметра rate.
  2. Для сложных архитектур стоит контролировать скорость изменения learning rate, чтобы не вызвать резких скачков градиентов.
  3. Логирование текущей ошибки и learning rate позволяет отслеживать эффективность стратегии и корректировать её при необходимости.

Хотите, я могу сделать отдельный раздел с реальными примерами обучения сети XOR с разными стратегиями изменения learning rate — это будет практическая иллюстрация всех подходов.