[20′ NIPS] CSI: Novelty Detection via Contrastive Learning on Distributionally Shifted Instances

This entry is part 29 of 40 in the series Anomaly Detection

내용 요약

기존 Contrastive Learning을 사용하는 Anomaly Detection 방법의 문제를 지적합니다. Anchor Image의 Soft Augmentation Feature는 당기고 Hard Augmentation Feature 및 다른 클래스 Feature는 밀어내는 학습 방법을 제안합니다. 실험을 통해 기존 방법들 대비 One Class / Multi Class Classification에서 효과적임을 입증합니다.

1. 들어가며

이번 글에서는 2020년 NIPS에 발표된 CSI: Novelty Detection via Contrastive Learning on Distributionally Shifted Instances 논문을 리뷰합니다. 이 논문은 CSI라는 별칭으로 불리며, 이번 글에서도 CSI로 지칭하겠습니다. Anomaly Detection에 관한 기본적인 내용은 Anomaly Detection에 관한 모든 것 글을 참고해주세요.

본격적으로 들어가기 전, 제목의 의미를 통해 저자들이 강조하고자 한 내용을 유추해 보겠습니다. 제목에서는 크게 세 가지 포인트를 찾을 수 있습니다.
첫 번째는 Novelty Detection 방법론이라는 것입니다.
두 번째는 Contrastive Learning 방법을 사용하는 방법론이라는 것입니다.
세 번째는 Distributionally Shifted Instances들을 이용한다는 것입니다.
이를 통해 변형된 물체들을 사용하는 Contrastive Learning 기반의 Novelty Detection에 관한 내용임을 유추할 수 있습니다. 본문에서 하나씩 자세한 내용을 살펴보겠습니다.

이번 글의 순서는 다음과 같습니다.
첫 번째로 SimCLR로 대표되는 기존 Contrastive Learning으로 학습한 Feature로 Anomaly Detection을 할 때의 문제점을 살펴봅니다.
두 번째로 CSI의 방법에 대해 살펴봅니다. 먼저 큰 그림을 살펴본 뒤 Loss Function과 Anomal Score 측정 방법을 살펴봅니다.
세 번째로 성능 실험을 통해 CSI 방법론의 효과를 살펴봅니다.
네 번째로 Ablation 실험을 통해 CSI 방법론의 타당성을 살펴봅니다.
다섯 번째로 Discussion을 통해 CSI의 Anomal Score 측정 방법의 효과에 대해 살펴보겠습니다.

2. 기존 방법의 문제점

먼저 기존 방법의 문제점을 살펴보겠습니다. 이때 기존 방법이란 SimCLR로 대표되는 기존 Contrastive Learning 방법을 의미합니다. 문제점이란 이렇게 학습한 Feature로 Anomaly Detection을 수행했을 때의 문제점을 의미하죠.

먼저 SimCLR의 학습 방식을 생각해 보겠습니다.
SimCLR Contrastive Learning의 철학은 간단합니다. 나와 다른 클래스의 Feature는 밀어내고, 나의 Augmentation Feature는 끌어당기는 것이죠. 그림으로 표현하면 다음과 같습니다.

그림1.SimCLR 학습 방식
그림1.SimCLR 학습 방식

Origin의 이미지는 Anchor, 즉 기준 이미지를 의미합니다. 기준 이미지 관점에서 강아지는 다른 클래스이죠. 밀어내는 방향으로 학습하는 모습을 볼 수 있습니다.
반면 Augmentation 된 이미지는 같은 클래스이죠. 따라서 끌어당기는 방향으로 학습하는 모습을 볼 수 있습니다.

이렇게 학습이 완료된 뒤 Feature의 분포는 어떻게 되어 있을까요? 고양이는 고양이들끼리, 강아지는 강아지들끼리 분포하게 되겠죠. 다만 생각해 볼 점은 Augmentation이 적용된 모든 고양이들이 한데 분포할 것이라는 점입니다. 이렇게 말이죠.

그림2.SimCLR로 학습한 Feature 분포
그림2.SimCLR로 학습한 Feature 분포

이게 무엇이 문제일까요?
Image Classification에서는 문제가 되지 않습니다. Image Classification에서는 회전된 고양이도 ‘고양이’니까요.
하지만 Anomaly Detection, Novelty Detection 등의 문제에서는 얘기가 다릅니다. 회전된 고양이는 ‘이상한 고양이’이죠. 따라서 Anomaly 또는 Novelty 등에 해당합니다. 즉 비정상으로 분류해야 되는 이미지인 것이죠. 따라서 Anomaly Detection에서는 회전된 고양이는 강아지와 동일하게 취급하는 게 앞뒤가 맞습니다.

3. 제안 방법

그렇다면 CSI에서 제안하는 방법은 무엇일까요?

3-1. 큰 그림

먼저 CSI의 큰 그림부터 생각해 보겠습니다.

위에서 기존 Contrastive Learning 방법의 문제점을 살펴봤죠. 회전된 고양이는 ‘비정상’으로 학습해야 한다는 것이 골자였습니다. 따라서 CSI에서는 이렇게 회전된 고양이는 강아지와 동일하게 ‘비정상’으로 학습합니다. 그림으로 표현하면 이렇습니다.

그림3. CSI 학습 방식
그림3. CSI 학습 방식

위 그림에서 Hard Augmentation, Soft Augmentation이라는 표현이 나오는데요.
Hard Augmentation이란 이미지의 의미를 다르게 만드는 Augmentation을 의미합니다. 대표적으로 회전(Rotation) 등이 있겠네요.
반대로 Soft Augmentation이란 이미지의 의미를 크게 변형시키지 않는 Augmentation 방법을 의미합니다. 대표적으로 이동(Translation), 노이즈(Noise) 등이 있겠네요.
이렇게 학습한 Feature들의 분포는 다음과 같을 겁니다.

그림4. CSI로 학습한 Feature 분포
그림4. CSI로 학습한 Feature 분포

SimCLR로 학습한 Feature와의 차이점이 보이시나요?
SimCLR로 학습한 Feature에서는 고양이들은 모두 한 곳에 분포했었습니다. 반면 CSI로 학습한 Feature는 회전된 고양이는 강아지와 동일하게 취급되는 모습을 볼 수 있습니다. 이러한 Feature 분포는 수학적으로 두 가지 특성을 갖습니다.

먼저 Cosine Similarity 관점에서 보면 이렇습니다.

  • 나와 같은 클래스 이미지의 Feature는 큰 Cosine Similarity를 갖습니다.
  • 나와 다른 클래스 이미지 또는 비정상 이미지의 Feature는 작은 Cosine Similarity를 갖습니다.

Feature Norm의 관점에서 보면 이렇습니다.

  • 나와 같은 클래스 이미지의 Feature는 큰 Norm을 갖습니다.
  • 나와 다른 클래스 이미지 또는 비정상 이미지의 Feature는 작은 Norm을 갖습니다.

뒤에서는 이를 사용하여 Anomal Score를 측정하는 방법을 살펴보겠습니다.

지금까지의 전개를 종합하여 저자들의 그림으로 표현하면 다음과 같습니다.

그림5. CSI 학습 방법 종합
그림5. CSI 학습 방법 종합

먼저 Soft Augmentation 이미지 Feature는 끌어당기는 모습을 볼 수 있습니다.
두 번째로 Hard Augmentation 이미지 Feature는 밀어내는 모습을 볼 수 있죠.
마지막으로 다른 클래스 이미지 Feature도 마찬가지로 밀어내는 모습을 볼 수 있습니다.

3-2. Loss Function

다음은 위와 같은 큰 그림을 구현하기 위한 CSI의 Loss Function을 살펴보겠습니다.

CSI는 크게 두 가지 Loss Function으로 구성되어 있습니다.

첫 번째는 Contrastive Loss입니다.
이는 지금까지 설명한 철학을 그대로 반영합니다. Soft Augmentation 이미지 Feature는 끌어당기고 Hard Augmentation 및 다른 클래스 Feature는 밀어내도록 학습합니다. 이를 수식으로 표현하면 다음과 같습니다.

그림6. Contrastive Loss
그림6. Contrastive Loss

두 번째는 Classification Loss입니다.
사실 핵심 철학은 Contrastive Loss에 반영되었고요. Classification Loss는 조금 더 확실한 효과를 더해주기 위한 양념으로 이해할 수 있습니다. Soft Augmentation은 끌어당기고 Hard Augmentation은 밀어낸다고 했는데요. 이 Augmentation의 종류를 맞추도록 학습하는 겁니다. 모델은 단순히 끌어당기고 밀어내는 정도를 넘어 정확한 Augmentation 종류를 맞춰야 하는 것이죠. 이 과정에서 Contrastive Loss의 효과를 극대화해 주는 역할을 할 겁니다. 구체적으로는 Auxiliary Task를 학습하는 방법을 통해 구현해 줍니다. Classification Loss는 수식으로 다음과 같이 표현됩니다.

그림7. Classification Loss
그림7. Classification Loss

최종 Loss Function은 이 둘을 합쳐 구성해 줍니다.

그림8. 전체 Loss
그림8. 전체 Loss

3-3. Anomal Score

다음으로 학습이 완료된 뒤 Anomal Score를 측정하는 방법을 살펴보겠습니다.

Anomal Score는 Loss Function과 마찬가지로 두 가지 요소로 구성되어 있습니다.
첫 번째는 Contrastive Representation을 사용한 Score입니다.
두 번째는 Augmentation (Transformation)을 사용한 Score입니다.

크게 두 가지 아이디어를 통해 첫 번째 Anomal Score를 구현해 줄 겁니다.
첫 번째 아이디어는 비정상 Feature는 정상 Feature와는 멀리 분포할 것이라는 점입니다.
두 번째 아이디어는 정상 Featrue의 Norm은 크고 비정상 Feature의 Norm은 작을 것이라는 점입니다.

첫 번째 아이디어는 Cosine Similarity를 통해 구현할 수 있습니다.
가까울수록 Cosine Similarity는 큰 값을 갖습니다. 멀수록 Cosine Similarity는 작은 값을 갖죠. 따라서 정상 Feature일수록 큰 Cosine Similarity 값을 가질 겁니다.

두 번째 아이디어는 Norm의 크기를 통해 구현할 수 있습니다.
정상 Feature일수록 큰 Norm값을 가질 겁니다. 이 두 가지 내용을 수식으로 표현하면 다음과 같습니다.

그림9. Anomal Score 수식
그림9. Anomal Score 수식
  • sim : Cosine Similarity
  • ||z|| : Feature Norm 크기

이를 모든 Shift 방법에 적용한 Anomal Score의 총합은 이렇게 표현됩니다.

그림10. 모든 Shift Instance에 대한 Anomal Score 수식
그림10. 모든 Shift Instance에 대한 Anomal Score 수식

다음으로 두 번째 Score를 살펴보겠습니다.
두 번째 Score는 Transformation을 사용하여 측정할 겁니다. 학습 단계에서 모델은 Auxiliary Classifier를 사용해 Transformation 종류를 맞추도록 학습했는데요. 비정상 이미지를 입력으로 받는다면 Transformation 종류를 잘 맞추지 못할 것이라고 가정합니다. 반대로 정상 이미지 입력에 대해서는 Transformation 종류를 잘 맞출 것이라고 가정하죠. 따라서 Auxiliary Classifier의 Confidence가 클수록 정상 이미지로 판단합니다. 이를 수식으로 표현하면 다음과 같습니다.

그림11. Transformation을 사용한 Anomal Score 수식
그림11. Transformation을 사용한 Anomal Score 수식

최종 Anomal Score는 위의 두 가지 Score를 합쳐서 구성합니다. 수식으로는 다음과 같습니다.

그림12. Total Score 수식
그림12. Total Score 수식

4. 효과

다음으로 성능 실험 결과를 통해 CSI의 효과를 살펴보겠습니다.

4-1. Unlabed One Class Datasets

먼저 One Class Dataset을 사용한 실험 결과를 살펴보겠습니다.

그림13. One Class Classification 성능
그림13. One Class Classification 성능

위 그림은 CIFAR10, CIFAR100, ImageNet30을 사용한 Anomaly Detection 실험 결과입니다.
한 개 클래스를 정상으로 학습한 뒤 다른 클래스는 비정상으로 판단하는 문제이죠. 우선 세 개 데이터셋 모두에서 가장 좋은 성능을 내는 모습을 볼 수 있습니다. 특히 눈여겨봐야 할 부분은 기존 Self Supervised Learning을 사용한 Anomaly Detection 방법들입니다. Geom, Rot, GOAD 등이 해당하는데요. 동일 계열 방법들보다 훨씬 좋은 성능을 확인할 수 있습니다.

4-2. Unlabed Multi Class Datasets

다음은 Multi Class Dataset에 대한 실험 결과를 살펴보겠습니다.

그림14. Multi Class Classification 성능
그림14. Multi Class Classification 성능

위 그림은 CIFAR10, ImageNet30에 대한 Multi Class Anomaly Detection 실험 결과입니다.
CIFAR10 또는 ImageNet을 정상으로 학습한 뒤 다른 데이터셋을 비정상으로 판단할 수 있는지를 실험한 것이죠. 마찬가지로 동일 계열 다른 방법들보다 훨씬 좋은 성능을 확인할 수 있습니다.

5. Ablations

다음으로 Ablation 실험을 통해 CSI 제안 방법의 타당성 여부를 살펴보겠습니다.

5-1. Transformation 종류에 따른 효과

먼저 Transformation 종류에 따라 효과가 어떻게 다른지 살펴보겠습니다. Transformation에는 아주 다양한 종류가 있습니다. 예를 들면 다음과 같습니다.

그림15. 다양한 Transformation 예시
그림15. 다양한 Transformation 예시

어떠한 Transformation을 밀어내도록/끌어당기도록 학습하는지에 따라 성능은 크게 달라질 수 있죠. 이에 대한 실험 결과는 다음과 같습니다.

그림16. Transformation에 따른 AUROC
그림16. Transformation에 따른 AUROC

OOD-ness는 AUROC로 생각해도 무방합니다. 각각의 Transformation을 밀어내도록 SimCLR를 변형해서 학습했을 때의 AUROC를 의미합니다. 즉 Cutout 한 Feature를 밀어냈을 때의 AUROC는 79.5이고 Rotation Feature를 밀어냈을 때의 AUROC는 85.2인 것이죠.

이러한 실험 결과를 통해 우리는 두 가지 교훈을 얻을 수 있습니다.
첫 번째는 밀어낼 Transformation 종류에 따라 성능이 크게 달라진다는 점입니다.
두 번째는 밀어낼수록 좋은 Transformation은 ‘우리의 상식’과 일치한다는 점입니다.
상식적으로 Noise보다는 Rotation이 더욱 밀어내야 하는 Transformation이죠. 실험 결과도 우리의 상식과 비슷한 경향을 보이는 모습을 볼 수 있습니다.

이러한 Transformation 종류에 따른 성능을 좀 더 세분화하여 실험한 결과는 다음과 같습니다.

그림17. 다양한 Transformation에 대한 성능 상세 실험
그림17. 다양한 Transformation에 대한 성능 상세 실험

Base 성능은 기존 SimCLR로 학습한 Feature의 성능을 의미합니다.
+Align은 해당 Transformation을 끌어당기도록 학습한 결과를 의미합니다.
-Align은 해당 Transformation은 제외하고 학습한 결과를 의미합니다.
+Shfit는 해당 Transformation을 밀어내도록 학습한 결과를 의미하죠.

실험 결과를 통해 두 가지 교훈을 얻을 수 있습니다.
첫 번째는 Cutout, Sobel, Noise, Blur, Perm, Rotate 등은 모두 밀어내도록 학습할 때 성능이 좋아진다는 점입니다.
두 번째는 의미 변화가 큰 Transformation일수록 성능 향상폭이 크다는 점입니다.

5-2. Dataset 특성에 따른 효과

다음은 Dataset 특성에 따른 효과를 살펴보겠습니다.

그림18. 데이터셋에 따른 효과
그림18. 데이터셋에 따른 효과

위 그림은 DTD 데이터셋에 대한 실험 결과를 나타낸 것입니다.
DTD는 직물 데이터셋입니다. 따라서 강아지 고양이 등의 고차원적 개념의 이미지를 포함하고 있는 ImageNet과는 그 특성이 매우 다르죠. 샘플 이미지를 통해 이를 확인할 수 있습니다.

(a) 결과를 보겠습니다.
Rotation과 Noise의 OOD-ness를 비교하고 있습니다. ImageNet 결과와는 반대로 Rotation보다 Noise의 OOD-ness가 더 큰 모습입니다.

(b) 결과를 보겠습니다.
Rotation을 밀어내도록 학습했을 때는 오히려 성능이 하락한 모습을 볼 수 있습니다. (CSI(R))
반면 Noise를 밀어내도록 학습했을 때는 성능이 크게 상승한 모습을 볼 수 있습니다. (CSI(N))
이를 통해 데이터셋의 특성에 따라 Transformation에 따른 효과도 달라진다는 것을 알 수 있습니다. 강아지와 고양이를 맞추는 문제라면 회전된 고양이를 강아지와 동일하게 취급하는 게 유리할 겁니다. 반면 가죽과 체크모양 비단을 맞추는 문제라면 Noise가 포함된 가죽과 비단을 동일하게 취급하는 게 유리하겠죠.

5-3. Loss Function, Anomal Score 종류에 따른 효과

다음은 Loss Function과 Anomal Score 종류에 따른 효과를 살펴보겠습니다.

그림19. Loss Function, Anomal Score 측정 방식에 따른 효과
그림19. Loss Function, Anomal Score 측정 방식에 따른 효과

(a)에서는 Loss Function에 따른 성능을 비교하고 있습니다.
기존 SimCLR의 성능보다는 Contrastive Loss, Classification Loss의 성능이 더 높은 모습을 볼 수 있습니다. 또한 이 둘을 합쳤을 때 가장 좋은 성능을 내는 모습입니다.

(b)에서는 Score 측정 방식에 따른 성능을 비교하고 있습니다.
Contrastive Score 보다는 Classification Score의 성능이 더 좋은 모습을 볼 수 있습니다. 또한 이 둘을 같이 사용했을 때 가장 성능이 좋은 모습을 볼 수 있습니다.

5-4. Transformation 결합에 따른 효과

다음은 Transformation을 결합하여 사용했을 때의 효과를 살펴보겠습니다.

그림20. Transformation 결합에 따른 효과
그림20. Transformation 결합에 따른 효과

위 그림은 다양한 Transformation에 따른 효과를 나타낸 표입니다.
한 가지 Transformation을 사용했을 때 보다 여러 Transformation을 결합하여 사용했을 때 성능이 더 좋은 모습을 볼 수 있습니다.

6. Discussion

다음은 CSI로 학습한 Feature의 특성에 대해 살펴보겠습니다.

6-1. Cosine Similarity의 적합성

먼저 Cosine Similarity을 사용하여 Anomal Score를 측정하는 방법이 적절한지 살펴보겠습니다.

그림21. Cosine Similarity을 사용한 Anomal Score 측정 방식의 적절성
그림21. Cosine Similarity을 사용한 Anomal Score 측정 방식의 적절성

(a)는 CSI로 학습한 Feature의 t-SNE를 표현한 그림입니다.
Feature들이 클래스별로 잘 구분되어 분포하는 모습을 볼 수 있습니다.

(b)는 CSI로 학습한 학습 데이터 Feature들의 Cosine Similarity 분포를 나타낸 히스토그램입니다.
동일한 클래스 Feature들끼리 대부분 큰 Cosine Similarity를 갖는 모습을 볼 수 있습니다.

(C)는 CSI로 학습한 테스트 데이터의 Normal Feature와 Anomal Feature의 Cosine Similarity 분포를 나타낸 히스토그램입니다.
Normal Feature들은 대부분 큰 Cosine Similarity를 갖는 모습을 볼 수 있습니다. 반면 Anomal Feature들은 대부분 작은 Cosine Similarity를 갖는 모습을 볼 수 있습니다.

이를 통해 Cosine Similarity를 사용하여 Anomaly를 측정하는 방법이 적절함을 알 수 있습니다.

6-2. Feature Norm의 적합성

다음은 Feature Norm을 사용하여 Anomal Score를 측정하는 방법이 적절한지 살펴보겠습니다.

그림22. Feature Norm을 사용한 Anomal Score 측정 방식의 적절성
그림22. Feature Norm을 사용한 Anomal Score 측정 방식의 적절성

(a)는 학습에 따른 Feature Norm을 사용한 AUROC를 측정한 그래프입니다.
학습이 진행될수록 Feature Norm 만으로도 Anomaly가 잘 구분되는 모습을 볼 수 있습니다.

(b)는 Anomal Feature / Normal Feature들의 Norm 분포를 비교한 히스토그램입니다.
Normal Feature Norm은 크고, Anomal Feature Norm은 작게 분포하는 모습을 볼 수 있습니다.

(c)는 Normal Feature / Anomal Feature들의 t-SNE입니다.
Anomal Feature는 주로 안쪽에, Normal Feature는 바깥쪽에 분포하는 모습을 볼 수 있습니다.

이를 통해 Feature Norm을 사용하여 Anomaly를 측정하는 방법이 적절함을 알 수 있습니다.

7. 결론

지금까지 CSI: Novelty Detection via Contrastive Learning on Distributionally Shifted Instances의 주요 내용을 살펴봤습니다.

먼저 기존 SimCLR로 대표되는 Contrastive Learning으로 학습한 Feature를 사용하는 Anomaly Detection 방법의 문제점을 살펴봤습니다. 기존 Contrastive Learning은 본인의 Augmentation 된 모든 Feature들이 모이도록 학습합니다. 이 과정에서 의미가 다르게 Augmentation 된 Feature도 모이도록 학습되는데요. Anomaly Detection에서는 이러한 방법이 오히려 성능을 하락함을 보았습니다.

따라서 CSI에서는 의미가 다르게 Augmentation 된 Feature는 다른 클래스 Feature와 마찬가지로 밀어내도록 학습했습니다. 이렇게 의미가 달라지는지 여부에 따라 Hard / Soft Augmentation으로 구분하였죠. 뿐만 아니라 Auxiliary Classifier를 추가하여 Transformation의 종류를 맞추도록 하였습니다. 이는 CSI Contrastive Learning의 학습 효과를 극대화해 주었죠. CSI의 효과는 One Class / Multi Class Novelty Detection 실험 결과를 통해 확인할 수 있었습니다. 기존 방법들보다 훨씬 향상된 성능을 확인했습니다.

Ablation 실험을 통해서는 저자들의 주장의 타당성을 확인할 수 있었습니다.

CSI는 기존의 Contrastive Learning을 살짝 변형하는 간단한 방법으로 성능을 획기적으로 개선했다는 의의를 갖습니다. 하지만 어떠한 Transformation을 밀어내도록 학습해야 할지는 주관적으로 정해야 한다는 한계가 있습니다. 또한 CIFAR, ImageNet 등 Intraclass Variance가 큰 데이터셋에 대한 성능 실험만 있다는 점도 아쉽습니다. mvTec 등 산업용 Anomaly Detection 데이터셋에서의 성능도 추가되면 더욱 완벽할 것 같습니다.

Series Navigation<< [20′ ICLR] CLASSIFICATION-BASED ANOMALY DETECTION FOR GENERAL DATA (GEOD) 핵심 리뷰[21′ ICLR] SSL-OCC : Learning and evaluating representations for deep one class classification 핵심 리뷰 >>
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
Scroll to Top