Конспект лекций Белой / Разработка ИИ. Конспект лекции №7. Белая
.pdf
Лекция: Обучение нейронных сетей — от основ до продвинутых методов
Введение
Нейронные сети обучаются путём минимизации функции ошибки (функции потерь). Пусть у нас есть обучающая выборка: входные векторы x и соответствующие желаемые выходы d. Сеть с весами w вычисляет выходы ( , ). Ошибка ( ) = ( , ( , )) — мера рассогласования. Обычно используют среднеквадратичную ошибку:
1( ) = 2 ∑( − )2
Задача: найти такой вектор весов w, который минимизирует E(w). Это достигается итеративными методами оптимизации, чаще всего градиентными.
1. Алгоритм обратного распространения ошибки (Backpropagation)
Backpropagation — ключевой алгоритм для вычисления градиента функции ошибки по всем весам многослойной сети. Он основан на правиле цепочки и состоит из двух этапов: прямой проход (вычисление выходов) и обратный проход (распространение ошибки от выхода к входу).
1.1. Прямой проход
Для каждого слоя k (от 1 до L) вычисляются взвешенные суммы и активации:
( ) |
= ∑ ( ) |
( −1) |
, |
( ) |
= ( ( )), |
|
|
|
|
|
|
где f — функция активации (сигмоида, ReLU и т.д.), (0) = — входной слой.
1.2. Обратный проход. Цепное правило
Ошибка E зависит от весов через выходы сети. Градиент по весу ( ):
|
|
|
|
∂ |
|
|
∂ |
|
|
∂ ( ) |
|
|
|
|
|||
|
|
|
|
|
|
= |
|
|
|
|
|
= δ( ) |
( −1) |
, |
|||
|
|
|
|
∂ ( ) |
|
|
∂ ( ) |
|
|
∂ ( ) |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
( ) |
|
∂ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
где δ |
= |
|
— «локальная ошибка» нейрона q в слое k. |
|
|||||||||||||
∂() |
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Для выходного слоя (k = L): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
∂ |
( ) |
|
|
|
|
|
|
|||||
|
|
|
δ( ) |
= |
|
|
|
|
|
|
|
= ( ( ) − |
|
) ′ ( ( )). |
|||
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
∂ |
( ) |
( ) |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Для скрытого слоя (k-1) ошибка распространяется назад:
1
δ( −1) |
= (∑ δ( ) |
( )) ′ ( ( −1)). |
|
|
|
|
|
1.3. Коррекция весов (градиентный спуск)
Веса обновляются в направлении, противоположном градиенту:
|
( ) = −η |
∂ |
= −η δ( ) |
( −1) |
, |
|||
|
|
|||||||
|
∂ ( ) |
|
|
|
|
|
||
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
( )( + 1) = |
( )( ) + |
( ) |
, |
|
|||
|
|
|
|
|
|
|
|
|
где η — скорость обучения (learning rate).
Пример: один нейрон с сигмоидой
Пусть выходной нейрон: y = σ( ), = 1 1 + 2 2 + , = 1 (желаемый выход).
Ошибка = 12 ( − )2.
δ = ( − ) σ′( ) = ( − ) (1 − ).
= −η δ .
Если = 0.7, = 1, то = −0.3 0.21 = −0.063, и веса увеличатся, чтобы поднять выход.
2. Градиентные методы оптимизации
Простой градиентный спуск имеет недостатки: медленная сходимость в «оврагах», чувствительность к выбору η, остановка в локальных минимумах. Рассмотрим улучшения.
2.1. Наискорейший спуск (Steepest Descent)
Направление = − ( ), где g — градиент. Шаг η выбирается, чтобы ( + η ) <( ).
Достоинства: простота, малые требования к памяти.
Недостатки: не учитывает кривизну поверхности, замедляется на плато, плохо работает в узких оврагах.
2.2. Стохастический градиентный спуск (SGD)
Вычисление градиента по всей выборке дорого. SGD использует один случайный пример (или мини-пакет) для оценки градиента. Это вносит шум, но позволяет быстрее обновлять веса и часто уходит из плохих локальных минимумов.
2.3. Метод момента (Momentum)
Имитирует физическую инерцию: обновление зависит от предыдущего изменения.
= α |
−1 |
− η ( ), |
|
= + |
, |
|
|
|
+1 |
|
|
|
|
2
где α — коэффициент момента (обычно 0.9).
Эффект: ускоряет движение в направлениях с постоянным знаком градиента и сглаживает колебания.
2.4. Методы второго порядка (переменной метрики)
Используют квадратичную аппроксимацию:
( + ) ≈ ( ) + ( ) + 1 ( ) . 2
Минимум аппроксимации: = −[ ( )]−1 ( ).
Прямое вычисление гессиана 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 (режим отжига).
Скорость сходимости:
·Метод Больцмана: ( ) = вых/(1 + 1/ ).
·Распределение Коши: ( ) = ( )/( ( )2 + 2) (тяжёлые хвосты позволяют чаще выбирать большие шаги).
Метод может глобально находить минимум, но очень медленный для глубоких сетей.
3
3. Инициализация весов
Неправильная инициализация приводит к исчезающим или взрывающимся градиентам.
3.1. Почему нельзя обнулять веса?
Если все веса одинаковы, то нейроны одного слоя будут всегда давать одинаковые выходы и одинаковые градиенты — они не смогут обучаться разным признакам.
3.2. Критерии хорошей инициализации
·Входы нормализованы: нулевое среднее, единичная дисперсия, некоррелированы.
·Начальные веса имеют нулевое среднее.
·Дисперсия выходов нейрона должна сохраняться на уровне 1, чтобы избежать затухания сигнала.
Для линейной комбинации = ∑ =1 при независимых с нулевым средним и дисперсией 1, дисперсия y равна ∑ σ2 = σ2 . Чтобы σ2 = 1, нужно σ2 = 1/ .
3.3. Практические схемы
·Инициализация Ксавье (Xavier): для сигмоиды или — веса из равномерного распределения [−1/√ ,1/√ ] или нормального (0,1/√ ).
·Инициализация He: для ReLU — (0,2/√ ), поскольку ReLU «убивает» половину нейронов, дисперсию нужно удвоить.
·Разреженная инициализация: большинство весов нулевые, небольшое количество случайных ненулевых.
·Смещения (bias): обычно инициализируются нулями (кроме некоторых случаев, например, для ReLU можно инициализировать небольшим положительным числом, чтобы обеспечить градиент).
Пример
Для слоя с 784 входами (как в MNIST) и ReLU: веса инициализируем как ω(0,2/√784) ≈ (0,0.071).
4. Формирование обучающей выборки и пакетов
4.1. Размер выборки
Опытное правило: количество примеров N должно быть порядка числа весов |W| (часто в 5–10 раз больше). «Чем больше, тем лучше» — сеть обобщает при избытке данных.
4.2. Состав выборки
·Репрезентативность: выборка должна отражать все разнообразие данных, с которыми сеть столкнется на практике.
·Согласованность с валидационной и тестовой выборками: все три выборки должны быть взяты из одного распределения.
·Аугментация данных: искусственное расширение выборки за счёт шумов, искажений, поворотов, сдвигов, а также генерация синтетических данных с помощью моделей.
4.3. Формирование пакетов (мини-батчей)
4
Пакет — часть обучающей выборки, по которой вычисляется коррекция весов на одном шаге. Рекомендации:
·Случайный порядок примеров (перемешивание перед каждой эпохой).
·Принцип максимизации информативности: включать в пакет примеры, вызывающие наибольшие ошибки, или кардинально отличающиеся друг от друга.
·Схема акцентирования: чаще предъявлять трудные примеры.
·Коррекция распределения: если в выборке дисбаланс классов, можно формировать пакеты с равным представительством классов.
Размер пакета — гиперпараметр: маленькие пакеты (16–128) дают шум, который помогает обобщению; большие пакеты (512+) ускоряют счёт на GPU, но могут ухудшить сходимость.
5. Регуляризация и борьба с переобучением
Переобучение — сеть запоминает обучающие примеры, но плохо обобщает на новые данные. Признак: ошибка на обучении мала, а на валидации растёт.
5.1. L2-регуляризация (weight decay)
Добавляем к функции ошибки штраф за большие веса:
reg( ) = ( ) + 2λ ∑ 2.
Градиент штрафа: λ . Веса затухают на каждом шаге: +1 = − η − ηλ .
5.2. L1-регуляризация
Штраф λ∑| _ | приводит к разреженным весам (многие становятся нулями) — полезно для отбора признаков.
5.3. Коэффициент регуляризации λ
Выбирается по валидационной выборке. Слишком большое λ — недообучение, слишком маленькое — переобучение. Обычно λ порядка 10−4 … 10−2.
5.4. Регуляризация смещений
Смещения (bias) обычно не регуляризуют, так как они не влияют на сложность модели, а лишь сдвигают активации. Но в некоторых случаях регуляризацию смещений также применяют.
Пример: классификация MNIST
Сеть 784×30×10, обучена на 1000 примерах (мало). Без регуляризации ошибка на тесте высокая. С L2-регуляризацией (λ = 0.01) веса становятся меньше, сеть лучше обобщает.
6. Практические рекомендации по обучению
6.1. Общая схема универсального алгоритма обучения
1.Проверить оптимальность текущего решения w_k (например, норма градиента мала).
2.Определить вектор направления оптимизации p_k (антиградиент, направление с моментом, квазиньютоновское и т.д.).
5
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 итераций.
·Экспоненциальное: η = 0 − /τ.
·Гиперболическое: η = η0/(1 + α ).
·По валидационной ошибке: уменьшать η, если ошибка на валидационной выборке перестала уменьшаться.
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: = 12 ∑( − )2. Градиент: ∂∂ = ∑( − ) .
SGD с η = 0.1, начальный = 0. За 10 итераций w сходится к 1.
Это простейший случай, демонстрирующий градиентный спуск.
Заключение
Мы рассмотрели фундаментальные алгоритмы обучения нейронных сетей: обратное распространение ошибки, градиентные методы (SGD, момент, методы второго порядка), инициализацию, формирование выборок, регуляризацию. Понимание этих аспектов позволяет эффективно настраивать и обучать модели от простых линейных классификаторов до глубоких сетей на миллиардах параметров. Ключевые принципы:
· Тщательно инициализируйте веса.
6
·Используйте регуляризацию для борьбы с переобучением.
·Адаптируйте скорость обучения.
·Следите за графиками ошибок.
Практика и эксперименты — лучший способ закрепить теорию. Начните с малого: обучите сеть на MNIST, поиграйте с гиперпараметрами и наблюдайте, как меняется поведение модели.
7
