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^

Hendrik
fonte

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.

Jan van der Vegt
fonte
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.|yhaty|

rilut
fonte
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.

Ryan Zotti
fonte
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