Focal loss é uma função de perda utilizada em aprendizado profundo para treinar redes neurais em tarefas com grave desequilíbrio de classes, como detecção de objetos em imagens. Ela modifica a função de perda de entropia cruzada padrão ao adicionar um fator modulador que reduz a contribuição da perda de exemplos bem classificados, permitindo que o modelo se concentre em exemplos difíceis e mal classificados. Essa abordagem foi introduzida em 2017 por Tsung-Yi Lin, Priya Goyal, Ross Girshick, Kaiming He e Piotr Dollár no artigo "Focal Loss for Dense Object Detection".
O problema central que a focal loss aborda é o desequilíbrio entre classes de primeiro plano e de fundo em tarefas de predição densa. Em uma imagem típica de detecção de objetos, a grande maioria das localizações candidatas é de fundo, e apenas algumas contêm objetos. A perda de entropia cruzada padrão pode ser dominada pelos exemplos fáceis e abundantes de fundo, fazendo com que o modelo se torne tendencioso a prever fundo e negligencie as classes de objetos raras.
Formulação Matemática
A focal loss baseia-se na perda de entropia cruzada binária (CE). Para uma classificação binária com probabilidade prevista p para a classe verdadeira, CE é definida como CE(p) = -log(p). A focal loss introduz um parâmetro de foco gama (γ) e um fator de ponderação alfa (α). A fórmula é:
FL(p) = -α(1 - p)^γ log(p)
Aqui, (1 - p)^γ é o fator modulador. Quando p está próximo de 1 (um exemplo fácil e bem classificado), esse fator se aproxima de 0, reduzindo drasticamente a perda. Quando p é pequeno (um exemplo difícil), o fator está próximo de 1, preservando a perda. O parâmetro γ controla a taxa na qual exemplos fáceis são penalizados; valores típicos são 2,0, com 0 correspondendo à entropia cruzada padrão. O parâmetro alfa equilibra a importância de exemplos positivos e negativos, frequentemente definido como o inverso da frequência das classes ou ajustado em um conjunto de validação.
Aplicação em Detecção de Objetos
A principal motivação para a focal loss foi permitir que detectores de objetos de estágio único igualassem a precisão de detectores de dois estágios. Detectores de dois estágios, como o Faster R-CNN, usam uma rede de proposta de regiões para filtrar caixas candidatas, reduzindo naturalmente o desequilíbrio de classes. Detectores de estágio único, como YOLO e SSD, avaliam todas as localizações diretamente, enfrentando um desequilíbrio muito maior. A focal loss permitiu que detectores de estágio único, particularmente o RetinaNet, alcançassem precisão de ponta enquanto mantinham velocidade. O RetinaNet, introduzido no mesmo artigo, usou uma rede de pirâmide de características e focal loss, superando detectores de estágio único anteriores e igualando ou excedendo contrapartes de dois estágios no conjunto de dados COCO.
Extensões e Variantes
Desde sua introdução, a focal loss foi adaptada a vários domínios e problemas. Na pesquisa em aprendizado de máquina, variantes foram propostas para classificação multiclasse, segmentação semântica e imagens médicas. Por exemplo, em tarefas de predição densa com múltiplas classes, a perda é calculada por classe e somada. Alguns trabalhos exploraram parâmetros gama ou alfa adaptativos, aprendendo-os durante o treinamento. A focal loss também foi aplicada a tarefas de processamento de linguagem natural, como classificação de texto com conjuntos de dados desequilibrados, e a modelos de linguagem de grande escala para tarefas como reconhecimento de entidades nomeadas, onde entidades raras são sub-representadas.
Relação com Outras Técnicas
A focal loss está conceitualmente relacionada à mineração de exemplos difíceis, onde o processo de treinamento seleciona explicitamente exemplos difíceis. No entanto, a focal loss é uma aproximação suave e diferenciável que pondera todos os exemplos continuamente, evitando a necessidade de heurísticas explícitas de seleção. Ela também se conecta ao aprendizado sensível a custos, onde os custos de classificação incorreta são ajustados por classe. O parâmetro alfa fornece uma forma de sensibilidade a custos, enquanto gama adiciona foco em exemplos difíceis. Na prática, a focal loss é frequentemente combinada com aumento de dados e outras técnicas de regularização para melhorar ainda mais a generalização.
Considerações Práticas
Implementar a focal loss requer ajuste cuidadoso de gama e alfa. Um ponto de partida comum é gama = 2 e alfa = 0,25, como usado no artigo original do RetinaNet. Na prática, a perda pode ser instável para valores muito pequenos de p, então implementações frequentemente adicionam um pequeno épsilon ao argumento do logaritmo. A focal loss está disponível em principais frameworks de aprendizado profundo, incluindo PyTorch e TensorFlow, seja por meio de funções integradas ou implementações personalizadas. Ela é particularmente eficaz quando o desequilíbrio de classes é extremo, como em detecção de objetos com milhares de caixas de fundo por imagem, mas pode fornecer benefício marginal quando o desequilíbrio é leve.
Ver Também
Referências
Lin, T. Y., Goyal, P., Girshick, R., He, K., & Dollár, P. (2017). Focal loss for dense object detection. In Proceedings of the IEEE international conference on computer vision (pp. 2980-2988).