ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CleanLab
    NAVER AI TECH 2023. 6. 4. 16:34

    개요

    DL(Deep Learning)을 배운 사람이라면 대부분 MNIST 데이터셋을 사용해 학습을 진행해본 경험이 있을 것이다. 그리고 나를 포함한 대부분의 사람들은 굳게 믿고 있었을 것이다. 'MNIST 데이터셋의 Label은 진실되다.'라고. 하지만 현실은 그렇지 않다. Label을 결정하는 것은 누구인가? 사람이다. 사람은 완벽한가? 그렇지 않다. 그렇다면 Label에 거짓이 섞여있다는 것은 자연스럽게 추론 가능한 사실이다. https://labelerrors.com/에서는 오분류된 다양한 데이터를 확인할 수 있다. 아래 데이터는 9로 분류되었어야 하지만 8로 분류된 MNIST 데이터를 보여준다.

     

     

    그렇다면 좀 더 완벽한 데이터를 얻기 위해서는 어떻게 해야 할까? 일차적으로는 Annotation(Labeling) 과정에 완벽을 기울일 필요가 있을 것이다. Annotator에 대한 체계적인 훈련을 제공하고 2차 검수 과정을 추가한다면 더 완벽한 데이터를 얻을 수 있다. 그러나 체계적인 훈련도 2차 검수 과정도 공짜가 아닐뿐더러 사람이 하는 일이므로 여전히 오류가 남아 있을 것이다. 이런 문제를 해결하기 위해서 데이터 중심 관점에서 오분류된 데이터를 해결하고자 하는 노력이 있었고 CleanLab이라는 결과물이 탄생하였다.

     

    Confident Learning

    Cleanlab은 어떤 논리적 구조에 따라서 작동하는 것일까? Cleanlab의 CEO & Co-Founder인 Curtis G. Northcutt가 발표한 영상인 Cleanlab:AI to Find and Fix Errors in ML Datasets를 참고해 Cleanlab에 대해서 이해해보자.

     

     

    우리는 이 무지막지한 수식을 이해해야 한다. Key idea: First we find thresholds as a proxy for the machine's self-confidence on average for each task/class j. 손쉽게 이해할 수 있도록 예시를 하나 들어보겠다. 우리가 확인하려는 데이터가 세 가지 class(개, 고양이, 오리)를 가지고 있다고 해보자. 그리고 우리가 확인하려는 데이터의 Label을 판별해주는 모델이 있다고 해보자. 모델의 추론 과정을 통해 데이터가 특정 분포에 속할 확률을 구할 수 있다. 예를 들어 n번 데이터가 개, 고양이, 오리에 속할 확률을 각각 구할 수 있다. 이때, Label이 개인 데이터가 개에 속할 확률의 평균을 구하고 Label이 고양이인 데이터가 고양이에 속할 확률의 평균을 구하고 Label이 오리인 데이터가 오리에 속할 확률의 평균을 구한다. 그리고 구해진 확률 값을 thresholds로 사용한다. 이해하기 쉽도록 아래 데이터셋을 가상으로 제작하였다.

     

    Data Number Label Prob(label=dog) Prob(label=cat) Prob(label=duck)
    1 dog 0.5 0.2 0.3
    2 dog 0.4 0.4 0.2
    3 dog 0.6 0.3 0.1
    4 cat 0.3 0.5 0.2
    5 cat 0.2 0.4 0.4
    6 cat 0.1 0.6 0.3
    7 duck 0.2 0.3 0.5
    8 duck 0.4 0.2 0.4
    9 duck 0.4 0.1 0.6

     

    Label이 dog인 데이터에 대해서만 생각해보자. Prob(label=dog)의 평균은 0.5이다. 그렇다면 Label이 dog인 데이터의 threshold는 0.5가 된다. 

     

     

    이제 이 threshold 이상의 확률을 가진 데이터는 참 Label을 가진 데이터로 판별하고 이 threshold 미만의 확률을 가진 데이터는 거짓 Label을 가진 데이터로 판별한다. 1번 데이터의 Prob(label=dog) = 0.5이다. 0.5(threshold) 이상이므로 해당 데이터는 참으로 판단한다. 2번 데이터의 Prob(label=dog) = 0.4이다. 0.5(threshold) 미만이므로 해당 데이터는 거짓으로 판단한다. 3번 데이터의 Prob(label=dog) = 0.6이다. 0.5(threshold) 이상이므로 해당 데이터는 참으로 판단한다. 이해하고보니 정말 간단하다.

     

    Robustness to miscalibration

    여기까지 글을 읽은 사람은 한 가지 고민에 빠질 수 있다. 'Probability를 계산해주는 모델의 성능이 좋지 않으면 어떻게 하죠?' 다행히도 confident learning은 error에 대해서 robust한 성질을 가지고 있다. 

     

     

    예를 들어 prob(label=dog)이 높게 나오는 모델이 있다고 하자. prob(label=dog)이 높게 나오므로 prob(label=dog)의 평균값도 자연스럽게 높아진다. threshold 값이 높아짐에 따라서 높은 prob(label=dog)에 대해서 robust(강력)한 성질을 갖게 된다. prob(label=dog)이 낮게 나오는 모델도 동일한 논리적 과정에 따라 error에 robust(강력)한 성질을 갖는다.

     

    More Information

    더 많은 정보는 cleanlab 공식 사이트에서 확인할 수 있다. 자동으로 오분류된 데이터를 찾아줄 뿐 아니라 교정까지 해주는 기능도 있는 듯하다. cleanlab 1.0에 이어 2.0도 출시되었으니 더 많은 기능을 발견할 수 있을지도 모른다. 그러나 사견을 덧붙이자면 데이터 중심 접근법을 완전히 신뢰해서는 안 된다고 본다. cleanlab이 잘못 분류 되었다고 판단한 데이터가 실제로는 제대로 분류되었을 가능성도 여전히 있기 때문이다. 데이터 검수는 시간을 들일 수밖에 없는 작업이고 cleanlab은 데이터 검수를 도와주는 하나의 도구로서 이용하면 가장 좋을 것 같다.

     

     

    'NAVER AI TECH' 카테고리의 다른 글

    Attention Is All You Need(2)  (0) 2023.06.09
    NextRise 2023, Seoul 회고록  (0) 2023.06.04
    모델 성능 향상을 위한 데이터 처리 방법  (0) 2023.05.25
    Data-Centric AI  (0) 2023.05.23
    9주차 Embedding 평가 방법  (0) 2023.05.03

    댓글

Designed by Tistory.