오늘 소개해드릴 논문은 "Segment Anything," 이고 Meta AI에서 공개한 논문입니다.
Segment anything은 모델과 데이터셋을 제안한 논문으로 foundation 모델을 지향하는 논문입니다.
NLP에서는 prompt engineering으로 이를 달성할 수 있었고, web-scale dataset이 있었기에 가능했습니다. 하지만, vision field에서는 이것이 매우 어렵습니다. CLIP이나 ALIGN도 language-vision model을 통해서 비슷하게 가능하게 했지만, foundation모델로 인정받지 못하는 것이 그것입니다.
본 논문의 목표는 segmentation task에서 foundation model을 만드는 것으로 3가지 방향으로 이를 가능하게 해보고 싶은 것입니다. 이를 위해서 3가지 의문점을 던집니다.
1. zero-shot generalization이 가능하게 되는 task는 어떤 것인가?
2. model architecture는 어떤 것을 선택해야하는가?
3. 어떤 데이터로 해당 task와 model을 학습시킬 것인가?
각 요소별로 살펴보면 첫번째는 promptable model을 생각해보아야 하고, architecture를 학습시키기 위해 broad dataset이 필요해집니다.
본 논문에서는 크게 4가지 task를 제안합니다.
1. 포인터 (이미지 내의 점을 찍는 prompt)
2. bounding box (detection의 bounding box)
3. region (ppt 그물)
4. text
모델을 구성하기 위해서 논문에서는 2가지를 고려했다고 합니다. Real-time과 ambiguity aware인데, real-time은 prompt encoder를 경량화해서 활용하고, web에서도 빠르게 돌 수 있는 모델을 제안했다고 합니다. 일단 이미지의 embedding만 되면 50ms 이내로 경량화해서 prediction에 활용할 수 있다고 합니다.
ambiguity aware는 각 prompt가 1개의 답만을 고르지 않게 하는 것을 말합니다. 아래 예시 이미지를 보시면 가방에 prompt를 찍었다고 해서 가방 사람, 지퍼 등 어떤 group으로 하느냐에 따라 prediction이 다를 수 있습니다. 해당 논문에서는 이를 한 개의 답안으로만이 아닌 여러 개의 답안이 나올 수 있도록 학습해야함을 의미합니다.
마지막으로는 이러한 architecture 를 학습할 수 있게 만드는 데이터를 어떻게 수집할 것인가에 대한 부분입니다. Real world에는 dataset이 부족하기 때문에 이를 효과적으로 늘릴 수 있는 engine을 제안합니다. 크게 3가지 stage로 구성되며, stage를 거듭할수록 사람이 annotation을 해줄 필요성이 적어집니다.
이를 통해서 지금까지는 없었던 dataset size를 만들 수 있었고, 이를 통해서 SAM을 최종적으로 학습시키게 됩니다.
위 이미지 처럼, 더 나은 annotation을 만들어 내기도 하고, 아래 이미지처럼 데이터셋에 대한 정보를 공개하기도 하니 자세한 내용은 원문을 참조해주시기 바랍니다. 감사합니다.
안녕하세요. KDST에서 현장실습을 하고 있는 성균관대학교 데이터사이언스융합전공 김지환이라고 합니다.
제가 오늘 소개드릴 논문은 2020년 NeurIPS에 나온 논문으로, OOD 탐지할 때 사용할 수 있는 score로 Energy score를 제시합니다. 기존에 사용하였던 softmax score의 단점인 overconfidence를 줄일 수 있는 차별화된 방법이라고 저자들은 주장합니다.
0부터 9까지의 숫자가 적힌 사진 데이터로 0부터 9까지 분류할 수 있는 모델이 있다고 생각해볼 수 있습니다.
이때 모델에 고양이 사진이 들어간다면, 모델은 어떤 값을 결과값으로 도출해야할까요?
당연히 0부터 9까지 숫자 중 어떤 값으로라도 결과값으로 도출해서는 안될 것입니다.
모델이 0부터 9까지의 확률값으로 결과를 뱉어낸다면, [0.1, 0.1, 0.1, ..., 0.1]로 모두 동일하게 도출해내야 할 것입니다.
위와 같이 모델이 학습했던 0~9 사이의 숫자 사진이 아닌 고양이 사진을 모델이 학습했던 데이터의 분포에 바깥에 있다는 의미에서Out of Distribution이라고 합니다.
모델의 결과값으로 아무런 결과를 도출해내지 않는 (각 라벨에 동일한 확률값을 뱉어내는) 것을OOD를 탐지해낸다고 합니다.
1-2. Energy
Statistical learning이나 machine learning의 주요 목적을 "여러 변수들(X,Y)간의 상관관계를 어떻게 하면 잘 인코딩해볼까" 라고 합니다.
이렇게 변수들간의 상관관계(X, Y 간의 상관관계)를 데이터로부터 잘 학습하고 나면, 모르는 변수의 값이 들어왔을 때 이미 알고 있는 변수들의 값을 바탕으로 모델이 질문에 답을 할 수 있을 것입니다.
따라서 학습을 energy의 관점에서 얘기해보면, 데이터를 바탕으로 어떤 energy surface를 만들어 나가되 데이터가 살고 있는 부분 혹은 공간에 대해서는 낮은 energy를 할당하고 다른 부분에는 높은 energy를 할당하도록 하는 그런 과정이라고 생각할 수 있습니다.
즉, 인코딩을 해줄 값 = energy가 되는 것이고 이를 인코딩하는 함수 = energy function이 되는 것입니다.
energy function이 학습되는 과정, 즉 energy surface가 만들어지는 과정은 아래와 같이 생각해볼 수 있습니다.
여기서 학습한 데이터와 가까울 때 에너지가 낮은 이유는, 에너지가 낮을수록 안정적이라는 물리적 개념을 차용하기 위함이라고 합니다.
현재 우리가 하고자 하는 OOD detection task를 떠올려보면, 우리는 ID와 OOD를 구분하는 energy surface를 만들어주는 energy function을 학습하고자 하는 것으로 이해할 수 있습니다.
이때 에너지 값은 스칼라 값으로, 우리는 이 값을 이용해서 특정 threshold보다 작으면 ID로, 이보다 크면 OOD로 판별할 것입니다.
이해를 돕기 위해 위 논문에서 발췌한 그림을 첨부하겠습니다.
1-3. Energy function
이 논문에서 사용하는 Energy function은 흔히 사용하는 logit에 temperature scaling을 한 버전입니다.
저자들은 이전에 나온 ODIN이라는 논문에서 제안한 temperature scaling이 OOD detection에 효과적이었다는 아이디어를 착안하여, temperature scaling을 제안한다. 이때 temperature T는 1보다 큰 값으로 해서 1/T를 logit에 곱해 softmax를 취합니다.
위의 식은 K개의 클래스, 즉 K차원의 logit vector의 output에 T의 역수를 곱하고, 이를 Negative Log Likelihood를 계산합니다.
그리고 energy based model의 pdf는 아래와 같습니다. (T가 1인 상황에서)
그리고 이를 우리가 사용하고자 하는 pdf로 변환하면 아래와 같이 표현할 수 있습니다.
이때 분모의 경우는 전체 데이터 x에 대한 energy를 더하는 항(partition function)인데, 이를 우리가 구할 수 없습니다. 따라서 로그 연산을 취해 분모의 영향을 지워버립니다.
위 식이 중요한 이유는 softmax와는 달리, x의 확률적 분포와 일치하게 energy 함수를 사용할 수 있다는 것에 있습니다. 또한, 두번째 term이 모든 x에 대해 상수값이므로 ID에 대해 낮은 에너지를 부여할 수 있고, OOD에 대해 높은 에너지를 부여할 수 있습니다.
그리고 분류기를 하나 두어서, 에너지가 특정 threshold를 넘으면 OOD로 그렇지 않으면 ID로 판별할 수 있도록 구성합니다.
2. Energy Score vs. Softmax Score
이전에 OOD를 탐지할 때는 softmax를 취해 가장 높은 값을 score로 두고, 이 값을 threshold와 비교하여 OOD를 판별했습니다.
하지만 저자들은 이 방법에 문제가 있다고 합니다.
아래에 우리가 알고 있는 softmax값 중 가장 큰 값을 뽑아내는 softmax confidence score로부터 enegy score를 유도해보도록 하겠습니다. (이때 energy score의 T는 1이라고 가정합니다.)
앞선 공식에서,
를 이용해 softmax confidence를 다시 한번 써보면 아래와 같이 쓸 수 있습니다.
우리의 OOD score는 ID에 대해 낮고, OOD에 대해 높길 원하는데, 위의 식에서 뒤의 두 항은 ID에 대해 높은 값을 부여할 수 있습니다.
때문에 Energy score에 비해 bias가 생길 수밖에 없다.
3. Energy-bounded Learning for OOD Detection
저자들은 fine-tuning 시에 OOD를 탐지할 수 있도록 기존 cross entropy loss 함수에 새로운 term을 제시합니다.
fine-tuning할 때는 ID 데이터와 보조 OOD data가 쌍으로 동시에 들어가는 상황입니다.
이 규제항은 아래와 같습니다.
이 항은 hinge loss로, ID data가 m_in이라는 ID data에 대한 energy threshold(m_in)보다 크면 loss를 부여하고, 반대로 OOD data가 OOD data에 대한 energy threshold(m_out)보다 작으면 loss를 부여하는 방식입니다.
4. Experiment
실험 결과를 보기 전, FPR95라는 metric을 소개하고자 합니다.
이 논문에서 FPR95는 ID 샘플에 대해 true positive 비율이 95%일 때, OOD 샘플의 false positive 비율을 뜻합니다.
저자들은 CIFAR10으로 사전학습한 WideResNet에 대해 SVHN 데이터셋으로 inference할 때의 OOD Metric인 FPR95와 softmax score(a)와 energy score(b), 그리고 사전학습한 WideResNet에 대해 CIFAR10과 SVHN 쌍으로 inference 할 때의 FPR95와 softmax score(c)와 energy score(d)를 보여주는 figure를 제시했습니다.
확실히 softmax score의 overconfidence를 줄여주는 것을 (a)와 (b)를 통해 알 수 있습니다.
그리고 다양한 데이터셋으로 실험하였을 때의 FPR95 performance를 제시하였습니다.
fine-tuning한 것과 inference 결과를 같이 report 해둔 figure도 함께 첨부합니다.
이렇게 Energy-based Out-of-distribution Detection 논문에 대한 리뷰를 마쳐보도록 하겠습니다.
오늘소개해드릴논문은 “LAST LAYER RE-TRAINING IS SUFFICIENT FOR ROBUSTNESS TO SPURIOUS CORRELATIONS“로 ICLR2023에 Spotlight로선정되었습니다.
주요 내용은 아래와 같습니다.
본논문은 딥러닝 모델이 학습하기 쉬운 spurious correlation을기반으로class label 예측을하더라도label과관련된core feature가feature extractor에서추출되는것을 다양한 비율의 spurious correlation이 존재하는 데이터셋들에서 실험을 통해 보였습니다. 또한, 저자들은feature extractor가core feature를추출하더라도 모델이 class를잘못예측하는이유는classifier가spurious feature에맞춰져 있다는 것을 발견하였습니다.이러한 발견을 통해classifier를biasing되어있지않은데이터셋(group balanced dataset)을통해re-weighting해주는 방식인 Deep Feature Re-weighting (DFR) 방식을 제안하고, 이를 통해 가벼운 학습만으로 Group robustness task에서 SOTA를 달성하였으며, ImageNet-trained model에서의 background와 texture 특징에 대한 의존도를 DFR을활용하여연구하였습니다.