Ao treinar redes neurais de segmentação de pixel, como redes totalmente convolucionais, como você decide usar a função de perda de entropia cruzada versus a função de perda de coeficiente de dados?
Sei que essa é uma pergunta curta, mas não tenho certeza de que outras informações fornecer. Examinei um monte de documentação sobre as duas funções de perda, mas não consigo ter uma noção intuitiva de quando usar uma sobre a outra.
Respostas:
Uma razão convincente para o uso da entropia cruzada sobre o coeficiente de dados ou a métrica semelhante de IoU é que os gradientes são mais agradáveis.
Os gradientes de cross-entropia wrt os logitos é algo como , onde p representa as saídas SoftMax e t é o alvo. Enquanto isso, se tentarmos escrever o coeficiente de dados de uma forma diferenciável: 2 p tp - t p t ou2pt2 p tp2+ t2 , os gradientes resultantes wrtpsão muito mais feios:2t22 p tp + t p e2t(t2-p2)2 t2( p + t )2 . É fácil imaginar um caso em quepetsão pequenos e o gradiente explode para um valor enorme. Em geral, parece provável que o treinamento se torne mais instável.2 t ( t2- p2)( p2+ t2)2 p t
A principal razão pela qual as pessoas tentam usar o coeficiente de dados ou IoU diretamente é que o objetivo real é a maximização dessas métricas, e a entropia cruzada é apenas um proxy mais fácil de maximizar usando a retropropagação. Além disso, o coeficiente de dados tem um desempenho melhor em problemas de desequilíbrio de classe por design:
No entanto, o desequilíbrio de classe normalmente é resolvido simplesmente com a atribuição de multiplicadores de perda para cada classe, de modo que a rede é altamente desincentivada para simplesmente ignorar uma classe que aparece com pouca frequência, portanto, não está claro que o coeficiente de dados seja realmente necessário nesses casos.
Eu começaria com a perda de entropia cruzada, que parece ser a perda padrão para o treinamento de redes de segmentação, a menos que haja uma razão realmente convincente para usar o coeficiente de dados.
fonte
Como resumido por @shimao e @cherub, não se pode dizer a priori qual funcionará melhor em um determinado conjunto de dados. A maneira correta é tentar os dois e comparar os resultados. Além disso, observe que, quando se trata de segmentação, não é tão fácil "comparar os resultados" : medidas baseadas em IoU, como o coeficiente de dados, cobrem apenas alguns aspectos da qualidade da segmentação; em algumas aplicações, medidas diferentes, como distância média da superfície ou distância da superfície de Hausdorff precisam ser usadas. Como você vê, nem mesmo a escolha da métrica de qualidade correta é trivial, muito menos a escolha da melhor função de custo.
Pessoalmente, tenho uma experiência muito boa com o coeficiente de dados; ele realmente faz maravilhas quando se trata de desequilíbrio de classe (alguns segmentos ocupam menos pixels / voxels do que outros). Por outro lado, a curva de erro de treinamento se torna uma bagunça total: ela não me deu absolutamente nenhuma informação sobre a convergência; portanto, nesse sentido, a entropia cruzada vence. Obviamente, isso pode / deve ser contornado verificando o erro de validação de qualquer maneira.
fonte