Встречается на 5% собеседований по Data Engineer

Зачем нужен residual block

Residual block (остаточный блок) решает проблему затухания градиентов в глубоких нейросетях. Он позволяет передавать входные данные на более глубокие слои через skip-connection, что упрощает обучение.

Основная идея:
output = F(x) + x, где F(x) — преобразование слоями, x — вход.

Пример в PyTorch:

python
class ResidualBlock(nn.Module):
    def __init__(self, in_channels):
        super().__init__()
        self.conv1 = nn.Conv2d(in_channels, in_channels, kernel_size=3, padding=1)
        self.conv2 = nn.Conv2d(in_channels, in_channels, kernel_size=3, padding=1)
    
    def forward(self, x):
        residual = x
        out = F.relu(self.conv1(x))
        out = self.conv2(out)
        out += residual  # Skip-connection
        return F.relu(out)

Преимущества:

  • Упрощает обучение очень глубоких сетей (ResNet).
  • Помогает градиентам распространяться без затухания.
  • Модель может "выбирать", использовать преобразование F(x) или пропустить его.

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы