Redes neurais - correlação de perda e precisão


11

Estou um pouco confuso com a coexistência de métricas de perda e precisão nas redes neurais. Ambos devem render a "exatidão" da comparação de e , não são? Portanto, a aplicação dos dois não é redundante nas épocas de treinamento? Além disso, por que eles não estão relacionados?yyy^

Respostas:


9

A perda de log tem a propriedade agradável de ser uma função diferenciável. A precisão pode ser mais importante e é definitivamente mais interpretável, mas não é diretamente utilizável no treinamento da rede devido ao algoritmo de retropropagação que exige que a função de perda seja diferenciável. Quando sua perda preferida não é diretamente otimizável (como a precisão), você usa uma função de perda que se comporta de maneira semelhante ao proxy da métrica verdadeira. No caso de classificação binária, você usaria um sigmóide no final e uma perda de log para aproximar a precisão. Eles são altamente correlacionados.


6

A perda é mais geral que a precisão. Na classificação, você pode ter 100% de precisão, onde todos os rótulos são previstos corretamente. Mas e quanto à regressão ou previsão? Não há definição de 0% e 100%

A perda pode ser otimizada com vários métodos. Na classe Métodos Numéricos, você aprendeu a resolver uma função otimizando-a (o que está minimizando ) com vários métodos, como o método de Newton, o método de bissecção, etc.|yhat−y|


0

Sim, ambos medem a exatidão de y e y_hat e sim, geralmente são correlacionados. Às vezes, a função de perda pode não ser precisa, mas você ainda está interessado em medir a precisão, mesmo que não a esteja otimizando diretamente. O exemplo MNIST do TensorFlow do Google minimiza / otimiza a perda de entropia cruzada, mas exibe precisão ao usuário ao relatar resultados, e isso é perfeitamente aceitável.

Às vezes, você não deseja otimizar a precisão diretamente. Por exemplo, se você tiver um sério desequilíbrio de classe, seu modelo maximizará a precisão simplesmente escolhendo sempre a classe mais comum, mas esse não seria um modelo útil. Nesse caso, entropia / perda de log seria uma função de perda melhor para otimizar.


7
Mais importante, a precisão não é uma função diferenciável, portanto você não pode retropropagá-la.
— Jan van der Vegt

@JanvanderVegt Sim, isso é um grande ponto
— Ryan Zotti

Aprendi que no Keras posso colocar uma métrica de avaliação "customizada" (neste caso, por customização, quero dizer que nenhuma implementação interna do Keras, como AUC ou F1-Score) na função de compilação. Presumo que, neste caso, essas métricas "personalizadas" serão usadas / exibidas em vez de Precisão em todos os lugares em que o show_accuracyparâmetro estiver definido como True (como no ajuste ou na avaliação). Isso está correto?
— Hendrik

11
@Hendrik sim você pode, basta criar uma def your_own_metric(y_true, y_pred)função e passá-lo paramodel.compile(..., metrics=[your_own_metric])
— rilut
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.