Немного разъяснений по поводу BCEWithLogitsLoss
у Pytorch: я использую: pos_weights = torch.tensor([len_n/(len_n + len_y), len_y/(len_n + len_y)])
для инициализации потери, с [1.0, 0.0]
, являющимся отрицательным классом, и [0.0, 1.0]
, являющимся положительным классом, и len_n, len_y
- соответственно длина отрицательных и положительных образцов.
Причина использования BCEWithLogitsLoss
в первую очередь именно потому, что я предполагаю, что он компенсирует дисбаланс между количеством положительных и отрицательных выборок, избегая того, чтобы сеть просто «по умолчанию» переходила к наиболее распространенному классу.введите учебный набор.Я хочу контролировать приоритеты потерь при правильном определении менее богатого класса.В моем случае отрицательные выборки поездов превышают положительные выборки в 25–1 раза, поэтому очень важно, чтобы сеть правильно прогнозировала большую долю положительных выборок, а не имела высокую общую скорость прогнозирования (даже если значение по умолчанию всегда было отрицательным, это привело бы к 96% прогнозированию, если бы я только заботился об этом).
Вопрос Правильно ли мое предположение о BCEWithLogitsLoss
с использованием параметра pos_weights
для контроля дисбалансов в классе обучения?Любое понимание того, как дисбаланс учитывается в оценке потерь?