최근 다크데이터 3차년도 계획 발표 정례회의를 마무리하며, 2차년도 결과물에 대한 논문을 작성하자는 결론이 나왔습니다. 이에 따라, 이번 한 달 동안 황유진 연구원과 저는 2차년도 성과 마무리를 위해 집중할 것 같습니다. 본격적으로 서베이에 들어가기 전에, 저희 논문의 방향성과 비슷한 연구들을 정리하는 리뷰를 작성해보고자 합니다.
Background
#다크데이터의 정의
우선 “다크데이터” 라는 과제에 대한 설명이 필요할 것 같은데요. 다크데이터 라는 말은 물리학 용어 “암흑물질” 에서 비롯된 것이라고 합니다. 암흑 물질은 우주 전체에 퍼져 있는 것으로 추측은 되지만 볼 수는 없다고 하여 붙여진 이름입니다. 즉, 존재는 하는 건 아는데 우리의 세계에서는 이 암흑 물질을 다루는 방법이나 사용하는 것 그 어떤 것도 확인되지 않고 있죠. 그런데 “데이터”에도 이러한 비슷한 특성이 있다고 합니다. 실제로 다양한 기업이나 기관에서는 서비스 제공을 위해 다양한 데이터를 수집 및 사용하고 있다는 것은 여러분도 알고 계실 겁니다. 예를 들어, SNS 에서 사용자가 어떤 게시물을 선호하는지, 특정 게시물에 머무는 시간 등 우리가 생각하는 것보다 훨씬 많은 데이터를 수집하고 있습니다. 그런데 문제는 수집하여 저장하고 있는 데이터 중 극히 일부(20%)만을 서비스에 사용한다는 것이죠.
사실 이런 데이터를 사용하기 위해서는 데이터를 구조화하거나 정제 과정이 필요합니다. 예를 들어, 연구를 하다 종종 ‘마땅한 데이터셋이 없다’ 라는 이야기를 하는데, 데이터셋의 부재 역시 사람이 직접 하나하나 수집하고 라벨링 해야하는 과정이 필요합니다. 즉, 데이터가 쌓이기만 하고 활용하지 않는 이유는 데이터 구조화 및 정제 과정이 그만큼 많은 비용과 시간이 필요하기 때문이라고 할 수 있습니다. 그래서 우리 과제에서는 이렇게 쌓이기만 하는 데이터를 ‘다크데이터’라고 정의한 뒤, 이 다크데이터 활용 방안에 대한 연구를 진행중이라고 큰 틀로 이해해주시면 좋을 것 같습니다.
#다크데이터 과제에서 우리 연구실의 역할
과제에서 다크데이터는 크게 3가지로 분류하여 정의하고 있습니다. (1) 수집/정제가 어려운 데이터 (2) 활용이 안되는(가치를 모르는) 데이터 (3) 미인지 데이터. RCV 연구실은 (1) 데이터를 타깃으로, *가치있는 데이터를 판단하는 모델을 만드는 연구를 진행하고 있습니다. 이때, *가치란 모델의 성능을 높이는 것으로 정의하였습니다.
한 기업에서 얼굴 이미지로 감정을 인식하는 서비스를 제공하고 있다고 가정해봅시다. 펜데믹 전에는 얼굴에 마스크가 없는 이미지가 입력으로 들어왔던 반면, 펜데믹 이후에는 대부분의 얼굴에 마스크가 포함됩니다. 이럴 경우, 서비스의 성능은 당연히 저하되겠죠. 이를 예방하기 위해 기존에는 사람들이 모델의 성능을 올릴 수 있는 데이터를 직접 선별하고, 가공을 한 뒤, 특정 주기에 따라 모델을 재학습하는 과정을 거쳐 성능 저하를 방지하곤 하였습니다. 그러나, 우리 연구진은 성능을 올릴 수 있는 가치 있는 데이터를 선별하는 모델을 개발하는 것을 목표로 하고 있습니다. 즉, 우리의 모델은 수많은 얼굴 이미지 중에서 감정인식 성능 저하를 막을 수 있는 가치 있는 데이터를 판단합니다. 따라서 가공하는 사람들은 모델이 선별한 데이터만을 보고 데이터를 가공합니다. 모든 데이터를 가공하는 사람들이 직접 살펴보고 가공했던 기존과 다르게, 비용 측면에서 엄청난 절감을 기대할 수 있습니다.
이제 해당 연구가 무엇인지, 그리고 왜 필요한지 예시를 통해 어느정도 이해가 되셨을 것이라 생각이 듭니다. 그럼 이제 조금 더 연구적으로(?) 정의를 하자면 다음과 같습니다: “동일한 사이즈의 데이터셋이라 할 지라도, 더 높은 성능을 산출할 수 있는 데이터를 선별하는 모델을 개발하자”. 즉, 가치란 성능을 올리는 데이터라고 정의하였기 때문에, 우리 모델이 선별한 데이터 K개로 학습한 모델이 랜덤하게 고른 K개의 데이터로 학습한 모델보다 성능이 높아야 한다는 것이죠. 결국 이건 Active Learning 이라는 연구의 목적으로 다다르게 됩니다. 이제 제가 Active Learning 이라는 분야의 논문을 지속적으로 리뷰하고 있는 이유에 대해 충분히 이해하실 것이라 생각이 드네요! 정리하자면, 저희 연구진은 데이터의 가치(모델의 성능을 높일 수 있는) 를 판단하는 모델을 연구하고 있습니다.
#논문의 방향성 및 목적
그런데 기존 Active Learning 과 다크데이터 과제에서의 목표에는 약간 차이가 있습니다. Active Learning 은 사람이 직접 라벨링을 한다고 가정합니다. (이 때, 라벨링 값은 무조건 틀리지 않는다고 전제합니다.) 즉, 데이터를 가공하는 것은 오로지 사람입니다. 그러나 저희 과제에서는 기계 역시 데이터를 가공하는 것을 목표로 삼고 있습니다. 기계와 사람이 둘 다 라벨링을 진행하게 되는 것이죠! 그 이유는 다크데이터라는 관점으로 다시 돌아가면 됩니다. 70-90% 육박하는 무수히 많은 다크데이터를 비용을 절감하여 사용하기 위해서는 사람의 개입을 최소화해야하죠. 하지만, 기존 데이터가 가지는 통계에 기반하여 출력을 생성하는 것이 딥러닝 모델이기에 사람의 개입을 완전히 배제할 수는 없습니다. 아직까지는 완전히 새롭게 등장하는 데이터에 대해 기계는 라벨링을 할 수 없죠. 이러한 부분에서 사람은 기계가 어려워하는 데이터를 가공하게 됩니다. 반면 기계가 높은 확신을 가질 정도로 쉬운 데이터에 대해서는, 굳이 사람이 아닌 기계가 라벨링을 하자는 것이 기존 Active Learning 과 우리 과제의 목표와의 차별점입니다.
여기서 기계가 라벨링을 한다는 것은 Semi-supervised learning 혹은 Self-superivsed learning 에 등장하는 Pseudo-labeling 기법을 활용하자는 것인데요. 모델의 예측값이 신뢰도가 특정 임계값 이상일 경우, 그 라벨을 unlabel 샘플에 대한 라벨로 가공한다는 것입니다. 즉, Self/Semi- 와 Active Learning 을 결합한 연구를 저희는 Hybrid Learning 이라고 정의하였습니다. 그렇다면 기존에는 이 두 가지 연구를 결합한 방법론이 있는지를 찾아봐야 하는데요. 지금부터 본격적으로 이 Hybrid Learning 을 하고 있는 연구들에 대해 리뷰 및 정리를 진행해보겠습니다.
Hybrid Learning (Active + Self-supervised learning)
1. [ICCV Workshop 2021] Reducing Label Effort: Self-Supervised meets Active Learning
우선, 가장 간단하면서 효과적인 방법이라고 할 수 있는 Hybrid Learning 기법입니다: Self-supervised 방식으로 Unlabeled data를 사용하여 모델 학습한 뒤, Labeled로 Fine-tuning하는 과정이죠. 쉽게 말해 Self-supervised 의 Downstream으로써 Active Learning의 반복 학습을 적용한 가장 심플한 방법입니다.
상단 그림이 저자가 제안하는 기법의 프레임워크로 조금 더 디테일하게 설명하자면 다음과 같습니다: 먼저, Unlabeled dataset에 대하여 Self-supervised learning 으로 Encoder 를 학습합니다. (이 때 인코더는 SimSiam 구조의 형태를 가집니다. 기존 연구되던 MoCo, SimCLR, BYOL 등 다양한 Self-supervised learning 기법은 Batch size가 말도안되게 크다거나 GPU가 매우 많이 필요하며 모델도 엄청 무겁습니다. 이에 반해 Sim-Siam은 상대적으로 가벼워서 이 네트워크를 사용한 것이 아닌가 싶습니다.) 그렇게 학습한 모델의 앞부분을 freeze하고, labeled dataset로 FC Layer 를 학습한 뒤, Unlabeled에서 가치 있는 데이터를 선별합니다. 이렇게 2-stage로 구성된 Hybrid learning 연구가 제가 알기론 처음으로 제안된 것으로 알고 있습니다
아무래도 이렇게 self-supervised learning 과 active learning 을 결합한 방법론이 처음이다 보니, 저자는 Acquisition function 까지 제공하지는 않았습니다. 실험 결과로는 Entropy, Kcenter Greedy, SVM-Min Margin, VAAL 등 데이터의 가치를 판단하는 기준을 적용한 self-evaluation 을 제공하였습니다 (사실 대부분의 AL 연구들은 이 Acquisition function을 새롭게 제안한다는 점을 고려해야합니다.)
#Experiment
CIFAR-10, CIFAR-100, Tiny-ImageNet에 대해 실험을 진행했습니다. 사실… 이 연구는 AL의 필요성을 부정한 논문이라고 봐도 무방한데요.. 결론부터 말씀드리면, AL이 효과적이기 위해서는 10% 의 데이터셋은 있어야 한다고 합니다. 아래 1%, 2%, 10%의 Labeled dataset로 모델 학습을 시작한 결과에 대한 테이블입니다. 실선은 SSL + AL 점선은 AL 단독을 나타내는데요. SSL + Random sampling이 Active Leanring 을 단독으로 사용한 것보다 성능이 좋은데다, 사이클이 일정횟수 반복된 후 10%보다는 많아야 AL이 Random Sampling 을 이긴다는 결과를 다양한 데이터셋에서 확인할 수 있었다고 합니다. 즉, 충분히 많은 초기 데이터셋이 보장되지 않다면 SSL이 AL보다 효과적이라는 것이죠.
2. [BMCV 2021] PAL : Pretext-based Active Learning
2번째 논문은 저희의 3차년도 목표와 그나마 조금 가까운 논문이 아닐까 생각이 드는 방법론입니다. 이 논문 역시 앞선 방법론과 마찬가지로 Self + Active Learning 입니다. 해당 논문에서는 Active Learning 의 전제인 사람의 라벨링이 항상 정답이라 라는 점에 의문을 가지며 시작하였습니다. 따라서 주기 별로 추가되는 Labeled dataset의 의존도를 줄여 데이터의 가치를 판단하는 모델을 구축하고자 하였습니다. 의존도를 줄이기 위해 데이터의 가치를 판단하는 Scoring Network는 Multi-task 네트워크로 설계하였습니다.
Scoring Network는 멀티 태스크로 설계되었다고 하였는데요. 따라서 두 개의 헤드로 구성됩니다. 하나는 Downstream task, 나머지 하나는 Self-supervised learning task 입니다. 이 때, Self-supervised learning 으로는 0/90/180/270 회전 각도를 맞추는 태스크를 사용하였습니다. 데이터의 가치를 판단할 때, Labeled set을 기반으로 판단하되, Labeled set의 라벨이 틀릴수도 있기 때문에 Self-supervised 의 출력값도 함께 고려하기 위해 설계하였습니다. 뿐만 아니라, Multi-task로 학습하면서 극소량의 데이터에 대해 모델이 오버피팅되는 경우를 예방할 수 있었다고 합니다.
Scoring Network가 각 클래스에 대한 신뢰도를 기반으로 가치가 점수화되기 때문에 저자는 Acquisition function (Sampling method)로서 Diversity 를 고려할 수 있도록 설계하였습니다.
#Experiment
기존 AL 연구에서 흔히 사용하는 데이터셋인 CIFAR-10, SVHN 말고도 Caltech-101, Cityscapes에 대한 성능까지 리포팅하였습니다.
그리고 저자가 집중한 문제는 사람의 라벨링이 잘못될 수도 있다는 점입니다. 그러한 점에서 저자는 Mis-labeling 에 대한 성능까지 리포팅하였으며, 그 결과가 아래 테이블과 같습니다. 20% 라벨에 에러를 넣은 실험 결과인데, 그 결과 아래와 같이 기 방법론 대비 더 좋은 성능을 달성할 수 있었다고 합니다.
3. [ECCV 2022] PT4AL: Using Self-Supervised Pretext Tasks for Active Learning
3번째 논문은 ECCV 2022에 게재된 방법론입니다. 상당히 심플한 아이디어인데, 해결하고자 하는 cold-start 문제에 대한 확실한 해결책을 제시한 것 같다는 방법론입니다. 이 방법론 역시 Self+Active Learning 입니다.
우선 Pretext task로 여기서도 Rotation 예측을 사용하였습니다. 우선 Pretext task 로 Unlabeled data를 학습한 뒤, 모든 Unlabeled dataset을 Loss 크기에 대하여 정렬합니다. 그리고 그 데이터셋을 일정 그룹으로 분리합니다. 이렇게 1번째 step이 종료되었습니다. 그 다음, Active Learning 을 진행하는데요. 이 때, AL 의 Unlabeled Pool은 앞서 나눈 그룹별로 제공하게 됩니다. 즉, AL이 총 10번의 주기로 학습이 진행된다고 가정해봅시다. 그럼 1단계에서 Unlabeled 데이터는 총 10개의 그룹으로 나뉩니다. 그럼 첫번째 주기에서는 1번째 그룹 데이터셋을 사용한 뒤 가치있는 데이터를 선별하며, 두번째 AL 주기에서는 2번째 그룹을 … 그렇게 10번재까지 진행되게 됩니다.
Sampling Method 로는 Least Confidence를 사용하였으며 새로운 기법을 제안하지는 않았습니다. 다만 학습할 데이터셋을 Pretext task Loss 크기에 대한 그룹으로 나눴다는 점이 엄청난 Contribution인데요. 대부분의 AL에서는 극소량의 데이터셋으로 시작하는 바람에 아무리 데이터가 추가되어도 성능이 충분히 오르지 않는 Cold start 라는 문제점을 가지고 있습니다. 그러나, 이 논문에서는 Pretext task를 사용하여 유의미한 초기 라벨 셋을 고르는 법을 제안했고, 그 결과 역시 기 방법론에 비해 훨신 높은 성능을 보였다는 점에서 높은 기여를 가지지 않나 싶습니다.
#Experiment
여기서는 CIFAR-10, Caltech-101, ImageNet-67에 대해 성능을 평가했습니다. 그런데 ImageNet-67은 저자가 직접 데이터를 축소한 버전 같은데요, 유의미한 클래스 67개를 선별한 것이라고 하는데… 문제는 이 데이터셋을 제공하진 않습니다.. 이 부분에서 약간 아쉬움이 컸다고 해야할까요 … 아무튼 해당 방법론의 가장 처음 성능에서 다른 방법론보다 훨씬 위에서 출발한다는 점이 인상적입니다.
(사실 여기에는 리포팅하지 않았지만, 일부 논문이 Segmentation 까지 확장실험을 진행한 것으로 봐서 우리도 이 부분을 고려해야하지 않을까 라는 생각도 드네요)
확실히 이렇게 과제에 대한 전반적인 내용부터 기존 연구들을 정리하니, 우리 연구가 가지는 차별점에 대해서는 어느정도 윤곽이 잡히는 듯 합니다. 제가 생각했을 때, 기존에는 기계의 라벨을 그대로 라벨로 사용하는 경우는 없었는데, 없었다면 왜 없었고 이를 강조하려면 어떤 실험을 진행해야 할지를 고민해야하지 않을까 막연하게 생각이 되네요.
여력이 된다면, 제가 기존에 읽어온 Active Learning 의 수많은 랜덤 요인들까지 고려한 그런 종합적인 Hybrid Learning 논문을 작성하고 싶긴 합니다. 그러나 보통 방법론을 제안하는 연구들은 이 랜덤 요인들까지 고려하진 않습니다. 즉, AL에 존재하는 랜덤이라는 요인들에 대한 분석 논문이 하나의 스트림이라고 할 수 있죠. 이 두 가지를 모두 고려하기에는 실험의 양이 너무나도 방대해지게 됩니다. 어느정도 합의점을 찾은 뒤, 논문을 작성해야하지 않을까 싶습니다. 이상 리뷰를 마치겠습니다.
작성해주신 리뷰를 통해 다크데이터의 연구 방향과 흐름을 확인할 수 있었습니다.
몇가지 질문을 드리자면, 두번째 서베이 방법론이 3차년도 목표와 그나마 비슷하다고 하셨는데, 어떤 점에서 비슷한 것인지 정리해주실 수 있나요??
또한, 두번째 서베이 방법론에서 ‘Diversity 를 고려할 수 있도록 설계’하였다고 하셨는데, Diversity를 어떻게 고려하여 설계하였는지 설명해주실 수있나요??
좋은 댓글 감사합니다. 답변을 드리자면 다음과 같습니다.
1. 현재 2차년도를 마무리하며 Hybrid Learning 을 시도하였는데, 저희 역시 [1] 논문처럼 2-stage로 구성된 독립적인 메커니즘을 설계하였습니다. 그러나 이에 반해 3차년도는 Self-training이 Active Learning 학습 중 동시에 진행되는 그런 유기적인 조합의 학습법을 제안하고자 합니다. [2] 논문의 경우 Active Learning 중 Self-supervised와 Classification을 동시에 수행하여 데이터의 가치를 판단하는 점에서 저희의 목표와 비슷하다고 생각하는 것이죠
2. Diversity를 고려한다는 것은 데이터 전체 분포를 커버할 수 있는 대표적인 샘플을 선별하는 모델을 구축한다는 것입니다. 이를 위해 [3] 논문과 같이 Loss 크기에 따라 K개의 그룹으로 나눈 뒤, 첫번째 그룹에 대하여 모델을 다시 업데이트합니다. 기존에 가지고 있는 Labeled 에 대해서만 모델 학습을 하는 것이 아닌, Unlabeled 에 대해서도 추가 업데이트 함으로써 Labeled 에 편향적인 데이터 선별이 가능하다고 주장하는 듯 합니다
좋은 리뷰 감사합니다.
PT4AL가 cold-start 문제를 해결한 방법에 대해 궁금합니다. loss 를 통해 측정된 uncertainty를 분포를 다양하게 하여 학습한것으로 이해되는데, uncertainty 정도에 대해 학습 순서가 큰 영향을 미치는지 궁금하네요
감사합니다.
PT4AL는 Cold-start 를 해결한 방식은 ‘기존 AL에서 랜덤하게 초기 데이터셋을 골라 학습하는 것이 아닌, SSL 을 사용하여 초기 데이터셋을 결정한다’ 가 핵심포인트 입니다.
아시다시피 PT4AL은 Unlabeled set에 대해 Self-supervised learning 기반으로 1단계 학습을 진행합니다. 그럼 모든 이미지에 대한 각각의 SSL-Loss가 추출될 수 있습니다. 그렇게 Loss 크기에 따라 Unlabeled set을 정렬한 뒤, Loss가 큰 셋을 초기 데이터셋으로 결정한 것이죠. Learning Loss의 아이디어처럼 Loss가 크다는 것은 Uncertainty가 높다는 것이기에 이런 결정을 했다고 할 수 있습니다. 따라서 저자는 Loss가 큰 어려운 데이터셋을 초기 데이터셋으로 학습하여 초기 성능이 저조한 부분을 개선하였습니다.
추가로 해당 논문의 저자는 supple.에 Loss에 대해 오름차순/내림차순을 비교한 실험을 진행하였고, 그 둘 사이의 성능 차이가 존재함을 확인하기도 했습니3다
안녕하세요 주영님~ 다크데이터에 관심이 생겨서 이 글을 읽게 되었습니다.
먼저 AL이 무엇인지 잘 몰라서 정리를 해보았는데
‘AL학습은 제한된 수의 레이블 된 데이터로 학습을 하고 모델이 불확실하게 예측하거나 혼란스러운 데이터를 식별하고 해당 데이터를 학습 데이터로 선택한다. 이후에 선택된 불확실한 데이터를 레이블하고 이를 이전 레이블된 데이터 세트에 추가하고 다시 학습한다. 위 과정을 반복하여 모델의 성능을 향상 시킨다.’ 이렇게 정리하면 될까요?
‘1. [ICCV Workshop 2021] Reducing Label Effort: Self-Supervised meets Active Learning’ 의 논문에서 Self-supervised learning 으로 Encoder를 학습시킨다고 하셨는데
Encoder가 무슨 역할을 하는지 잘 모르겠습니다. 이미지 특성을 학습하여 모델이 불확실하게 예측한 데이터를 선별해주는 역할을 하는건가요?
안녕하세요 정의철 연구원님
Active Learning 의 학습 사이클에 대해 질문을 주셨는데, 정확하게 잘 이해하셨습니다.
“효율적인 레이블링을 하자” 라는 관점에서 접근한다면, 같은 크기의 데이터셋을 사용하더라도 더 좋은 성능을 낼 수 있는 데이터셋에 대해 레이블링을 할 수 있습니다.
두번째로, 여기서 말하는 Encoder는 지금 공부하고 계신 ResNet에 비유해보자면, 마지막 FC Layer를 제외한 앞부분의 백본이라고 이해해주시면 좋을 것 같습니다. 즉, feature를 표현하는 네트워크라고 할 수 있습니다.