Was ist ein Residualblock?
sobes.tech KI
Antwort von AI
Der Residualblock ist ein architektonisches Element neuronaler Netze, das in ResNet eingeführt wurde und dabei hilft, das Problem des verschwindenden Gradienten beim Training sehr tiefer Netze zu bekämpfen.
Die Idee des Residualblocks ist, dass anstelle einer direkten Abbildung ( H(x) ) der Block eine Korrektur ( F(x) = H(x) - x ) lernt, also den Residual. Am Ende wird die Ausgabe des Blocks berechnet als:
[ \text{Ausgabe} = F(x) + x ]
wobei:
- ( x ) der Eingang des Blocks ist,
- ( F(x) ) das Ergebnis mehrerer Schichten (z.B. Faltung, Aktivierungen) ist.
Dies ermöglicht es, dass der Gradient leichter durch die Schichten fließt, was das Training tiefer Modelle verbessert.
Beispiel eines einfachen Residualblocks (Pseudocode):
import torch
import torch.nn as nn
class ResidualBlock(nn.Module):
def __init__(self, channels):
super().__init__()
self.conv1 = nn.Conv2d(channels, channels, kernel_size=3, padding=1)
self.bn1 = nn.BatchNorm2d(channels)
self.relu = nn.ReLU()
self.conv2 = nn.Conv2d(channels, channels, kernel_size=3, padding=1)
self.bn2 = nn.BatchNorm2d(channels)
def forward(self, x):
residual = x
out = self.conv1(x)
out = self.bn1(out)
out = self.relu(out)
out = self.conv2(out)
out = self.bn2(out)
out += residual # fügt den Eingang hinzu (Skip-Verbindung)
out = self.relu(out)
return out
Auf diese Weise ermöglichen Residualblöcke den Bau sehr tiefer neuronaler Netze ohne Verschlechterung der Lernqualität.