Функция потерь с отрицательной логарифмической вероятностью дает потери, несмотря на идеальную точность

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

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

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


person headache666    schedule 14.07.2020    source источник


Ответы (1)


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

person Shai    schedule 14.07.2020
comment
Спасибо, я понимаю. Как насчет ситуации с низкими потерями/низкой точностью при тренировочном прогоне с 200 образцами? Разве это не необычно? - person headache666; 14.07.2020
comment
@headache666, сколько у вас меток в наборе данных из 200? как распределяются этикетки? - person Shai; 14.07.2020
comment
Я пытаюсь разобрать высказывания на естественном языке в смысловые представления, очень похожие на лямбда-исчисление. Во входном словаре ~130 слов, а в выходном словаре ~70 токенов. Я более подробно расскажу о своей проблеме здесь: для воспроизведения бумажных результатов нейронно-семантического анализа">datascience.stackexchange.com/questions/77689/ Я использую этот набор данных: github.com/jkkummerfeld/text2sql-data/blob/master/data/ Я предполагаю, что круглые скобки и идентификаторы чрезмерно представлены в целевом наборе данных. - person headache666; 14.07.2020
comment
Кроме того, одни и те же представления целевого значения сочетаются с несколькими входными предложениями в наборе данных. - person headache666; 14.07.2020