Residual connection

En residual connection er en forbindelse i et neuralt netværk, der springer et eller flere lag over og adderer indgangssignalet til lagets output.

Kort fortalt

En genvej i et neuralt netværk, der lader information flyde ubesværet forbi lag for at undgå problemer med forsvindende gradienter.

Kategori
teknik
Niveau
øvet
Udtale
/rɪˈzɪdjuəl kəˈnekʃən/

Betydninger

1
  1. 1

    En forbindelse, der springer et eller flere lag over og adderer den oprindelige indgang til lagets output, hvilket gør det muligt for netværket at lære en residualfunktion.

    • I ResNet bruges residual connections til at konstruere residualblokke, der muliggør træning af netværk med hundredvis af lag.Deep Residual Learning for Image Recognition, 2016
    • Transformer-modellen anvender residual connections omkring hvert del-lag i opmærksomheds- og feedforward-netværket.Attention Is All You Need, 2017

Hvornår bruges det

Residual connections bruges i dybe netværk som ResNet og Transformers for at forbedre gradientflow og muliggøre træning af meget dybe modeller.

Formel

y = F(x, {W_i}) + x

Kodeeksempel

import torch.nn as nn

class ResidualBlock(nn.Module):
    def __init__(self, in_channels, out_channels, stride=1):
        super().__init__()
        self.conv1 = nn.Conv2d(in_channels, out_channels, 3, stride, padding=1)
        self.bn1 = nn.BatchNorm2d(out_channels)
        self.relu = nn.ReLU()
        self.conv2 = nn.Conv2d(out_channels, out_channels, 3, padding=1)
        self.bn2 = nn.BatchNorm2d(out_channels)
        self.shortcut = nn.Sequential()
        if stride != 1 or in_channels != out_channels:
            self.shortcut = nn.Sequential(
                nn.Conv2d(in_channels, out_channels, 1, stride),
                nn.BatchNorm2d(out_channels)
            )

    def forward(self, x):
        out = self.relu(self.bn1(self.conv1(x)))
        out = self.bn2(self.conv2(out))
        out += self.shortcut(x)  # residual connection
        out = self.relu(out)
        return out

En PyTorch-implementering af en residualblok med en shortcut-forbindelse, der adderes til outputtet før den endelige ReLU.

Oprindelse

Fra engelsk 'residual' (resterende), fordi forbindelsen lader netværket lære en residualfunktion (forskel) i stedet for den fulde transformation.

Afledte ord

2

Kilder

3
  • Deep Residual Learning for Image Recognition (He et al., 2016)
  • Attention Is All You Need (Vaswani et al., 2017)
  • Identity Mappings in Deep Residual Networks (He et al., 2016)