У меня есть вектор признаков размером 1x4098. Каждый вектор признаков соответствует числу с плавающей запятой (температуре). В процессе обучения у меня есть 10 000 образцов. Следовательно, у меня есть размер тренировочного набора 10000x4098 и метка 10000x1. Я хочу использовать модель линейной регрессии для прогнозирования температуры на основе данных обучения. я использую 3 скрытых слоя (512, 128, 32) с потерей MSE. Однако я получил точность только 80%, используя tensorflow. Не могли бы вы предложить мне другие функции потерь, чтобы повысить производительность?
Какая функция потерь лучше, чем MSE при прогнозировании температуры?
Ответы (1)
Позвольте мне дать довольно теоретическое объяснение выбора функции потерь. Как несложно догадаться, все зависит от данных.
MSE имеет хорошую вероятностную интерпретацию: она соответствует MLE (оценка максимального правдоподобия) в предположении, что распределение p(y|x)
является гауссовым: p(y|x) ~ N(mu, sigma)
. Поскольку MLE сходится к истинному значению параметра, это означает, что при таком допущении найденный минимум, скорее всего, будет наилучшим соответствием, которое вы можете получить. Конечно, вы можете найти локальный минимум вместо глобального, также есть неявное предположение, что ваши обучающие данные хорошо представляют распределение x
. Но такого рода неопределенность неизбежна, поэтому на самом деле мы просто принимаем ее.
Двигаясь дальше, минимизация потерь L1 (абсолютная разница) эквивалентна максимизации MLE при условии, что p(y|x)
имеет распределение Лапласа. И вот тот же вывод: если данные соответствуют этому распределению, никакие другие потери не будут работать лучше, чем потери L1.
проигрыш Хьюбера не имеет строгой вероятностной интерпретации (по крайней мере, я не знаю об этом), это что-то среднее между L1 и L2, ближе к тому или иному в зависимости от выбора delta
.
Как это поможет вам найти правильную функцию потерь? Прежде всего, это означает, что по умолчанию ни один убыток не превосходит другие. Во-вторых, чем лучше вы понимаете данные, тем больше вы можете быть уверены в правильности выбора функции потерь. Конечно, вы можете просто перепроверить все эти варианты и выбрать лучший. Но есть веская причина для такого анализа: когда вы уверены в распределении данных, вы увидите постоянное улучшение с добавлением новых обучающих данных и увеличением сложности модели. В противном случае просто возможно, что модель никогда не обобщится.