🏢 Ситуация
Пятничный техтолк команды. Лена:
«Ты уже видел, что на таблицах бустинг сильнее нейросетей. Но впереди у нас картинки (модуль 17) и глубже в тексты — там нейросети безальтернативны. Сегодня разберём, как они устроены, без магии: нейрон, слои, backprop. Домашка — обучить сеть на PyTorch и переобучить её намеренно, чтобы увидеть, как это выглядит. Кто не переобучал сеть — тот не умеет их обучать.»
🎯 Ваша задача
- Понять устройство нейросети: нейрон, активации, слои, backpropagation.
- Обучить сеть на PyTorch: цикл обучения руками.
- Увидеть переобучение на кривых обучения и победить его.
📚 Теория
Нейрон и слои
Один нейрон = та самая линейная модель: выход = активация(w·x + b). Сеть — это слои нейронов: выходы одного слоя становятся входами следующего. Композиция линейных слоёв с нелинейными активациями между ними умеет приближать сколь угодно сложные функции.
Активации: без них стопка линейных слоёв схлопывается в одну линейную модель. Стандарт скрытых слоёв — ReLU max(0, x): простая, быстрая, не «затухает» как sigmoid. На выходе: sigmoid (бинарная классификация), softmax (мультикласс), ничего (регрессия).
Как сеть учится: backpropagation
Тот же градиентный спуск из модуля 4, но градиенты по миллионам весов считаются цепным правилом от выхода к входу — это и есть backprop. Один шаг обучения:
- Forward: прогоняем батч, получаем предсказания и loss.
- Backward:
loss.backward()— PyTorch сам считает все градиенты (autograd). - Шаг оптимизатора:
optimizer.step()— обновляем веса;optimizer.zero_grad()— обнуляем градиенты (иначе накапливаются — баг №1 новичков).
Словарь тренировки
- Батч — порция данных на один шаг; эпоха — полный проход по данным.
- Оптимизаторы: SGD с momentum; Adam/AdamW — адаптивный шаг, дефолт на старте.
- Learning rate — самый важный гиперпараметр. Слишком большой → loss скачет/взрывается; маленький → вечность.
- Регуляризация: Dropout (случайно выключаем нейроны при обучении), weight decay, ранняя остановка, аугментации данных.
Кривые обучения — ЭКГ тренировки
- train loss ↓, val loss ↓ — учимся;
- train loss ↓, val loss ↑ — переобучение началось, вот с этой эпохи;
- обе стоят — недообучение или маленький LR.