Конспект лекций Белой / Разработка ИИ. Конспект лекции №7. Белая
.docxЛекция: Обучение нейронных сетей — от основ до продвинутых методов
Введение
Нейронные
сети обучаются путём минимизации функции
ошибки (функции потерь). Пусть у нас есть
обучающая выборка: входные векторы 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, поиграйте с гиперпараметрами и наблюдайте, как меняется поведение модели.
