Regularizare
Regularizarea în inteligența artificială (IA) se referă la un set de tehnici utilizate pentru a preveni supraînvățarea în modelele de învățare automată prin int...
Normalizarea pe loturi îmbunătățește antrenarea rețelelor neuronale prin stabilizarea distribuțiilor de intrare, reducerea schimbării covariatelor și accelerarea convergenței în învățarea profundă.
Normalizarea pe loturi este o tehnică transformatoare în învățarea profundă care îmbunătățește semnificativ procesul de antrenare al rețelelor neuronale. Introdusă de Sergey Ioffe și Christian Szegedy în 2015, aceasta abordează problema schimbării interne a covariatelor, care se referă la modificările distribuției activărilor din rețea în timpul antrenării. Această intrare din glosar explorează în detaliu mecanismele, aplicațiile și avantajele normalizării pe loturi în modelele moderne de învățare profundă.
Normalizarea pe loturi este o metodă folosită pentru a stabiliza și accelera antrenarea rețelelor neuronale artificiale. Ea normalizează intrările fiecărui strat dintr-o rețea prin ajustarea și scalarea activărilor. Acest proces implică calcularea mediei și varianței fiecărei caracteristici dintr-un mini-lot și folosirea acestor statistici pentru a normaliza activările. Astfel, normalizarea pe loturi asigură că intrările fiecărui strat mențin o distribuție stabilă, aspect crucial pentru un antrenament eficient.
Schimbarea internă a covariatelor este un fenomen în care distribuția intrărilor într-un strat al rețelei neuronale se modifică în timpul antrenării. Această schimbare apare deoarece parametrii straturilor anterioare sunt actualizați, modificând activările care ajung la straturile următoare. Normalizarea pe loturi atenuează această problemă prin normalizarea intrărilor fiecărui strat, asigurând o distribuție constantă a intrărilor și facilitând astfel un proces de antrenare mai lin și mai eficient.
Implementată ca un strat în cadrul unei rețele neuronale, normalizarea pe loturi realizează mai multe operații în timpul trecerii înainte:
Matematic, pentru o caracteristică $x_i$, acest lucru se exprimă astfel:
$$ \hat{x_i} = \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}} $$
$$ y_i = \gamma \hat{x_i} + \beta $$
Normalizarea pe loturi este utilizată pe scară largă în diverse sarcini și arhitecturi de învățare profundă, inclusiv:
În TensorFlow, normalizarea pe loturi poate fi implementată folosind stratul tf.keras.layers.BatchNormalization()
:
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Dense(64, input_shape=(784,)),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Activation('relu'),
tf.keras.layers.Dense(10),
tf.keras.layers.Activation('softmax')
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5, batch_size=32)
În PyTorch, normalizarea pe loturi este implementată folosind nn.BatchNorm1d
pentru straturi complet conectate sau nn.BatchNorm2d
pentru straturi convoluționale:
import torch
import torch.nn as nn
class Model(nn.Module):
def __init__(self):
super(Model, self).__init__()
self.fc1 = nn.Linear(784, 64)
self.bn = nn.BatchNorm1d(64)
self.relu = nn.ReLU()
self.fc2 = nn.Linear(64, 10)
self.softmax = nn.Softmax(dim=1)
def forward(self, x):
x = self.fc1(x)
x = self.bn(x)
x = self.relu(x)
x = self.fc2(x)
x = self.softmax(x)
return x
model = Model()
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
Normalizarea pe loturi este o tehnică de neprețuit pentru practicienii învățării profunde, abordând schimbările interne ale covariatelor și facilitând antrenarea mai rapidă și mai stabilă a rețelelor neuronale. Integrarea sa în framework-uri populare precum TensorFlow și PyTorch a făcut-o accesibilă și larg adoptată, conducând la îmbunătățiri semnificative ale performanței într-o gamă largă de aplicații. Pe măsură ce inteligența artificială evoluează, normalizarea pe loturi rămâne un instrument esențial pentru optimizarea antrenării rețelelor neuronale.
Normalizarea pe loturi este o tehnică ce stabilizează și accelerează antrenarea rețelelor neuronale prin normalizarea intrărilor fiecărui strat, abordând schimbarea internă a covariatelor și permițând o convergență mai rapidă și o stabilitate îmbunătățită.
Normalizarea pe loturi accelerează antrenarea, îmbunătățește stabilitatea, acționează ca o formă de regularizare, reduce sensibilitatea la inițializarea greutăților și oferă flexibilitate prin parametri ce pot fi învățați.
Normalizarea pe loturi este utilizată pe scară largă în sarcini de învățare profundă, precum clasificarea imaginilor, procesarea limbajului natural și modelele generative, și este implementată în framework-uri precum TensorFlow și PyTorch.
Normalizarea pe loturi a fost introdusă de Sergey Ioffe și Christian Szegedy în 2015.
Începe să construiești chatbot-uri inteligente și instrumente AI cu platforma intuitivă FlowHunt. Conectează blocuri și automatizează-ți ideile cu ușurință.
Regularizarea în inteligența artificială (IA) se referă la un set de tehnici utilizate pentru a preveni supraînvățarea în modelele de învățare automată prin int...
Dropout este o tehnică de regularizare în AI, în special în rețelele neuronale, care combate suprainvățarea prin dezactivarea aleatorie a neuronilor în timpul a...
Log loss, sau pierderea logaritmică/entropia încrucișată, este o metrică cheie pentru evaluarea performanței modelelor de învățare automată—mai ales pentru clas...