ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 논문 리뷰 : MC dropout을 통한 Pseudo labeling의 개선
    Paper 2022. 12. 27. 18:21

    Rizve, M. N., Duarte, K., Rawat, Y. S., & Shah, M. (2021). In defense of pseudo-labeling: An uncertainty-aware pseudo-label selection framework for semi-supervised learning. arXiv preprint arXiv:2101.06329.


     

    1. Uncertainty를 왜 구해야 하는가?

    2. MC-Dropout를 통한 Uncertainty의 정량화

    3. 정량화된 Uncertainty를 통한 Pseudo Labeling의 개선

     


     

    1. Uncertainty를 왜 구해야 하는가?

     

    이야기에 앞서, 강아지, 고양이, 햄스터를 분류하는 어떤 모델이 있다고 하자. 이 모델이 잘 훈련됐다면, 당연히 강아지 사진을 넣으면 class를 1로 분류하도록 결과가 나올 것 이고, 마찬가지로 고양이 사진을 넣으면 2로, 햄스터 사진을 넣으면 3으로 분류하도록 결과가 나올 것 이다. 그림의 예시에선 가운데의 고양이 사진을 넣었을 때 [0.2, 0.7, 0.1]의 결과를 얻을 수 있었다.

    그렇다면 과연 0.7이란, 이 사진이 고양이일 확률이 70%라는 것을 의미할까? 모델의 예측이 얼마나 현실과 가깝게 잘 이루어진다는 가정 하에서만 이 0.7이라는 결과 값을 신뢰할 수 있지 않을까?

     

    뜬금없이 이 모델에 코끼리 사진을 집어넣어보자. 사람의 눈으로 볼 때에는 이 사진은 당연히 강아지도 아니고, 고양이도 아니고, 햄스터도 아니다. "코끼리"라는 동물의 존재를 몰라도, 그러니까 여태까지 보고 학습한게 딱 강아지, 고양이, 햄스터 이 세 동물이어도 코끼리를 보고 셋 중 하나일 거라고 예측하지는 않는다. 대부분은, "처음 보는데?" 라고 할 것이다.

    그런데 이 모델에서는 어쨌든 결과 값을 낼 것이다. 그림과 같이 이 사진에 대해 결과를 [0.4, 0.3, 0.3]으로 냈다고 하면, 이 모델이 0.4의 확률로 강아지일 것이라는 이야기일까?

     

    Semi supervised Learning 방법론 중 Pseudo Labeling은 소수의 Labeled data로 다수의 Unlabeled data에 Label을 부여해줌으로써 모델 학습에 활용하는 방법론이다. 앞선 코끼리 이야기는, 이 Unlabeled data의 활용과 연관이 있을 것이다.

    더 나아가, 강아지 사진을 넣어도, 모델에서 학습한 소수의 Labeled data엔 말티즈, 토이푸들 등의 소형견만 있었는데 Unlabeled data엔 셰퍼드, 리트리버 같은 대형견도 섞여있다고 생각해보자. 혹은 강아지를 아주 닮은 고양이의 사진도 들어있을 수도 있을 것이다. 이러한 넓은 범위에서 생각해봤을 때, 모델이 적은 Labeled data로 배운 강아지, 고양이, 햄스터의 특성은 다수의 Unlabeled data를 활용하기에 충분하지 않을 우려가 있다.

    그래서, Pseudo Labeling 방법론에서는 이러한 한계점을 보완하기 위해, 부여한 Label의 정확성을 어느 정도 보존해주기 위해서 Selection 과정을 거친다. 이 과정에서 당연히 Unlabeled data에 부여한 Label을 기존 방법대로 실제와 비교하는 Supervised Learning의 방법으로는 확인할 수 없기 때문에 Soft Label을 Confidence로 해석하여 그것이 높은 데이터가 곧 신뢰할 만한 Pseudo Label이라고 하는 것이 기존의 방법이었다.

    다만, 이러한 방법으로 예측의 신뢰성을 파악하기 위해서는, 결정적으로 앞서 언급한 모델의 Soft Label이 현실과 잘 맞는지가 중요할 것이다.

     


     

    2. MC-Dropout를 통한 Uncertainty의 정량화

     

    예측의 신뢰성을 기존의 방법으로 측정하는 데에 대한 한계는 Model calibration의 문제이다. 이 문제에 대해서는 후보정을 하거나, 학습할 때 Temperature를 이용하여 Label을 스무딩 시키는 방법 등이 있지만, 그 부분은 넘어가도록 하겠다. 

    아무튼, 이러한 문제를 해결하기 위해서, 더 넓은 분포를 가질 가능성이 있는 다수의 Unlabeled data를 활용하기 위해서 Uncertainty라는 것을 측정하고자 하는 것이다.

    Gal, Y., & Ghahramani , Z. (2016)

    위 사진은, Mnist 데이터의 "1" 이미지를 점점 회전(x축)시켰을 때, 어떻게 예측하는가(y축)에 대한 Softmax 입/출력을 시각화한 자료이다. 사진을 통해, 1이라는 숫자가 45도 정도로 기울어 졌을 때, Softmax output에서 예측의 분산이 굉장히 크다는 것을 확인할 수 있다. 이러한 분산을 통해, 우리는 실제 라벨 없이도 예측이 얼마나 불확실한가를 판단할 수 있다.

    CNN을 비롯한 신경망 모형에서, 일정한 Input에 대한 예측의 분산을 파악하기 위해서, Dropout을 예측 단계에서도 진행하는 MC Dropout을 활용할 수 있다. Gal, Y., & Ghahramani, Z. (2016)에서는, 이러한 MC Dropout을 도입한 NN이 Bayesian NN과 동치라는 것을 증명하였는데, 이를 통해 실제로 구현하기가 힘들었던 Bayesian NN을 간편하게 근사시킬 수 있다는 것이 논문의 핵심이었다.
    아무튼, 이것을 이용하면 모델의 예측이 얼마나 불확실한지를 신경망 모형을 통해서도 파악할 수 있다. 그렇다면 이 것을 라벨링에 활용해 볼 수도 있지 않을까?

    (기존의 머신러닝 방법에서는 샘플 단계에서 Bootstrapping 등의 방법으로 예측의 분산을 측정할 수 있지만, Nixon, J. (2020) 등의 논문과 이곳 저곳에서 들은 것을 종합해보면, 신경망 모형에서는 Bootstrap sample을 사용하는 것이 썩 좋은 방법은 아니라고 한다)

    라벨링에 활용하기에 앞서, 위 사진은 실제로 MC Dropout을 통한 예측의 분산이 해당 예측의 정확성을 어느정도 보장하는가에 대한 실험이다. 확실히, 분산이 작은 25%만큼의 데이터는 라벨링 정확도가 0.95 정도이고, 그렇지 않은 데이터는 0.58정도인 것을 알 수 있다.

    이 정도면, 모델 예측의 불확실성을 측정하는 데에 MC Dropout이 꽤 유용한 방법이라는 것을 보여줬다고 생각한다. 수 회 예측을 하는 것이라서, 당연히 시간은 오래걸리지만, 모델 여러 개를 만드는 것 보다는 훨씬 빠르기도 하다.


     

    3. 정량화된 Uncertainty를 통한 Pseudo Labeling의 개선

     

    MC Dropout을 통해서 정량화한 Uncertainty를 어떻게 Labeling에 활용할 것인지는 위와 같이 나타낼 수 있다. 앞서 언급한 예측의 평균과 분산을 통해, 각각 예측 결과와 불확실성을 알 수 있다고 했다. 이를 통해, 원래 Labeling 과정에서 정확한지를 판단하는 기준이었던 Soft Label을 Confidence로 보고, MC Dropout을 통해 구할 수 있게 된 분산을 Uncertainty라고 보자는 것이다. 

    즉, Uncertainty를 분산으로 정량화하여, Confidence가 높은 것 중 Uncertainty가 낮은 observation에만 라벨링을 진행하겠다는 것이다(사실 Confidence의 하한과 Uncertainty의 상한을 만족하는 두 조건은 and 로 묶인 것이므로, 설명한 것처럼 선후관계가 있진 않지만, 기존 Labeling이 Confidence에 초점을 맞췄기 때문에, Uncertainty의 개념을 새로 도입한다는 느낌으로... ). 

    논문의 식을 빌려 조금 더 자세히 설명해보면, Labeling을 할 것인가에 대한 여부 g를 tau와 kappa로 결정한다는 의미이다. Mean이 충분히 크고(> tau), Variance가 충분히 작다면(<Kappa) g = 1*1 로 1이 되어 Label을 생성해준다.

    논문 식의 두번째 항은 Negative Learning에 따른 식이다. 본 연구에서 최종적으로 사용된 건 아니지만, 해당 항을 통해 너무 낮은 Confidence도 학습에 도움이 될 거라고 본 것 같다(어떠한 라벨일 확률이 매우 낮다는 정보를 제공하므로).

    그림의 예시를 보면, 일단은 Label 1로 분류가 될 것이다. 이때, 해당 observation의 예측의 평균은 0.65이고, 분산은 0.13인데, Tau와 Kappa를 각각 0.6과 0.1로 잡았다면, Confidence는 충분하나 Uncertainty가 너무 높아서 라벨이 부여되지 않을 것이다.

    다시 이전의 그림으로 와서, 이 그림을 내 나름대로 생각해보기로 했다. 이 그림을 크게 세 영역, 초록, 빨강, 노랑으로 나눠보면, 초록색 영역과 노란색 영역은 (실제 라벨이 뭐냐에 상관없이) 예측의 질이 좋다고 볼 수 있고, 빨간색 영역은 예측의 질이 좋다고 보긴 힘들 것이다. 이러한 상황에서, 제안한 방법은 초록색과 노란색 영역에 라벨을 부여할 것으로 생각이 된다.

    다만 이 방법이 효과를 본 이유는, 실제로 우리가 Unlabeled data를 수집할 때 X축 상에서 왼쪽에 위치하는 샘플이 오른쪽에 위치하는 샘플보다 많을 것이기 때문이다(오른쪽 영역의 그림은 일반적으로 digit을 수집할 때 거의 수집되지 않을 것이다.). 즉, 초록색은 높은 확률로 존재하는 신뢰도 높은 데이터, 빨간색은 존재할 가능성이 있는 신뢰도 낮은 데이터, 노란색은 거의 존재하지 않는 데이터라고 볼 수 있지 않을까?

     


     

    댓글

since 2021