Функция потерь с отрицательной логарифмической вероятностью дает убытки, несмотря на идеальную точность - PullRequest
2 голосов
/ 14 июля 2020

Я отлаживаю модель от последовательности к последовательности и намеренно пытался идеально подогнать небольшой набор данных из ~ 200 образцов (пары предложений длиной от 5 до 50). Я использую потерю отрицательной логарифмической вероятности в pytorch. Я получаю низкие потери (~ 1e ^ -5), но точность для того же набора данных составляет всего 33%.

Я также обучил модель на 3 образцах и получил 100% точность, но во время обучения у меня было потеря. У меня создалось впечатление, что отрицательная логарифмическая вероятность дает потерю (потеря находится в той же области ~ 1e ^ -5), если есть несоответствие между прогнозируемой и целевой меткой?

Есть ли ошибка в моем коде вероятно?

1 Ответ

1 голос
/ 14 июля 2020

В вашем коде нет ошибки. Обычно в глубоких сетях все работает так, что сети предсказывают логиты (то есть логарифмическую вероятность). Затем эти логиты преобразуются в вероятность с помощью soft-max (или сигмоидной функции). Наконец, кросс-энтропия оценивается на основе предсказанных вероятностей. Преимущество этого подхода в том, что он численно стабилен, и его легко использовать. С другой стороны, из-за soft-max у вас никогда не может быть «идеальных» вероятностей 0/1 для ваших прогнозов: то есть, даже если ваша сеть имеет идеальную точность, она никогда не будет назначать вероятность 1 правильному прогнозу, а будет «близко» к одному". В результате убыток всегда будет положительным (пусть и небольшим).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...