Скачиваний:
0
Добавлен:
11.04.2026
Размер:
30.95 Кб
Скачать

Лекция: Обучение нейронных сетей — от основ до продвинутых методов

Введение

Нейронные сети обучаются путём минимизации функции ошибки (функции потерь). Пусть у нас есть обучающая выборка: входные векторы x и соответствующие желаемые выходы d. Сеть с весами w вычисляет выходы Ошибка — мера рассогласования. Обычно используют среднеквадратичную ошибку:

Задача: найти такой вектор весов w, который минимизирует E(w). Это достигается итеративными методами оптимизации, чаще всего градиентными.

1. Алгоритм обратного распространения ошибки (Backpropagation)

Backpropagation — ключевой алгоритм для вычисления градиента функции ошибки по всем весам многослойной сети. Он основан на правиле цепочки и состоит из двух этапов: прямой проход (вычисление выходов) и обратный проход (распространение ошибки от выхода к входу).

1.1. Прямой проход

Для каждого слоя k (от 1 до L) вычисляются взвешенные суммы и активации:

где f — функция активации (сигмоида, ReLU и т.д.), — входной слой.

1.2. Обратный проход. Цепное правило

Ошибка E зависит от весов через выходы сети. Градиент по весу

где — «локальная ошибка» нейрона q в слое k.

Для выходного слоя (k = L):

Для скрытого слоя (k-1) ошибка распространяется назад:

1.3. Коррекция весов (градиентный спуск)

Веса обновляются в направлении, противоположном градиенту:

где — скорость обучения (learning rate).

Пример: один нейрон с сигмоидой

Пусть выходной нейрон: y = , (желаемый выход).

Ошибка

Если , и веса увеличатся, чтобы поднять выход.

2. Градиентные методы оптимизации

Простой градиентный спуск имеет недостатки: медленная сходимость в «оврагах», чувствительность к выбору , остановка в локальных минимумах. Рассмотрим улучшения.

2.1. Наискорейший спуск (Steepest Descent)

Направление , где g — градиент. Шаг выбирается, чтобы

Достоинства: простота, малые требования к памяти.

Недостатки: не учитывает кривизну поверхности, замедляется на плато, плохо работает в узких оврагах.

2.2. Стохастический градиентный спуск (SGD)

Вычисление градиента по всей выборке дорого. SGD использует один случайный пример (или мини-пакет) для оценки градиента. Это вносит шум, но позволяет быстрее обновлять веса и часто уходит из плохих локальных минимумов.

2.3. Метод момента (Momentum)

Имитирует физическую инерцию: обновление зависит от предыдущего изменения.

где — коэффициент момента (обычно 0.9).

Эффект: ускоряет движение в направлениях с постоянным знаком градиента и сглаживает колебания.

2.4. Методы второго порядка (переменной метрики)

Используют квадратичную аппроксимацию:

Минимум аппроксимации:

Прямое вычисление гессиана H (матрицы вторых производных) требует O(n^2) памяти и O(n^3) времени, что неприемлемо для больших сетей.

Квазиньютоновские методы (BFGS, L-BFGS) строят приближение обратного гессиана на основе изменений градиента. L-BFGS хранит только несколько последних векторов, что экономит память.

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

2.5. Оптимизатор Sophia

Sophia — современный метод второго порядка, разработанный для больших языковых моделей (LLM).

· Усредняет градиент (скользящее среднее).

· Аппроксимирует диагональные элементы гессиана каждые n эпох (не на каждом шаге).

· Использует клипирование для избежания слишком резких изменений весов.

Sophia требует в 2 раза меньше вычислений, чем Adam, при достижении той же точности, и эффективна для моделей среднего размера.

2.6. Алгоритм имитации отжига (Simulated Annealing)

Стохастический метод, не использующий градиент.

1. Инициализируем веса.

2. Вычисляем выход и ошибку для примера.

3. Случайно выбираем вес и изменяем его на случайную величину.

4. Если ошибка уменьшилась — принимаем изменение. Если увеличилась — принимаем с вероятностью, зависящей от «температуры» T.

5. Повторяем, постепенно понижая T (режим отжига).

Скорость сходимости:

· Метод Больцмана:

· Распределение Коши: (тяжёлые хвосты позволяют чаще выбирать большие шаги).

Метод может глобально находить минимум, но очень медленный для глубоких сетей.

3. Инициализация весов

Неправильная инициализация приводит к исчезающим или взрывающимся градиентам.

3.1. Почему нельзя обнулять веса?

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

3.2. Критерии хорошей инициализации

· Входы нормализованы: нулевое среднее, единичная дисперсия, некоррелированы.

· Начальные веса имеют нулевое среднее.

· Дисперсия выходов нейрона должна сохраняться на уровне 1, чтобы избежать затухания сигнала.

Для линейной комбинации при независимых с нулевым средним и дисперсией 1, дисперсия y равна . Чтобы , нужно .

3.3. Практические схемы

· Инициализация Ксавье (Xavier): для сигмоиды или — веса из равномерного распределения или нормального

· Инициализация He: для ReLU — поскольку ReLU «убивает» половину нейронов, дисперсию нужно удвоить.

· Разреженная инициализация: большинство весов нулевые, небольшое количество случайных ненулевых.

· Смещения (bias): обычно инициализируются нулями (кроме некоторых случаев, например, для ReLU можно инициализировать небольшим положительным числом, чтобы обеспечить градиент).

Пример

Для слоя с 784 входами (как в MNIST) и ReLU: веса инициализируем как

4. Формирование обучающей выборки и пакетов

4.1. Размер выборки

Опытное правило: количество примеров N должно быть порядка числа весов |W| (часто в 5–10 раз больше). «Чем больше, тем лучше» — сеть обобщает при избытке данных.

4.2. Состав выборки

· Репрезентативность: выборка должна отражать все разнообразие данных, с которыми сеть столкнется на практике.

· Согласованность с валидационной и тестовой выборками: все три выборки должны быть взяты из одного распределения.

· Аугментация данных: искусственное расширение выборки за счёт шумов, искажений, поворотов, сдвигов, а также генерация синтетических данных с помощью моделей.

4.3. Формирование пакетов (мини-батчей)

Пакет — часть обучающей выборки, по которой вычисляется коррекция весов на одном шаге. Рекомендации:

· Случайный порядок примеров (перемешивание перед каждой эпохой).

· Принцип максимизации информативности: включать в пакет примеры, вызывающие наибольшие ошибки, или кардинально отличающиеся друг от друга.

· Схема акцентирования: чаще предъявлять трудные примеры.

· Коррекция распределения: если в выборке дисбаланс классов, можно формировать пакеты с равным представительством классов.

Размер пакета — гиперпараметр: маленькие пакеты (16–128) дают шум, который помогает обобщению; большие пакеты (512+) ускоряют счёт на GPU, но могут ухудшить сходимость.

5. Регуляризация и борьба с переобучением

Переобучение — сеть запоминает обучающие примеры, но плохо обобщает на новые данные. Признак: ошибка на обучении мала, а на валидации растёт.

5.1. L2-регуляризация (weight decay)

Добавляем к функции ошибки штраф за большие веса:

Градиент штрафа: . Веса затухают на каждом шаге:

5.2. L1-регуляризация

Штраф приводит к разреженным весам (многие становятся нулями) — полезно для отбора признаков.

5.3. Коэффициент регуляризации

Выбирается по валидационной выборке. Слишком большое — недообучение, слишком маленькое — переобучение. Обычно порядка

5.4. Регуляризация смещений

Смещения (bias) обычно не регуляризуют, так как они не влияют на сложность модели, а лишь сдвигают активации. Но в некоторых случаях регуляризацию смещений также применяют.

Пример: классификация MNIST

Сеть 784×30×10, обучена на 1000 примерах (мало). Без регуляризации ошибка на тесте высокая. С L2-регуляризацией веса становятся меньше, сеть лучше обобщает.

6. Практические рекомендации по обучению

6.1. Общая схема универсального алгоритма обучения

1. Проверить оптимальность текущего решения w_k (например, норма градиента мала).

2. Определить вектор направления оптимизации p_k (антиградиент, направление с моментом, квазиньютоновское и т.д.).

3. Выбрать шаг \eta_k (фиксированный, адаптивный или через линейный поиск), чтобы E(w_{k+1}) < E(w_k).

4. Обновить w_{k+1} = w_k + \eta_k p_k, вычислить новое значение ошибки, градиент и (если нужно) гессиан. Перейти к шагу 1.

6.2. Изменение скорости обучения (learning rate schedule)

· Супернаучное уменьшение: уменьшать \eta в k раз каждые n итераций.

· Экспоненциальное:

· Гиперболическое:

· По валидационной ошибке: уменьшать , если ошибка на валидационной выборке перестала уменьшаться.

6.3. Мониторинг процесса

Следить за графиками ошибки на обучающей и валидационной выборках. Если ошибка на валидации растёт — переобучение (нужна регуляризация или остановка). Если ошибка на обучении не уменьшается — возможно, затухающие градиенты или неверная инициализация.

6.4. Проблемы алгоритма обратного распространения

1. Градиент стремится к 0 (насыщение сигмоиды или ). Решение: использовать ReLU, batch normalization, тщательную инициализацию.

2. Локальные минимумы (особенно в невыпуклых задачах). Решение: SGD с моментом, рестарты, методы с шумом.

3. Выбор скорости обучения — критичен. Решение: адаптивные методы (Adam, RMSProp).

4. Исчезающий градиент в глубоких сетях. Решение: остаточные связи (ResNet), ReLU, правильная инициализация.

7. Пример полного цикла обучения (игрушечный)

Задача: линейная регрессия по 4 точкам: x = [0.25, 0.5, 0.75, 1.0], d = [0.25, 0.5, 0.75, 1.0] (т.е. d = x). Модель: один нейрон без активации (y = w x).

Ошибка MSE: Градиент:

SGD с = 0.1, начальный . За 10 итераций w сходится к 1.

Это простейший случай, демонстрирующий градиентный спуск.

Заключение

Мы рассмотрели фундаментальные алгоритмы обучения нейронных сетей: обратное распространение ошибки, градиентные методы (SGD, момент, методы второго порядка), инициализацию, формирование выборок, регуляризацию. Понимание этих аспектов позволяет эффективно настраивать и обучать модели от простых линейных классификаторов до глубоких сетей на миллиардах параметров. Ключевые принципы:

· Тщательно инициализируйте веса.

· Используйте регуляризацию для борьбы с переобучением.

· Адаптируйте скорость обучения.

· Следите за графиками ошибок.

Практика и эксперименты — лучший способ закрепить теорию. Начните с малого: обучите сеть на MNIST, поиграйте с гиперпараметрами и наблюдайте, как меняется поведение модели.

7