본문 바로가기

visioin_ai이론

[ computer vision AI ] focal loss 파헤치기 2 ( feat. Balanced Cross Entropy , focal loss )

논문 원문 : https://arxiv.org/abs/1708.02002


저번 글에 이어 local loss에 대해 시작해보려합니다. 지난번 글은 아래 글을 참고해주세요

2023.01.04 - [visioin_ai이론] - [ computer vision AI ] focal loss 파헤치기 1 ( feat. loss function , information, entropy, cross entropy )


Balanced Cross Entropy

  Balanced Cross Entropy 식은 아래와 같아요

출처 :  https://arxiv.org/abs/1708.02002

해당 식은 논문 원문에서 가져온 식이랍니다. 잠깐 복습하고 넘어갈까요? p_t는 어떤 사건이 일어날 확률이었고, -log(p_t) 는 정보량을 의미했죠. 그런데 저번에 다뤘던 cross entropy와는 뭔가가 달라요. 그쵸? 확률분포에 대한 term이 없으니까요. 그럼 우선 식그대로 정보량의 관점에서 바라봅시다. weight alpha( a )_t 를 식 앞에 곱하네요? 의미적으로는 저 weight를 통해서 정보량을 control 하겠다는 거지요. 그럼 왜 정보량에 weight를 곱해주려는 것일까요?? 

 

이를 이해하기 위해서 사진에서 물체를 탐지하는 상황에 대한 이해가 필요합니다. 아래 직접 그린 그림을 봅시다.

사진에 3개의 물체가 있고 탐지 되는 부분을 점으로 찍어놨습니다. 해당 물체를 탐지하기 위해 anchor박스를 활용하고 해당 object가 foreground 인지 background 인지를 판단한다고 해봅시다.

아래 사진은 간단한 예시지만 통상적으로 foreground에 비해 background는 그 수가 엄청나게 많을 수밖에 없습니다. CE loss를 사용하게 되면, 각각 loss에 대해서는 작은 loss 값을 산출합니다. 그런데 빈도수에 대한 고려가 들어가 있지 않습니다. 위와 같이 배경이 object에 비해 압도적으로 많은 경우를 class imbalance 라고 부릅니다. 그리고 한 가지 개념이 더 들어가는 데, 이는 Easy example과 Hard example입니다.  Easy example은 모델이 판단하기 쉬운 sample을 의미하고, hard example은 모델이 판단하기 어려운 sample 즉 객체를 의미합니다. Easy example은 모델이 판단하기 쉽기 때문에 높은 p_t를 가지고 hard example은 낮은 p_t를 가지게 되겠죠. 때문에 보통은 배경이 easy example인 경우가 많고, 물체가 hard example인 경우가 많지요. 배경이 이미지의 대다수를 차지하기에 easy example이라고 생각할수도 있지만, 꼭 그렇지만은 않은 것이, 월드컵 당시의 광화문 거리를 생각해보면 사람이 거리에 엄청나게 많잖아요? 사진이 거의 사람이었을거에요. 즉 빈도수와 상관없이 배경이 easy example이 되기도 한답니다. 다시 돌아가서, 위의 설명을 식으로 표현해보자면 아래와 같습니다. 우선 식을 보기 전에 foreground p_t = 0.95 라고 해봅시다. 그럼 background p_t는 foreground 에 대해 1- p_t_foreground = 0.05 가 되겠죠. 즉 foreground가 나올 확률이 0.95 이면 background는 0.05가 된다라는 겁니다

그러면 아래식을 보면

출처 : 직접 작성

둘 다 값자체는 매우 작지만, 업데이트 되는 빈도수가 Background가 압도적으로 많을 것이기 때문에, background를 학습하게 되는 이상한 현상이 벌어질 수 있다는 겁니다. 그래서 이 문제를 다루기 위해 weight를 곱해주어, 즉 background에는 작은 값을, foreground에 대해서는 큰 값을 곱해주게되고 업데이트되는 loss의 비율을 조절해 주는 겁니다. 자, 여기서 문제가 하나 발생합니다. foreground와 background 중에 누가 easy example이고 누가 hard example 인가요? 어떻게 판단하지요? 그리고 판단하면 뭐가 달라지는 데요?  빈도수가 많으면 Easy example 인가요?? 이 질문의 핵심은 easy eample에 높은 penalty를 주어 상대적으로 hard example에 대한 loss를 키워주는 방식입니다. loss가 크다는 것은 그 다음 update에서 학습될 여지가 크다라를 것을 뜻하기도 한답니다. 어떻게 판단하는 지에 대한 대답이 바로 focal loss입니다.

 


Focal loss

출처 :  https://arxiv.org/abs/1708.02002

  Balanced Cross Entropy와 Focal loss의 차이점은 ( 1 - p_t ) ^ gamma term이 추가 되었다는 거죠. 위에서 던진 질문이 뭐였죠? 어떻게 easy eaxmple에 대해 구별할 것인가였죠? easy example은 p_t 값이 높을 것이라고 했구요. 추가된 term을 보면 p_t가 높을수록, gamma ( r )이 클수록 더 많은 페널티를 받게 하죠. 즉 작은 loss는 더 작게, 큰 loss는 상대적으로 더 크게 하는 효과가 있다는 거죠. 그리고 alpha term은 Balanced Cross Entropy에서와 같은 weight로 빈도수에 대한 고려를 할 수 있도록 해주죠. alpha와 gamma는 실험을 통해 결정된다고 하며, 해당 논문에서는 alpha = 0.25, gamma = 2가 제일 좋은 결과가 나왔다고 합니다. 이렇게 Focal loss에 대해서는 마무리하도록 할게요.