Потеря - это просто скаляр, который вы пытаетесь минимизировать. Он не должен быть положительным.
Одна из причин, по которой вы получаете отрицательные значения в потерях, заключается в том, что training_loss в RandomForestGraphs реализован с использованием перекрестной энтропийной потери или отрицательной логарифмической вероятности в соответствии с приведенным здесь справочным кодом.
Кроме того, как вы можете видеть, потери остаются постоянными в более поздних итерациях, я полагаю, что настройка гиперпараметров сделает дерево устойчивым к отклонениям данных. Вы можете ссылаться на некоторые идеи отсюда.
==========================
содержит линки во строке "negative log liklihood as per the reference code here"
===========================
Минимизация отрицательного логарифмического правдоподобия является прокси-проблемой проблемы оценки максимального правдоподобия.
Кросс-энтропия и отрицательное логарифмическое правдоподобие - тесно связанные математические формулировки.
Существенной частью вычисления отрицательного логарифмического правдоподобия является «суммирование правильных логарифмических вероятностей».
PyTorch-реализации CrossEntropyLoss и NLLLoss немного отличаются ожидаемыми входными значениями. Короче говоря, CrossEntropyLoss ожидает необработанные значения прогноза, в то время как NLLLoss ожидает логарифмические вероятности.