Kas tehti dropout, lähtudes kaotusest või juhuslikust kaalude eemaldamisest?
sobes.tech AI
Vastus AI-lt
Dropout on regulatsioonitehnika närvivõrkudes, kus treeningu ajal välja lülitatakse juhuslikult mõned neuronid, et vältida üleõppimist.
On kaks peamist lähenemisviisi:
-
Juhuslik neuronite väljalülitus (dropout): iga treeningu sammus lülitatakse tõenäosusega p neuronid välja, mis on võrdne juhusliku ühendamise katkestamisega nende neuronitega.
-
Dropout, mis põhineb kaotusel: vähem levinud lähenemisviis, kus dropout'i tõenäosus või kaalude skaleerimine sõltub vea (kaotuse) väärtusest või muudest metrikatest, et tõhusamalt treeningut reguleerida.
Enamikus populaarsetes teekides (TensorFlow, PyTorch) on rakendatud klassikaline juhuslik dropout. Kaotuse põhine rakendus nõuab kohandatud lahendusi.
Näide klassikalisest dropoutist PyTorchis:
import torch
import torch.nn as nn
class SimpleNN(nn.Module):
def __init__(self):
super().__init__()
self.fc1 = nn.Linear(100, 50)
self.dropout = nn.Dropout(p=0.5)
self.fc2 = nn.Linear(50, 10)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.dropout(x) # juhuslik neuronite väljalülitus
x = self.fc2(x)
return x
Seega, klassikaline dropout on juhuslik neuronite väljalülitus, mitte kaalude, ning see ei sõltu otseselt kaotusest.