According to Lin et al., 2018, it helps to apply a focal factor to down-weight easy examples and focus more on hard examples. By default, the focal tensor is computed as follows:
focal_factor = (1 - output)^gamma for class 1
focal_factor = output^gamma for class 0
where gamma is a focusing parameter. When gamma = 0, there is no focal
effect on the binary crossentropy loss.
If apply_class_balancing == TRUE, this function also takes into account a
weight balancing factor for the binary classes 0 and 1 as follows:
weight = alpha for class 1 (target == 1)
weight = 1 - alpha for class 0
where alpha is a float in the range of [0, 1].
metric_binary_focal_crossentropy(
y_true,
y_pred,
apply_class_balancing = FALSE,
alpha = 0.25,
gamma = 2,
from_logits = FALSE,
label_smoothing = 0,
axis = -1L
)Binary focal crossentropy loss value
with shape = [batch_size, d0, .. dN-1].
Ground truth values, of shape (batch_size, d0, .. dN).
The predicted values, of shape (batch_size, d0, .. dN).
A bool, whether to apply weight balancing on the binary classes 0 and 1.
A weight balancing factor for class 1, default is 0.25 as
mentioned in the reference. The weight for class 0 is 1.0 - alpha.
A focusing parameter, default is 2.0 as mentioned in the
reference.
Whether y_pred is expected to be a logits tensor. By
default, we assume that y_pred encodes a probability distribution.
Float in [0, 1]. If > 0 then smooth the labels by
squeezing them towards 0.5, that is,
using 1. - 0.5 * label_smoothing for the target class
and 0.5 * label_smoothing for the non-target class.
The axis along which the mean is computed. Defaults to -1.
y_true <- rbind(c(0, 1), c(0, 0))
y_pred <- rbind(c(0.6, 0.4), c(0.4, 0.6))
focal_loss <- loss_binary_focal_crossentropy(y_true, y_pred, gamma = 2)
focal_loss
## tf.Tensor([0.32986468 0.20579839], shape=(2), dtype=float32)
# Compare with binary crossentropy.
# Binary focal crossentropy emphasizes harder examples, yielding a larger
# relative loss where the model struggles.
bce_loss <- loss_binary_crossentropy(y_true, y_pred)
cbind(focal_loss = as.array(focal_loss),
bce_loss = as.array(bce_loss),
ratio = as.array(focal_loss / bce_loss))
## focal_loss bce_loss ratio
## [1,] 0.3298647 0.9162908 0.3600000
## [2,] 0.2057984 0.7135582 0.2884115Other losses:
Loss()
loss_binary_crossentropy()
loss_binary_focal_crossentropy()
loss_categorical_crossentropy()
loss_categorical_focal_crossentropy()
loss_categorical_generalized_cross_entropy()
loss_categorical_hinge()
loss_circle()
loss_cosine_similarity()
loss_ctc()
loss_dice()
loss_hinge()
loss_huber()
loss_kl_divergence()
loss_log_cosh()
loss_mean_absolute_error()
loss_mean_absolute_percentage_error()
loss_mean_squared_error()
loss_mean_squared_logarithmic_error()
loss_poisson()
loss_sparse_categorical_crossentropy()
loss_squared_hinge()
loss_tversky()
metric_binary_crossentropy()
metric_categorical_crossentropy()
metric_categorical_focal_crossentropy()
metric_categorical_hinge()
metric_hinge()
metric_huber()
metric_kl_divergence()
metric_log_cosh()
metric_mean_absolute_error()
metric_mean_absolute_percentage_error()
metric_mean_squared_error()
metric_mean_squared_logarithmic_error()
metric_poisson()
metric_sparse_categorical_crossentropy()
metric_squared_hinge()
Other metrics:
Metric()
custom_metric()
metric_auc()
metric_binary_accuracy()
metric_binary_crossentropy()
metric_binary_iou()
metric_categorical_accuracy()
metric_categorical_crossentropy()
metric_categorical_focal_crossentropy()
metric_categorical_hinge()
metric_concordance_correlation()
metric_cosine_similarity()
metric_f1_score()
metric_false_negatives()
metric_false_positives()
metric_fbeta_score()
metric_hinge()
metric_huber()
metric_iou()
metric_kl_divergence()
metric_log_cosh()
metric_log_cosh_error()
metric_mean()
metric_mean_absolute_error()
metric_mean_absolute_percentage_error()
metric_mean_iou()
metric_mean_squared_error()
metric_mean_squared_logarithmic_error()
metric_mean_wrapper()
metric_one_hot_iou()
metric_one_hot_mean_iou()
metric_pearson_correlation()
metric_poisson()
metric_precision()
metric_precision_at_recall()
metric_r2_score()
metric_recall()
metric_recall_at_precision()
metric_root_mean_squared_error()
metric_sensitivity_at_specificity()
metric_sparse_categorical_accuracy()
metric_sparse_categorical_crossentropy()
metric_sparse_top_k_categorical_accuracy()
metric_specificity_at_sensitivity()
metric_squared_hinge()
metric_sum()
metric_top_k_categorical_accuracy()
metric_true_negatives()
metric_true_positives()