Função de Perda
Durante o treinamento de uma rede neural, é necessário medir o quão precisamente o modelo prevê os resultados corretos. Isso é feito utilizando uma função de perda, que calcula a diferença entre as previsões do modelo e os valores-alvo reais. O objetivo do treinamento é minimizar essa perda, tornando as previsões o mais próximas possível dos resultados verdadeiros.
Para tarefas de classificação binária, uma das funções de perda mais utilizadas é a perda de entropia cruzada, especialmente eficaz para modelos que produzem probabilidades.
Derivação da Perda de Entropia Cruzada
Para compreender a perda de entropia cruzada, considere 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 que uma determinada entrada pertença à classe 1. O rótulo verdadeiro y pode assumir um de dois valores: 0 ou 1.
Um modelo eficaz deve atribuir altas probabilidades para previsões corretas. Essa ideia é formalizada por meio da função de verossimilhança, que representa a probabilidade de observar os dados reais dadas as previsões do modelo.
Para um único exemplo de treinamento, assumindo independência, a verossimilhança pode ser expressa como:
P(y∣x)=y^y(1−y^)1−yEsta expressão significa o seguinte:
- Se y=1, então P(y∣x)=y^ — o modelo deve atribuir uma alta probabilidade à classe 1;
- Se y=0, então P(y∣x)=1−y^ — o modelo deve atribuir uma alta probabilidade à classe 0.
Em ambos os casos, o objetivo é maximizar a probabilidade que o modelo atribui à classe correta.
P(y∣x) significa a probabilidade de observar o rótulo de classe real y dado as entradas x.
Para simplificar a otimização, utiliza-se a log-verossimilhança em vez da função de verossimilhança, pois aplicar o logaritmo converte produtos em somas, facilitando a diferenciação:
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Como o treinamento visa maximizar a log-verossimilhança, a função de perda é definida como seu valor negativo para que o processo de otimização se torne um problema de minimização:
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 são 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?
What happens if the model predicts exactly 0 or 1 for the output?
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 quão precisamente o modelo prevê os resultados corretos. Isso é feito utilizando uma função de perda, que calcula a diferença entre as previsões do modelo e os valores-alvo reais. O objetivo do treinamento é minimizar essa perda, tornando as previsões o mais próximas possível dos resultados verdadeiros.
Para tarefas de classificação binária, uma das funções de perda mais utilizadas é a perda de entropia cruzada, especialmente eficaz para modelos que produzem probabilidades.
Derivação da Perda de Entropia Cruzada
Para compreender a perda de entropia cruzada, considere 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 que uma determinada entrada pertença à classe 1. O rótulo verdadeiro y pode assumir um de dois valores: 0 ou 1.
Um modelo eficaz deve atribuir altas probabilidades para previsões corretas. Essa ideia é formalizada por meio da função de verossimilhança, que representa a probabilidade de observar os dados reais dadas as previsões do modelo.
Para um único exemplo de treinamento, assumindo independência, a verossimilhança pode ser expressa como:
P(y∣x)=y^y(1−y^)1−yEsta expressão significa o seguinte:
- Se y=1, então P(y∣x)=y^ — o modelo deve atribuir uma alta probabilidade à classe 1;
- Se y=0, então P(y∣x)=1−y^ — o modelo deve atribuir uma alta probabilidade à classe 0.
Em ambos os casos, o objetivo é maximizar a probabilidade que o modelo atribui à classe correta.
P(y∣x) significa a probabilidade de observar o rótulo de classe real y dado as entradas x.
Para simplificar a otimização, utiliza-se a log-verossimilhança em vez da função de verossimilhança, pois aplicar o logaritmo converte produtos em somas, facilitando a diferenciação:
logP(y∣x)=ylog(y^)+(1−y)log(1−y^)Como o treinamento visa maximizar a log-verossimilhança, a função de perda é definida como seu valor negativo para que o processo de otimização se torne um problema de minimização:
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 são 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!