포컬 손실(Focal loss)은 딥러닝에서 객체 감지와 같이 클래스 불균형이 심한 작업을 위한 신경망을 훈련시키는 데 사용되는 손실 함수이다. 이는 표준 교차 엔트로피 손실에 변조 인자를 추가하여 잘 분류된 예제의 손실 기여도를 줄이고, 모델이 어렵고 잘못 분류된 예제에 집중할 수 있게 한다. 이 접근법은 2017년 Tsung-Yi Lin, Priya Goyal, Ross Girshick, Kaiming He, Piotr Dollár이 "Focal Loss for Dense Object Detection" 논문에서 소개했다.
포컬 손실이 해결하는 핵심 문제는 밀집 예측 작업에서 전경 클래스와 배경 클래스 간의 불균형이다. 일반적인 객체 감지 이미지에서 후보 위치의 대다수는 배경이며, 객체를 포함하는 경우는 소수에 불과하다. 표준 교차 엔트로피 손실은 쉽고 풍부한 배경 예제에 압도되어 모델이 배경 예측에 편향되고 희귀한 객체 클래스를 무시하게 만들 수 있다.
수학적 공식화
포컬 손실은 이진 교차 엔트로피(CE) 손실을 기반으로 한다. 실제 클래스에 대한 예측 확률 p를 갖는 이진 분류의 경우, CE는 CE(p) = -log(p)로 정의된다. 포컬 손실은 초점 매개변수 gamma(γ)와 가중치 인자 alpha(α)를 도입한다. 공식은 다음과 같다:
FL(p) = -α(1 - p)^γ log(p)
여기서 (1 - p)^γ가 변조 인자이다. p가 1에 가까울 때(쉽고 잘 분류된 예제), 이 인자는 0에 접근하여 손실을 급격히 줄인다. p가 작을 때(어려운 예제), 인자는 1에 가까워 손실을 유지한다. 매개변수 γ는 쉬운 예제가 축소되는 비율을 제어하며, 일반적인 값은 2.0이고 0은 표준 교차 엔트로피에 해당한다. alpha 매개변수는 양성 및 음성 예제의 중요성을 균형 있게 조정하며, 종종 클래스 빈도의 역수로 설정되거나 검증 세트에서 조정된다.
객체 감지에서의 응용
포컬 손실의 주요 동기는 단일 단계 객체 감지기가 두 단계 감지기의 정확도를 따라잡을 수 있게 하는 것이었다. Faster R-CNN과 같은 두 단계 감지기는 영역 제안 네트워크를 사용하여 후보 상자를 필터링하므로 클래스 불균형을 자연스럽게 줄인다. YOLO 및 SSD와 같은 단일 단계 감지기는 모든 위치를 직접 평가하므로 훨씬 더 큰 불균형에 직면한다. 포컬 손실은 특히 RetinaNet이 최첨단 정확도를 달성하면서 속도를 유지할 수 있게 했다. 같은 논문에서 소개된 RetinaNet은 특징 피라미드 네트워크와 포컬 손실을 사용하여 이전의 단일 단계 감지기를 능가하고 COCO 데이터 세트에서 두 단계 감지기와 동등하거나 더 나은 성능을 보였다.
확장 및 변형
소개 이후 포컬 손실은 다양한 영역과 문제에 적용되었다. 머신러닝 연구에서는 다중 클래스 분류, 의미론적 분할 및 의료 영상 처리를 위한 변형이 제안되었다. 예를 들어, 여러 클래스가 있는 밀집 예측 작업에서는 손실이 클래스별로 계산되어 합산된다. 일부 연구는 훈련 중에 학습되는 적응형 gamma 또는 alpha 매개변수를 탐구했다. 포컬 손실은 불균형 데이터 세트가 있는 텍스트 분류와 같은 자연어 처리 작업과 희귀 엔티티가 과소 대표되는 명명된 엔티티 인식과 같은 대규모 언어 모델 작업에도 적용되었다.
다른 기법과의 관계
포컬 손실은 훈련 과정에서 어려운 예제를 명시적으로 선택하는 하드 예제 마이닝과 개념적으로 관련이 있다. 그러나 포컬 손실은 모든 예제를 연속적으로 가중치를 부여하는 매끄럽고 미분 가능한 근사치로, 명시적 선택 휴리스틱의 필요성을 피한다. 또한 클래스별로 오분류 비용을 조정하는 비용 민감 학습과도 연결된다. alpha 매개변수는 비용 민감성의 한 형태를 제공하고, gamma는 어려운 예제에 초점을 추가한다. 실제로 포컬 손실은 일반화를 더욱 개선하기 위해 데이터 증강 및 기타 정규화 기법과 결합되는 경우가 많다.
실용적 고려 사항
포컬 손실을 구현하려면 gamma와 alpha를 신중하게 조정해야 한다. 일반적인 시작점은 원래 RetinaNet 논문에서 사용된 gamma = 2 및 alpha = 0.25이다. 실제로 p 값이 매우 작으면 손실이 불안정할 수 있으므로 구현에서는 로그 인수에 작은 엡실론을 추가하는 경우가 많다. 포컬 손실은 PyTorch 및 TensorFlow를 포함한 주요 딥러닝 프레임워크에서 내장 함수나 사용자 지정 구현을 통해 사용할 수 있다. 클래스 불균형이 극심한 경우(예: 이미지당 수천 개의 배경 상자가 있는 객체 감지)에 특히 효과적이지만, 불균형이 경미한 경우에는 이점이 미미할 수 있다.
같이 보기
참고 문헌
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).