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 Sequentialfrom tensorflow.keras.layers import Densemodel = 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'])xxxxxxxxxxmodel = Sequential()model.add(Dense(16, input_dim=20, activation='relu'))model.add(Dense(10, activation='softmax')) # 10 classesmodel.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])xxxxxxxxxxmodel = Sequential()model.add(Dense(16, input_dim=20, activation='relu'))model.add(Dense(1)) # Saída contínuamodel.compile(optimizer='adam', loss='mean_squared_error')Você também pode definir sua própria função de custo:
xxxxxxxxxximport tensorflow as tfdef custom_loss(y_true, y_pred): return tf.reduce_mean(tf.square(y_true - y_pred)) # Exemplo de MSE personalizadomodel.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