[Introduction]
이번 포스팅에서는 Open-set recognition에 대해서 알아보겠습니다. 기계학습 및 딥러닝 모델은 점점 더 많은 현실세계 기술에 적용되고 있습니다. 이러한 모델은 훈련 세트와 동일한 분포에서 가져온 테스트 데이터에 적용할 때 가장 정확합니다. 그러나 실제로 실세계 환경에서 모델과 마주하는 데이터는 훈련 분포와 거의 일치하지 않습니다. 또한 모델의 예측 성능은 수식의 일부일 뿐, 실제 어플리케이션에 적합하지 않을 수 있습니다. 모델이 안정적으로 배포되려면 데이터 분포의 변화를 수용하고 다양한 시나리오에서 유연한 결정을 내릴 수 있어야 합니다.
실제 응용 프로그램에서는 모델을 훈련할 때 모든 클래스를 테스트에서 접할 수 있는 모든 데이터 샘플을 고의로 얻는 것이 종종 매우 어렵습니다. 즉, 자동차를 인식하는 분류 알고리즘을 훈련시키려면 슈퍼카, 일반승용차, 트럭 등 모든 유형의 자동차를 알고리즘에 공급하는 것이 유용할 것입니다. 하지만 모든 종류의 자동차를 만족시키는 데이터셋을 구축하는 것은 매우 어려운 작업이 될 수 있습니다.
보다 현실적인 시나리오는 Open-set classification (OSC) 또는 Open-set recognition (OSR) 입니다. 이 시나리오에서는 모델을 훈련할 때 데이터에 대한 불완전한 지식이 존재하고 테스트 단계에서 알 수 없는 클래스(unseen/unknown class) 가 입력될 수 있다고 가정합니다. 이러한 시나리오에서 분류기는 학습된 클래스를 정확하게 분류 해냄과 동시에 unseen 클래스를 효과적으로 처리해야 합니다. 요약하자면 OSR의 목표는 알려진 데이터와 미지의 데이터를 구별할 수 있는 알고리즘을 개발하는 것입니다.

Closed set recognition vs. open set recognition. Closed set recognition에서는 사전에 정의된 클래스를 구분하도록 학습합니다. 서로 다른 색의 원은 각각 다른 클래스를 의미합니다. 일반적으로 결정경계는 각 클래스의 사이에 형성됩니다. open set recognition에서는 우리가 모르는 샘플(사각형)이 테스트타임에 제공될 것을 가정합니다. 하지만 우리는 훈련시에 이러한 샘플에 접근 할 수 없으므로, Open-set recognition 방법론들은 주로 암시적으로 타이트한 결정경계를 형성하도록 하여 모르는 클래스와 구분하도록 합니다.