У меня есть предварительно обученная архитектура повторной сети imagenet (например, resnet18, но на один остаточный блок меньше).Сначала я использовал его для классификации «моноэтикетка».Это работало довольно хорошо.(4 класса)
Чтобы улучшить классификацию, я переключился на классификацию с несколькими метками с той же архитектурой.Я изменил классификатор с HingeLoss на SigmoidCrossEntropy.Если я не изменю что-либо еще, «точность» (*) моего поезда выравнивается на ~ 70%, а «точность» проверки в то же время составляет ~ 1% (!!!!) (такая же разница видна напотеря тоже).Если я изменяю функцию активации с ReLU на SoftMax, то точность поезда и валидации (и потери тоже) очень похожи, но точность выравнивается примерно на 30%.
Плохая точность становится понятной после измененияфункция активации, но общего поведения нет.Почему большое - казалось бы - переобучение можно увидеть с помощью ReLU, в то время как то же самое не было видно ни в классификации монослоя, ни в том случае, если я использую SoftMax?
... или я что-то неправильно понял?
(*) Я рассчитываю потери Хэмминга и использую их как «точность»
PS: Все реализовано в caffe.