Função de Perda
Durante o treinamento de uma rede neural, é necessário medir o desempenho do modelo. Isso é feito utilizando uma função de perda, que quantifica a diferença entre as saídas previstas e os valores-alvo reais. O objetivo do treinamento é minimizar essa perda, tornando as previsões o mais próximas possível dos valores reais.
Uma das funções de perda mais utilizadas para classificação binária é a perda de entropia cruzada, que funciona bem com modelos que produzem probabilidades como saída.
Derivação da Perda de Entropia Cruzada
Para compreender a perda de entropia cruzada, começamos com o princípio da máxima verossimilhança. Em um problema de classificação binária, o objetivo é treinar um modelo que estime a probabilidade y^ de uma determinada entrada pertencer à classe 1. O rótulo real y pode ser 0 ou 1.
Um bom modelo deve maximizar a probabilidade de prever corretamente todos os exemplos de treinamento. Isso significa que queremos maximizar a função de verossimilhança, que representa a probabilidade de observar os dados dados as previsões do modelo.
Para um único exemplo de treinamento, assumindo independência, a verossimilhança pode ser escrita como:
P(y∣x)=y^y(1−y^)1−yEssa expressão significa simplesmente:
- Se y=1, então P(y∣x)=y^, ou seja, queremos maximizar y^ (a probabilidade atribuída à classe 1);
- Se y=0, então P(y∣x)=1−y^, ou seja, queremos maximizar 1−y^ (a probabilidade atribuída à classe 0).
P(y∣x) significa a probabilidade de observar o rótulo de classe real y dado as entradas x.
Para facilitar a otimização, utilizamos a log-verossimilhança em vez da própria verossimilhança (já que logaritmos transformam produtos em somas, tornando a diferenciação mais simples):
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Como o objetivo é a maximização, definimos a função de perda como a log-verossimilhança negativa, que queremos minimizar:
L=−(ylog(y^)+(1−y)log(1−y^))Esta é a função de perda de entropia cruzada binária, comumente utilizada para problemas de classificação.
Considerando que a variável output
representa y^ para um determinado exemplo de treinamento, e a variável target
representa y para este exemplo, esta função de perda pode ser implementada da seguinte forma:
import numpy as np
loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))
Por que esta fórmula?
A perda de entropia cruzada possui uma interpretação intuitiva clara:
- Se y=1, a perda se simplifica para −log(y^), ou seja, a perda é baixa quando y^ está próxima de 1 e muito alta quando y^ está próxima de 0;
- Se y=0, a perda se simplifica para −log(1−y^), ou seja, a perda é baixa quando y^ está próxima de 0 e muito alta quando está próxima de 1.
Como os logaritmos crescem negativamente à medida que sua entrada se aproxima de zero, previsões incorretas são fortemente penalizadas, incentivando o modelo a fazer previsões corretas e confiantes.
Se múltiplos exemplos forem passados durante a propagação para frente, a perda total é calculada como a média da perda entre todos os exemplos:
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))onde N é o número de amostras de treinamento.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you explain how cross-entropy loss differs from mean squared error?
Why do we use the negative log-likelihood instead of just the likelihood?
Can you show how this loss function is used during neural network training?
Awesome!
Completion rate improved to 4
Função de Perda
Deslize para mostrar o menu
Durante o treinamento de uma rede neural, é necessário medir o desempenho do modelo. Isso é feito utilizando uma função de perda, que quantifica a diferença entre as saídas previstas e os valores-alvo reais. O objetivo do treinamento é minimizar essa perda, tornando as previsões o mais próximas possível dos valores reais.
Uma das funções de perda mais utilizadas para classificação binária é a perda de entropia cruzada, que funciona bem com modelos que produzem probabilidades como saída.
Derivação da Perda de Entropia Cruzada
Para compreender a perda de entropia cruzada, começamos com o princípio da máxima verossimilhança. Em um problema de classificação binária, o objetivo é treinar um modelo que estime a probabilidade y^ de uma determinada entrada pertencer à classe 1. O rótulo real y pode ser 0 ou 1.
Um bom modelo deve maximizar a probabilidade de prever corretamente todos os exemplos de treinamento. Isso significa que queremos maximizar a função de verossimilhança, que representa a probabilidade de observar os dados dados as previsões do modelo.
Para um único exemplo de treinamento, assumindo independência, a verossimilhança pode ser escrita como:
P(y∣x)=y^y(1−y^)1−yEssa expressão significa simplesmente:
- Se y=1, então P(y∣x)=y^, ou seja, queremos maximizar y^ (a probabilidade atribuída à classe 1);
- Se y=0, então P(y∣x)=1−y^, ou seja, queremos maximizar 1−y^ (a probabilidade atribuída à classe 0).
P(y∣x) significa a probabilidade de observar o rótulo de classe real y dado as entradas x.
Para facilitar a otimização, utilizamos a log-verossimilhança em vez da própria verossimilhança (já que logaritmos transformam produtos em somas, tornando a diferenciação mais simples):
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Como o objetivo é a maximização, definimos a função de perda como a log-verossimilhança negativa, que queremos minimizar:
L=−(ylog(y^)+(1−y)log(1−y^))Esta é a função de perda de entropia cruzada binária, comumente utilizada para problemas de classificação.
Considerando que a variável output
representa y^ para um determinado exemplo de treinamento, e a variável target
representa y para este exemplo, esta função de perda pode ser implementada da seguinte forma:
import numpy as np
loss = -(target * np.log(output) + (1 - target) * np.log(1 - output))
Por que esta fórmula?
A perda de entropia cruzada possui uma interpretação intuitiva clara:
- Se y=1, a perda se simplifica para −log(y^), ou seja, a perda é baixa quando y^ está próxima de 1 e muito alta quando y^ está próxima de 0;
- Se y=0, a perda se simplifica para −log(1−y^), ou seja, a perda é baixa quando y^ está próxima de 0 e muito alta quando está próxima de 1.
Como os logaritmos crescem negativamente à medida que sua entrada se aproxima de zero, previsões incorretas são fortemente penalizadas, incentivando o modelo a fazer previsões corretas e confiantes.
Se múltiplos exemplos forem passados durante a propagação para frente, a perda total é calculada como a média da perda entre todos os exemplos:
L=−N1i=1∑N(yilog(y^i)+(1−yi)log(1−y^i))onde N é o número de amostras de treinamento.
Obrigado pelo seu feedback!