Como interpretar "perda" e "precisão" para um modelo de aprendizado de máquina

Respostas:

284

Quanto menor a perda, melhor o modelo (a menos que o modelo tenha se ajustado demais aos dados de treinamento). A perda é calculada no treinamento e na validação e sua interperação é o desempenho do modelo nesses dois conjuntos. Diferentemente da precisão, a perda não é uma porcentagem. É uma soma dos erros cometidos para cada exemplo em conjuntos de treinamento ou validação.

No caso de redes neurais, a perda é geralmente verossimilhança logarítmica negativa e soma dos quadrados residuais para classificação e regressão, respectivamente. Então, naturalmente, o objetivo principal de um modelo de aprendizado é reduzir (minimizar) o valor da função de perda em relação aos parâmetros do modelo, alterando os valores do vetor de peso por meio de diferentes métodos de otimização, como a retropropagação em redes neurais.

O valor da perda implica em quão bem ou mal um determinado modelo se comporta após cada iteração da otimização. Idealmente, seria de esperar a redução da perda após cada uma ou várias iterações.

A precisão de um modelo é geralmente determinada depois que os parâmetros do modelo são aprendidos e corrigidos e nenhum aprendizado está ocorrendo. Em seguida, as amostras de teste são alimentadas no modelo e o número de erros (perda zero e um) que o modelo faz é registrado, após comparação com os verdadeiros alvos. Em seguida, é calculada a porcentagem de classificação incorreta.

Por exemplo, se o número de amostras de teste for 1000 e o modelo classificar 952 delas corretamente, a precisão do modelo será de 95,2%.

insira a descrição da imagem aqui

Existem também algumas sutilezas, reduzindo o valor da perda. Por exemplo, você pode encontrar o problema de ajuste excessivo no qual o modelo "memoriza" os exemplos de treinamento e se torna meio ineficaz para o conjunto de testes. O ajuste excessivo também ocorre nos casos em que você não emprega uma regularização , possui um modelo muito complexo (o número de parâmetros livres Wé grande) ou o número de pontos de dados Né muito baixo.

Amir
fonte
2
Olá @Amir, obrigado pela explicação detalhada. No entanto, tenho um problema: na minha rede neural, a perda sempre diminui quando eu treino (quando as épocas aumentam), mas a precisão não é melhor.
mamatv
8
@mamatv Enquanto o custo estiver diminuindo, você deve estar pronto. Embora o custo e a precisão normalmente tenham uma relação de proporcionalidade inversa, você pode observar que a precisão é um somatório dos erros zero um, enquanto o custo é um somatório dos números de ponto flutuante. Portanto, uma redução de 0,001% no custo não significa necessariamente um aumento de 0,001% na precisão. Aumentando a precisão é muito mais difícil quando o decréscimo no custo é intangível (o custo é muito perto de um mínimo local)
Amir
2
@mamatv Eu deveria ter dito que, enquanto o custo do treinamento e da validação estiver diminuindo, você deve estar pronto. Você também pode verificar a precisão da validação em cada época. Se começar a subir, seu modelo pode ter começado a se ajustar demais e você deve parar de treiná-lo.
Amir
1
Por que não treinar o modelo para aumentar a precisão, em vez de minimizar a perda?
precisa saber é
2
A precisão do @bikashg não é diferenciável e, portanto, você não pode apoiá-lo.
DharmaTurtle 25/02/19
23

São duas métricas diferentes para avaliar o desempenho do seu modelo geralmente sendo usado em diferentes fases.

A perda é frequentemente usada no processo de treinamento para encontrar os "melhores" valores de parâmetros para o seu modelo (por exemplo, pesos na rede neural). É o que você tenta otimizar no treinamento, atualizando pesos.

A precisão é mais de uma perspectiva aplicada. Depois de encontrar os parâmetros otimizados acima, você usa essas métricas para avaliar a precisão da comparação da previsão do seu modelo com os dados reais.

Vamos usar um exemplo de classificação de brinquedos. Você deseja prever o sexo a partir do peso e da altura. Você tem 3 dados, eles são os seguintes: (0 significa masculino, 1 significa feminino)

y1 = 0, x1_w = 50kg, x2_h = 160cm;

y2 = 0, x2_w = 60kg, x2_h = 170cm;

y3 = 1, x3_w = 55kg, x3_h = 175cm;

Você usa um modelo de regressão logística simples que é y = 1 / (1 + exp- (b1 * x_w + b2 * x_h))

Como você encontra b1 e b2? você define uma perda primeiro e usa o método de otimização para minimizar a perda de maneira iterativa, atualizando b1 e b2.

Em nosso exemplo, uma perda típica para esse problema de classificação binária pode ser: (um sinal de menos deve ser adicionado na frente do sinal de soma)

Não sabemos o que b1 e b2 devem ser. Vamos adivinhar aleatoriamente digamos b1 = 0,1 e b2 = -0,03. Então, qual é a nossa perda agora?

então a perda é

Então você aprendendo o algoritmo (por exemplo, descida de gradiente) encontrará uma maneira de atualizar b1 e b2 para diminuir a perda.

E se b1 = 0,1 e b2 = -0,03 forem os b1 e b2 finais (saída da descida do gradiente), qual é a precisão agora?

Vamos supor que se y_hat> = 0,5, decidimos que nossa previsão é feminina (1). caso contrário, seria 0. Portanto, nosso algoritmo prevê y1 = 1, y2 = 1 e y3 = 1. Qual é a nossa precisão? Fazemos uma previsão errada em y1 e y2 e a correta em y3. Então agora nossa precisão é 1/3 = 33,33%

PS: Na resposta de Amir , a propagação traseira é considerada um método de otimização no NN. Eu acho que seria tratado como uma maneira de encontrar gradiente para pesos em NN. O método de otimização comum no NN são GradientDescent e Adam.

Indeciso
fonte
obrigado pela matemática. ajudou a esclarecer o conceito.
Finn Frotscher
6

@Aadnan Apenas para esclarecer os conjuntos de dados de Treinamento / Validação / Teste: O conjunto de treinamento é usado para executar o treinamento inicial do modelo, inicializando os pesos da rede neural.

O conjunto de validação é usado após o treinamento da rede neural. É usado para ajustar os hiperparâmetros da rede e comparar como as alterações neles afetam a precisão preditiva do modelo. Enquanto o conjunto de treinamento pode ser considerado usado para construir os pesos das portas da rede neural, o conjunto de validação permite o ajuste fino dos parâmetros ou da arquitetura do modelo de rede neural. É útil, pois permite a comparação repetível desses diferentes parâmetros / arquiteturas com os mesmos pesos de dados e redes, para observar como as alterações de parâmetros / arquitetura afetam o poder preditivo da rede.

Em seguida, o conjunto de testes é usado apenas para testar a precisão preditiva da rede neural treinada em dados não vistos anteriormente, após o treinamento e a seleção de parâmetros / arquitetura com os conjuntos de dados de treinamento e validação.

Jon
fonte