Função de perda de coeficiente de dados vs entropia cruzada

27

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.

cristão
fonte
Por que não usar a abordagem prática para usar os dois e comparar os resultados. Olhando para muitos campos de aplicação diferentes, a discussão da função de perda é seu próprio tópico de pesquisa extensa. Como as redes convolucionais ainda são um 'tópico importante', eu acho que a maioria dos artigos ainda será publicada no futuro.
Querubim

Respostas:

27

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-tpt ou2pt2ptp2+t2 , os gradientes resultantes wrtpsão muito mais feios:2t22ptp+tp e2t(t2-p2)2t2(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.2t(t2-p2)(p2+t2)2pt


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.

shimao
fonte
p-t
3
Quando é a maximização do "objetivo principal" da perda de dados? Eu verifiquei o artigo original e tudo o que eles dizem é que "obtemos resultados que observamos experimentalmente são muito melhores do que os calculados através da mesma rede treinada para otimizar uma perda logística multinomial com re-ponderação da amostra". Isso não é muito convincente.
Neil G
@shimao Por "feio" você quer dizer que os gradientes podem explodir, isso está correto?
flawr 27/08
17

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.

Jan Kukacka
fonte