기존의 FR 태스크는 크게 두 줄기로 나뉘는데, 하나는 Softmax loss 등을 이용하여 multi-class classification 문제를 통해 모델을 학습하는 것이고, 또 하나는 Triplet loss 등을 이용하여 직접적으로 discriminative feature를 학습하는 것이다. 하지만 전자는 1) FC layer의 수가 identity에 따라 linear하게 증가한다는 문제와 2) closed-world set에서는 잘 작동하지만 open-world set에서는 잘 작동하지 않는다는 문제를 가지고, 후자는 1) triplet pair의 수가 기하급수적으로 증가한다는 문제와 2) hard example mining이 쉽지 않다는 문제를 가진다. (이것이 문제되는 이유는 학습이 불안정하기 때문이다. 이를 해결하기 위해 In Defense of the Triplet Loss 에서는 online hard mining을 이용한 Hard Triplet을 제시하기도 한다.)
이러한 문제를 해결하기 위해 SphereFace 에서 discriminative angular distribution을 학습하도록 Softmax loss를 변형하는 angular margin이라는 주요한 아이디어를 제시하지만, 논문에서는 이러한 SphereFace가 cosine function에 대한 approximation을 사용하기 때문에 학습이 불안정하며, 또한 multiplicative margin이 Softmax logit을 굉장히 급경사로 만들어 convergence를 방해한다고 주장한다. 이러한 학습의 불안정성으로 인해 SphereFace에서는 학습 시에 annealing 전략을 활용한다.
ArcFace에서는 위와 같은 문제를 해결하기 위해 1) approximation을 사용하지 않고 arccos function을 이용하여 각도를 구해내며, 2) additive angular margin을 사용함으로써 보다 안정적인 학습이 가능하도록 한다.
SphereFace와 비교하여 ArcFace를 설명해보자면, ArcFace 역시 SphereFace와 마찬가지로 angular Softmax를 이용하지만, ArcFace는 weight인 뿐 아니라 feature vector인 역시 (L2) normalization한 후 의 크기로 re-scaling한다. 그 후 SphereFace와는 다르게 cosine distance에 (multiplicative가 아닌) additive margin 을 추가함으로써 intra-class compactness와 inter-class discrepancy를 동시에 최적화한다. 이 때 margin 이 hypersphere의 geodesic distance, 즉 arc(호)의 길이와 대응되므로 논문에서는 이러한 loss를 ArcFace라 지칭한다. 최종적인 loss의 형태는 다음과 같다.
이 때 각도는 를 통해 구한다.
한편 이러한 ArcFace는 각도의 공간에서 CosFace, SphereFace 등과 달리 angular margin이 일정하다는 특징을 가진다. 논문에서는 이러한 margin space에 대한 작은 변화가 "나비효과"를 가져다줄 수 있다고 한다. 일례로 원래의 SphereFace는 학습의 불안정성으로 인해 annealing 전략을 사용하는데, arccos를 통해 각도를 추론해내는 SphereFace를 구현함으로써 ($m$의 integer requirement를 해소하고) 특별한 어려움 없이 convergence까지 학습할 수 있었다고 한다.
뭐 나머지는 다 비슷하게 여러 benchmark에서 SOTA를 달성할 수 있었고, 이러한 ArcFace loss가 효율적임을 ablation study를 통해 밝혀낼 수 있었다는 내용이다. 그 중에서도 ArcFace loss는 hybrid loss 없이도 혼자서 좋은 성능을 낼 수 있었다는 점이 인상적이다. 다른 모든 loss의 조합보다 ArcFace의 성능이 좋았으며, ArcFace에 Triplet loss 등의 다른 loss를 조합하여 학습해도 성능의 개선이 없었다는 것이다. 논문에서는 이미 ArcFace가 intra-class compactness와 inter-class discrepancy를 훌륭히 학습시키고 있기 때문일 것이라고 추측했다.
또한 Triplet loss와 ArcFace loss의 positive pair, negative pair의 각도의 분포를 시각화하여 비교하기도 하고, intra-class compactness와 inter-class discrepancy를 평가하는 metric을 표로 비교하기도 하는데, 이 부분의 상당히 직관적이다. 대부분의 loss는 intra-class compactness를 학습하려다 inter-class discrepancy를 희생하거나, 그 반대되는 상황에 처하고는 하는데, ArcFace는 두 가지 상황에 모두 상당히 robust한 모습을 보여준다.
훌륭한 논문이지만, 내가 잘못 읽은 건지 어딘가 답답한 구석이 있다. 주장을 하고는 논리적인 근거를 제시하지 않고 그냥 넘어가고, 왠지 앞뒤의 맥락이 깔끔하게 이어지지 않는 부분이 조금 있는 것 같다. 전자에 대한 일례로는 SphereFace의 numerical instability를 설명함에 있어서 approximation을 사용하여 학습이 불안정하다고 하는데, 무슨 approximation이 왜 학습을 불안정하게 하는지 깔끔하게 설명하지 않고, 그러다가 갑자기 integer multiplicative margin이 logit을 급경사로 만들어 학습이 불안정하다는 주장을 꺼낸다. 후자에 대한 일례로는 역시 numerical stability에 대한 언급을 하면서 logit curve를 시각화하는 자료를 보여주고는, 그 자료에 대한 해석은 전혀 하지 않고 다음 주제로 넘어가버리기도 하고, 각도 공간에서 ArcFace의 decision boundary가 constant 하며, 이러한 작은 변화가 "butterfly effect"를 가져다줄 수 있다고 하면서 갑자기 SphereFace가 학습의 안정화를 위해 hybrid loss를 사용했다는 점을 지적한다. 이 흐름이 어색한 건지, 내가 맥락을 잡지 못하고 있는 건지 모르겠다.
사실 보기에는 multiplicative margin이 아닌 additive margin을 사용했다는 것(과 arccos 함수를 이용하여 각도를 도출해낸다는 것)이 주요한 차이인 것 같은데, 이로 인한 효과에 대해 직접적으로 상세하게 설명된 부분은 없는 듯한 느낌을 받았다. 하지만 그럼에도 여러 가지 직관적인 실험 결과들과 제시된 방법, 그리고 모델의 성능이 흥미롭다.
또한 논문에 SphereFace가 학습의 불안정성을 해소하기 위해 hybrid loss(joint training)를 사용한다고 언급되어 있다. 이는 SphereFace 페이퍼의 부록에 명시되어 있듯 학습을 위해 annealing 전략을 취했는데, 그러한 annealing 전략의 특성상 초반에서는 original softmax loss와 동일한 최적화가 진행됨을 일컫는다. ArcFace 페이퍼에서는 이러한 annealing의 사용 여부를 통해 학습의 불안정성을 지적하고자 한다.
E.O.D.