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

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

Введение

Нейронные сети обучаются путём минимизации функции ошибки (функции потерь). Пусть у нас есть обучающая выборка: входные векторы 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