Модуль II·Статья I·~3 мин чтения

Обучение глубоких сетей: проблемы и решения

Глубокое обучение: теория и практика

Превратить статью в подкаст

Выберите голоса, формат и длину — AI запишет аудио

Обучение глубоких сетей: проблемы и решения

Обучение нейронных сетей с десятками слоёв — нетривиальная задача. Исчезающий градиент, взрывающийся градиент, мёртвые нейроны, плохая инициализация — всё это практические проблемы, потребовавшие десятилетий исследований для решения.

Проблема исчезающего/взрывающегося градиента

Механизм: При backpropagation через L слоёв: ∂L/∂x₀ = (∏ₗ ∂aˡ/∂aˡ⁻¹) · ∂L/∂aᴸ. Каждый множитель ∂aˡ/∂aˡ⁻¹ = Wˡ · diag(σ'(zˡ)). Если собственные значения ||Wˡ · diag(σ'(zˡ))|| < 1 → произведение → 0 экспоненциально. Если > 1 → произведение → ∞.

Sigmoid и tanh: σ'(z) ≤ 0.25 (max при z=0). При L слоях: ||∂L/∂x₀|| ≤ (0.25·max||Wˡ||)^L → 0 если max||Wˡ|| < 4. ReLU устраняет проблему насыщения: σ'(z) = 1 при z>0 → градиент проходит без затухания.

Gradient clipping: при взрывании: ∇ ← ∇ · min(1, τ/||∇||). Ограничиваем норму градиента. Стандарт в RNN/LSTM. PyTorch: torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0).

Residual Learning

Проблема деградации: При увеличении глубины (plain networks) ошибка на train растёт — оптимизация становится сложнее, не переобучение. 56-слойная сеть хуже 20-слойной на CIFAR-10!

Residual block (He et al., 2015): H(x) = F(x) + x, где F(x) = W₂ · ReLU(W₁x + b₁) + b₂. Сеть учит «остаток» F(x) = H(x) − x, а не полное преобразование H(x). Если оптимальное H(x) ≈ x (идентичное отображение): F(x) → 0 (легко). Shortcut connection передаёт градиент напрямую → не исчезает.

Математически: Полная сеть из N блоков: aᴺ = aˡ + Σₖ₌ₗ^{N-1} Fₖ(aₖ). Градиент: ∂aᴺ/∂aˡ = I + Σₖ ∂Fₖ/∂aˡ → всегда есть единичная компонента → нет исчезания.

DenseNet (Huang et al., 2017): каждый слой получает входы от всех предыдущих: xˡ = σ(Wˡ[x₀, x₁,...,xˡ⁻¹]). Максимальное переиспользование признаков. Меньше параметров при том же качестве.

Highway Networks и Gate механизмы

Highway Network (Srivastava, 2015): y = H(x,Wₕ)·T(x,Wₜ) + x·(1−T(x,Wₜ)). T = sigmoid(Wₜx + bₜ) — «gate трансформации». Если T→0: y=x (проходной путь). Если T→1: y=H(x) (трансформация). Предшественник LSTM-gate.

Нормализация внутри слоёв

Layer Normalization: нормировка по оси признаков (не батча). x̂ = (x − μ_feature)/σ_feature, затем affine transform. Независима от batch size → работает при bs=1. Стандарт для NLP (BERT, GPT).

Group Normalization: делит каналы на G групп, нормирует внутри каждой. Компромисс между BN и LN. Работает при bs=1–2.

RMS Norm: x̂ = x/RMS(x), RMS(x) = √(mean(x²)). Быстрее BN (нет центрирования). Используется в LLaMA, Mistral.

Transfer Learning и Fine-tuning

Предобученные модели: Сеть, обученная на ImageNet (1.2M изображений, 1000 классов), извлекает богатые признаки из изображений. Перенос на новую задачу (medical imaging, satellite images): использовать предобученные нижние слои как «экстрактор признаков».

Стратегии Transfer Learning:

  1. Feature extraction: замораживаем все слои, обучаем только classifier head. Быстро, мало данных нужно.
  2. Fine-tuning: размораживаем верхние слои предобученной сети + обучаем classifier. Лучше, если есть >1K примеров.
  3. Full fine-tuning: все слои. Нужно много данных и маленький lr (1e-5 вместо 1e-3).

Правило: чем больше данных и чем ближе задача к ImageNet — тем меньше слоёв нужно дообучать.

Численный пример

Задача: диагностика опухолей по МРТ (1000 размеченных снимков). Подход 1: CNN с нуля → val accuracy 72% (мало данных, переобучение). Подход 2: ResNet-50 (ImageNet), feature extraction → 85% (заморозить всё кроме FC). Подход 3: ResNet-50, fine-tune последние 2 блока → 91% (оптимально для 1000 примеров). Подход 4: ResNet-50, full fine-tune → 89% (хуже 3 — переобучение с малыми данными).

Задание: Реализуйте transfer learning для Stanford Cars dataset (196 классов автомобилей, 16K фото): (1) Feature extraction с ResNet-50 (заморозить все Conv, только FC обучаем). (2) Fine-tuning верхних 2 блоков ResNet-50 (lr=1e-4). (3) Full fine-tuning (lr=1e-5). Сравните val accuracy и время обучения. (4) Добавьте strong augmentation (RandAugment). Визуализируйте: какие изображения вызывают наибольшую активацию в последнем Conv-слое (Grad-CAM).

§ Акт · что дальше