В обучении с учителем, если прогнозируемая переменная является дискретной, мы называем ееКлассификация(например, деревья решений, машины опорных векторов и т. д.), если прогнозируемая переменная непрерывна, мы называем еевозвращение.
Функция потерь L1
调用函数:nn.L1Loss
Вычислить абсолютное значение разницы между выходом и целью
torch.nn.L1Loss(reduction='mean')
Функция потерь L2 MSELoss --- проблема регрессии
调用函数:nn.MSELoss
torch.nn.MSELoss(reduction='mean')
среднеквадратическая ошибка-----Поскольку процесс вычисления градиента связан с сигмовидной функцией, проблема исчезновения градиента может возникнуть в процессе обратного распространения, то есть градиент стремится к 0
Функция потерь Хубера
调用函数:nn.SmoothL1Loss
Составная версия функций потерь L1 и L2, которая сочетает в себе лучшее из обоих миров — она менее чувствительна к выбросам, чем MSELoss; в некоторых случаях она предотвращает взрыв градиентов.
Функция перекрестной энтропийной потери «две классификации» BCELoss
调用函数:
nn.BCELoss # 使用时要结合sigmoid函数
nn.BCEWithLogitsLoss() # 将sigmoid函数和BCELoss方法结合到一个类中
Измеряет информацию о различиях между двумя распределениями вероятностей и в определенной степени также можетНе позволяйте градиентному обучению быть слишком медленным
torch.nn.BCELoss(weight=None, reduction='mean')
«Многоклассовая» функция кросс-энтропийных потерь
调用函数:
nn.NLLLoss # 使用时要结合log softmax
nn.CrossEntropyLoss # 该criterion将nn.LogSoftmax()和nn.NLLLoss()方法结合到一个类中
Измерьте информацию о разнице между двумя распределениями вероятностей ---
CrossEntropyLoss() = softmax + log + NLLLoss() = log_softmax + NLLLoss(), конкретные эквивалентные приложения следующие:
####################---CrossEntropyLoss()---#######################
loss_func = CrossEntropyLoss()
loss = loss_func(output, target)
####################---Softmax+log+NLLLoss()---####################
self.softmax = nn.Softmax(dim=-1)
x = self.softmax(x)
output = torch.log(x)
loss_func = NLLLoss()
loss = loss_func(output, target)
####################---LogSoftmax+NLLLoss()---######################
self.log_softmax = nn.LogSoftmax(dim=-1)
output = self.log_softmax(x)
loss_func = NLLLoss()
loss = loss_func(output, target)