pytorch обычно используемый критерий функции потерь

машинное обучение

1635735552(1).png

В обучении с учителем, если прогнозируемая переменная является дискретной, мы называем ееКлассификация(например, деревья решений, машины опорных векторов и т. д.), если прогнозируемая переменная непрерывна, мы называем еевозвращение.

Функция потерь L1

调用函数:nn.L1Loss

Вычислить абсолютное значение разницы между выходом и целью2021051310213817.png

torch.nn.L1Loss(reduction='mean')

Функция потерь L2 MSELoss --- проблема регрессии

调用函数:nn.MSELoss
torch.nn.MSELoss(reduction='mean')

среднеквадратическая ошибка-----Поскольку процесс вычисления градиента связан с сигмовидной функцией, проблема исчезновения градиента может возникнуть в процессе обратного распространения, то есть градиент стремится к 0

2021051310213818.png

Функция потерь Хубера

调用函数:nn.SmoothL1Loss

Составная версия функций потерь L1 и L2, которая сочетает в себе лучшее из обоих миров — она менее чувствительна к выбросам, чем MSELoss; в некоторых случаях она предотвращает взрыв градиентов.

2021051310213819.png

Функция перекрестной энтропийной потери «две классификации» BCELoss

调用函数:
nn.BCELoss   # 使用时要结合sigmoid函数
nn.BCEWithLogitsLoss()  # 将sigmoid函数和BCELoss方法结合到一个类中

2021051310213820.pngИзмеряет информацию о различиях между двумя распределениями вероятностей и в определенной степени также можетНе позволяйте градиентному обучению быть слишком медленным

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)