TGViewer
Data Science | Вопросы собесов Data Science | Вопросы собесов @easy_ds · 4.89K subscribers
Post #2542 376
🤔 Какие способы регурялизации сеточек знаешь?

Регуляризация нейросетей помогает избежать переобучения, улучшая их способность к обобщению. Рассмотрим основные методы:

🟠L1 и L2-регуляризация (Weight Decay)
Добавляют штраф за большие веса в функцию ошибки, предотвращая слишком сложные модели.

L1-регуляризация (Lasso, L1-norm)
Добавляет к функции ошибки сумму абсолютных значений весов:
Loss = Loss_{original} + \lambda \sum |w|
Заставляет веса стремиться к нулю, создавая разреженные модели (некоторые веса становятся 0).
L2-регуляризация (Ridge, L2-norm)
Добавляет сумму квадратов весов:
Loss = Loss_{original} + \lambda \sum w^2
Уменьшает значения весов, но не зануляет их полностью.
import torch.nn as nn
import torch.optim as optim

model = nn.Linear(10, 1)
optimizer = optim.SGD(model.parameters(), lr=0.01, weight_decay=0.001) # L2-регуляризация


🟠Dropout
Отключает случайные нейроны в процессе обучения, предотвращая их зависимость друг от друга. В каждом шаге обучения случайные нейроны "выключаются" с вероятностью p. В тестовом режиме нейроны работают в полную силу, но с весами, скорректированными на p.
import torch.nn as nn

class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(10, 50)
self.dropout = nn.Dropout(p=0.5) # Выключаем 50% нейронов
self.fc2 = nn.Linear(50, 1)

def forward(self, x):
x = self.fc1(x)
x = self.dropout(x)
x = self.fc2(x)
return x


🟠Batch Normalization
Нормализует входные данные каждого слоя, уменьшая зависимость от масштаба входных данных.
Ускоряет обучение
Снижает зависимость от начальных весов
Обладает небольшим регуляризационным эффектом
import torch.nn as nn

class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(10, 50)
self.bn1 = nn.BatchNorm1d(50) # Нормализация
self.fc2 = nn.Linear(50, 1)

def forward(self, x):
x = self.fc1(x)
x = self.bn1(x)
x = self.fc2(x)
return x


🟠Data Augmentation (для CV-задач)
Искусственное увеличение данных путём аугментаций (повороты, отражения, изменения яркости).
import torchvision.transforms as transforms

transform = transforms.Compose([
transforms.RandomHorizontalFlip(),
transforms.RandomRotation(10),
transforms.ColorJitter(brightness=0.2, contrast=0.2),
transforms.ToTensor()
])


🟠Early Stopping
Останавливает обучение, если валидационная ошибка перестаёт уменьшаться.
from torch.optim.lr_scheduler import ReduceLROnPlateau

scheduler = ReduceLROnPlateau(optimizer, mode='min', patience=5)


Ставь 👍 и забирай 📚 Базу знаний
More from @easy_ds
  1. Oct 12, 2026🤔 Как происходит детекция без anchor box-ов? Обнаружение объектов без использования ancho…
  2. Oct 12, 2026Post #2701
  3. Oct 11, 2026🤔 Что такое декоратор? Это функция, модифицирующая или расширяющая поведение другой функц…
  4. Oct 11, 2026Post #2699
  5. Oct 11, 2026🤔 Как валидировать временные ряды ? Валидация временных рядов требует специальных подходо…
  6. Oct 10, 2026Post #2697
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →