Fuções de Custo (Loss Functions)Como Definir Funções de Custo no KerasExemplo 1: Classificação BináriaExemplo 2: Classificação Multiclasse (One-Hot Encoded)Exemplo 3: Regressão (MSE)Exemplo 4: Função de Custo PersonalizadaObservações
No Keras, as funções de custo (ou funções de perda) são usadas para medir o desempenho do modelo durante o treinamento. A escolha da função de custo depende do tipo de problema que você está resolvendo (classificação, regressão, etc.). Abaixo está uma tabela que relaciona funções de custo com os tipos de problema mais adequados, além de como ativá-las no Keras.
###Tabela: Funções de Custo vs. Aplicação Mais Adequada
Função de Custo (Keras) | Aplicação Mais Adequada | Como Ativar no Keras |
---|---|---|
MeanSquaredError (MSE) | Regressão (valores contínuos) | loss='mean_squared_error' |
MeanAbsoluteError (MAE) | Regressão (menos sensível a outliers) | loss='mean_absolute_error' |
BinaryCrossentropy | Classificação binária (2 classes) | loss='binary_crossentropy' |
CategoricalCrossentropy | Classificação multiclasse (mais de 2 classes, com rótulos one-hot encoded) | loss='categorical_crossentropy' |
SparseCategoricalCrossentropy | Classificação multiclasse (mais de 2 classes, com rótulos inteiros) | loss='sparse_categorical_crossentropy' |
Hinge | Classificação binária com margem máxima (SVM-like) | loss='hinge' |
Huber | Regressão (combina MSE e MAE, menos sensível a outliers) | loss=tf.keras.losses.Huber(delta=1.0) |
LogCosh | Regressão (suaviza o erro, menos sensível a outliers) | loss='log_cosh' |
Poisson | Problemas de contagem (distribuição de Poisson) | loss='poisson' |
KLDivergence | Comparação de distribuições de probabilidade | loss='kl_divergence' |
CosineSimilarity | Comparação de similaridade entre vetores | loss='cosine_similarity' |
Ao compilar um modelo no Keras, você pode especificar a função de custo usando o argumento loss
. Aqui estão alguns exemplos:
xfrom tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
model = Sequential()
model.add(Dense(16, input_dim=20, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
xxxxxxxxxx
model = Sequential()
model.add(Dense(16, input_dim=20, activation='relu'))
model.add(Dense(10, activation='softmax')) # 10 classes
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
xxxxxxxxxx
model = Sequential()
model.add(Dense(16, input_dim=20, activation='relu'))
model.add(Dense(1)) # Saída contínua
model.compile(optimizer='adam', loss='mean_squared_error')
Você também pode definir sua própria função de custo:
xxxxxxxxxx
import tensorflow as tf
def custom_loss(y_true, y_pred):
return tf.reduce_mean(tf.square(y_true - y_pred)) # Exemplo de MSE personalizado
model.compile(optimizer='adam', loss=custom_loss)
Funções de Ativação: A função de ativação na camada de saída deve ser compatível com a função de custo. Por exemplo:
binary_crossentropy
, use sigmoid
.categorical_crossentropy
, use softmax
.Métricas: Além da função de custo, você pode especificar métricas de avaliação (como accuracy
) para monitorar o desempenho do modelo.
Funções de Custo Personalizadas: Se você criar uma função de custo personalizada, certifique-se de que ela seja diferenciável para que o backpropagation funcione corretamente.
Essas são as principais funções de custo disponíveis no Keras e como aplicá-las de acordo com o tipo de problema que você está resolvendo.
20/03/2025