Middle
Ce este un bloc residual?
sobes.tech AI
Răspuns de la AI
Blocul rezidual este un element arhitectural al rețelelor neuronale, introdus în ResNet, care ajută la combaterea problemei gradientelor care dispar în timpul antrenamentului rețelelor foarte adânci.
Ideea blocului rezidual este că, în loc să învețe o mapare ( H(x) ) directă, blocul învață o corecție ( F(x) = H(x) - x ), adică rezidualul. În final, ieșirea blocului se calculează astfel:
[ \text{ieșire} = F(x) + x ]
unde:
- ( x ) este intrarea în bloc,
- ( F(x) ) este rezultatul mai multor straturi (de exemplu, convoluție, activări).
Acest lucru permite gradientului să treacă mai ușor prin straturi, îmbunătățind antrenamentul modelelor profunde.
Exemplu de bloc rezidual simplu (pseudo-cod):
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 # adăugăm intrarea (conexiune de salt)
out = self.relu(out)
return out
Astfel, blocurile reziduale permit construirea de rețele neuronale foarte adânci fără a deteriora calitatea antrenamentului.