데이터 부족을 극복하는 법!
Semi-supervised & Weakly supervised & Unsupervised learning
안녕하세요, KDL팀입니다.
딥러닝 네트워크를 학습할 때, 가장 큰 문제가 되는 데이터에 대해 이야기해 보겠습니다.
과거 딥러닝을 이용하기 전의 머신러닝도 그랬지만, 현재의 머신러닝인 딥러닝 방법의 최대 단점은 데이터가 많이 필요하다는 것입니다. 데이터가 많이 필요한 이유는 흔히 수학에서 말하는 큰 수의 법칙이 여기에서도 적용되기 때문에, 데이터의 수가 많으면 많을수록 일반화에 적합하며, 이로 인해 많은 영역을 커버할 수 있습니다.
예를 들면 딥러닝에서 가장 널리 알려진 classification 데이터인 ImageNet 데이터는 대략 14k 장의 입력 이미지를 가지고 있습니다. 입력 이미지만을 모으는 일이야 그리 어렵지 않지만, 가장 널리 사용되는 supervised learning 방법으로 학습하기 위해서는 모든 이미지에 정답 값이 필요합니다. 그러면 14k의 입력 이미지에 대해 하나하나 모두 라벨링을 해주는 작업은 사람이 직접 해주어야 합니다. 그렇게 하기 위해선 많은 시간과 사람의 노력, 그리고 그에 대한 돈이 많이 듭니다. 그래도 classification 문제와 같은 경우는 덜한데, object detection 데이터는 모든 물체에 대한 bounding box와 그 물체가 무엇인지에 대한 라벨이 필요하고, 더 나아가서 dense prediction과 같은 픽셀 별로 라벨이 필요한 semantic segmentation, instance segmentation과 같은 데이터를 생성하기 위해서는 더 큰 비용이 들게 됩니다. 많은 양에 입력 데이터에 대해 라벨링을 한다고 하더라도, 세상에 존재하는 모든 이미지 데이터에 대해 라벨링을 할 수 없으며, 새로운 데이터는 계속 생성되는 게 현실입니다.
거창하게 말을 했지만, 한정된 데이터만을 사용한다 하더라도, 라벨링에 소비되는 에너지는 무시할 수 없습니다. 이러한 supervised learning 방법의 한계를 극복하기 위해 나온 방법들이 semi-supervised, weakly supervised, unsupervised learning입니다. 오늘은 이 문제들이 어떻게 정의되는지, 그리고 실제 데이터에서는 어떻게 적용되는지를 알아보고, 각 문제에 대해서 적용되는 대표적인 예시를 살펴보도록 하겠습니다.
가장 먼저 살펴볼 문제는 semi-supervised learning 문제 정의와 그 예시입니다. semi-supervised는 입력 데이터에 대해 일부만 정답이 존재하고, 대다수의 데이터에 대해서는 정답이 존재하지 않는 문제를 말합니다. 그림을 보면 더 쉽게 이해할 수 있습니다.
그림 1에서 노란색과 보라색이 해당되는 각 클래스를 의미하고, 각 포인트들은 데이터를 의미합니다. Supervised learning으로 학습되는 데이터의 구성은 왼쪽의 그림처럼 입력 데이터가 있으면 그에 해당되는 라벨이 모두 존재해야 합니다. 하지만 Semi-supervised learning의 데이터는 일부만 라벨이 존재하고, 나머지는 입력 데이터만 존재하는 문제를 말합니다. 그럼 라벨이 존재하는 데이터에 대해서만 학습하면 되지 않느냐라고 물을 수 있는데, 위에서도 말했듯, 많은 데이터를 이용하여 학습을 해야 다양한 입력 영상을 이용할 수 있고, 좀 더 제너럴한 예측을 할 수 있습니다. 하지만, 일부만을 사용하게 되면, 저 일부 데이터에 오버 피팅이 되어, 제너럴 한 성능이 나오지 않아, 결국 학습에 사용되지 않은 데이터로 테스트를 해보면 좋지 않은 성능을 냅니다.
이러한 semi-supervised learning을 사용해야 하는 데이터 상황에서 쓸 수 있는 대표적인 몇 가지 방법을 알아보겠습니다.
1. data augmentation
가장 많이 사용되는 방법으로 다른 문제에도 많이 적용되는 방법입니다. 같은 입력 이미지에 대해 data augmentation은 블러, crop, transferring 등과 같은 약한 augmentation부터, color jitter, gray scale transform과 같은 강한 augmentation을 각각 해주었을 때, 변형된 입력 이미지는 모두 같은 라벨을 가지는 것을 활용하는 방법입니다.
2. pseudo label
라벨 존재하는 데이터에 대해 학습을 하고, 그 학습된 결과를 이용하여 라벨이 존재하지 않은 입력 데이터의 가짜 라벨을 만들어서 학습하는 방식입니다. 이때, 가짜로 만든 라벨은 confidence 값이 높은 입력 데이터는 라벨로 사용하여 점차 라벨이 있는 데이터를 늘리는 방식으로 학습을 진행합니다.
3. consistency regularization
data augmentation을 한 입력들에 대한 것과 feature level에 perturbation을 준 결과가 한 입력 이미지에 한해서는 같은 결과가 나오도록 유도하는 방식을 사용하는 것입니다. 또는 regularization method 들과 같이, 한 클래스에 대한 결과의 확률 값이 비슷하게 유지되도록 학습하는 방법을 의미합니다.
세 개로 나누어서 설명했지만, 일반적으로는 세 방법 모두 섞어서 사용하는 경우가 많으며, 제안된 방법이 하나의 방법만을 사용했다고 말하기는 어렵습니다. 즉, 세 가지의 방법을 적절하게 섞어 학습을 효율적으로 하는 방법들이 최근에 많이 제안되었습니다.
semi-supervised learning 방법은 semantic segmentation과 같은 label 데이터를 생성하기 어려운 문제에 대해 많이 적용이 됩니다. 그림만 봐도 대충 어떻게 하는지 알 수 있듯이, 라벨이 있는 데이터로 먼저 학습한 네트워크를 이용하여 다양한 decoder에 대해 perturbations을 주고 난 뒤, 그 결과들이 비슷해지도록 유도하여 학습하는 방법입니다. 그림에는 안 나와있지만, data augmentation도 사용됩니다. 이처럼 다양한 방법들을 활용하여 라벨이 부족한 데이터에 대해서 극복하는 방법들이 많이 제안되고 있습니다.
Weakly supervised learning은 semi-supervised learning과 이름이 헷갈릴 수 있지만 엄연히 다른 문제입니다. semi-supervised learning 방법은 일부 데이터에 대해서만 라벨이 존재하는 문제이지만, weakly supervised learning은 label이 존재하지만, 그 label 자체가 완전하지 못한 문제에 대한 것입니다. semantic segmentation data에 대해 예를 들어보겠습니다.
위 그림을 보면 (b)와 (c)의 차이를 보면 weakly supervised learning의 데이터 세팅이 어떤지 이해할 수 있습니다. 물론 모든 weakly supervised learning 데이터가 위 그림만을 말하는 것은 아닙니다. 다른 데이터로는 그림에 대한 설명만 있다든지 (소 2마리, 풀밭, 나무, 하늘과 같이) coarse 한 segmentation mask만 존재한다든지 또는 semantic segmentation mask보다 만들기 쉬운 detection label을 사용하는 방식도 weakly supervised learning의 대표적인 데이터 세팅입니다. weakly supervised learning 방법은 데이터 세팅에 따라 방법들이 다양하게 존재합니다. 그래도 굳이 대표적인 방법을 뽑자면, semi-supervised와 비슷하게 consistency regularization 방법이라 할 수 있습니다.
weakly supervised learning을 적용한 논문 하나를 예시로 들어보겠습니다.
그림을 보면 알 수 있듯이 네트워크의 activation map을 이용하여 seed를 생성 해내고, 그 seed를 이용하여 예측하는 방법을 사용합니다.
Unsupervised learning은 label data가 존재하지 않은 데이터 세팅을 의미하며, 이 방법을 이용하여 classification과 같은 문제에 적용하려면 훨씬 어려운 문제가 됩니다. 그래서 classification과 같은 문제에는 잘 활용되지 않고, 입력 이미지 만으로 자가 학습을 할 수 있는 방법에 주로 적용이 됩니다. 예를 들면 auto encoder가 있는데, 이는 입력 데이터를 이용하여 feature를 생성하고, 그 feature를 이용하여 다시 자기 자신이 되도록 하는 방식입니다. 또 다른 대표적인 방법은 GAN이 있습니다. GAN 또한 여러 장의 입력 이미지를 바탕으로 random 한 값으로부터 입력 이미지들과 비슷하게 이미지를 생성해 내는 방식이기 때문에 라벨을 사용하지 않는 unsupervised learning의 대표적인 방법이라 할 수 있습니다. 그리고 여러 장의 입력 이미지를 이용하는 optical flow나 stereo matching과 같이 입력 이미지들 간의 상관성이 있는 문제에서도 활용되고 있습니다. Stereo matching을 예로 들면, 왼쪽 이미지의 각 픽셀을 이동시켜 오른쪽 입력 이미지와 똑같이 생성해 내는 방법을 이용하기도 합니다. 물론, 성능은 supervised learning 방법을 사용했을 때, 훨씬 뛰어난 성능을 보입니다.
오늘은 과거의 머신러닝 방법이나 현재의 딥러닝에서 데이터의 라벨이 부족하게 세팅한 문제들에 대해 간략히 알아보았습니다. 데이터 라벨을 만들 때, 시간, 노력, 돈이 많이 들기 때문에, 이러한 문제점을 해결하기 위한 방법들이 연구되고 있으며, 많은 데이터가 있다 할지라도, 세상에 존재하는 모든 이미지에 대한 정답 라벨이 존재할 수 없기 때문에 이러한 데이터 부족한 상황에서 해결 방법은 끊임없이 연구가 될 것입니다. 감사합니다.
한국딥러닝(주)는 인공지능, 머신러닝, 딥러닝 솔루션을 개발하여 세상이 해결할 수 없는 문제를 해결하고 제안하고 있습니다. 끊임없이 발생되는 새로운 빅데이터와 응용 기술의 홍수 속에서 최신 인공지능 기술 동향을 예측하고 빠르게 반영하는 한국딥러닝을 만나보세요.
[출처] 딥러닝 학습의 최대 단점인 데이터 부족을 극복하는 법! Semi-supervised & Weakly supervised & Unsupervised learning|작성자 한국딥러닝