이번에 포스팅할 논문은 "Understanding and Utilizing Deep Neural Networks Trained with Noisy Labels" 이라는 논문으로 2019 ICML에 accept된 논문입니다. 이 논문을 읽기전에 "Understanding Deep Learning Requires Rethinking Generalization" 이라는 논문을 읽어보시면 이해하는데 더 도움이 됩니다. 저 논문은 제가 이전에 포스팅 해 놓았으니 한번 읽어보시면 좋을 것 같습니다.
https://bluediary8.tistory.com/10?category=609872
https://bluediary8.tistory.com/11?category=609872
"Understanding Deep Learning Requires Rethinking Generalization" 논문을 간략하게 요약하면, 기존의 딥러닝의 성능지표로서 Generalization error(training error – test error)를 많이 사용해왔는데, noise label이 섞여있을 경우 이와 관련된 이론들이 다 쓸모가 없고, 이에 대해 다시 생각해볼 필요가 있다라는 것입니다. 학습데이터 내에서 label을 random하게 섞더라도 Neural Network(NN)는 label을 잘 맞춥니다. 이러한 경우, test data는 당연히 잘 못 맞추겠죠. 그렇기 때문에 generalization error는 training error가 0이고 test error가 0.9이기 때문에 0.9가 됩니다. Label을 섞지 않으면 generalization error가 0에 가까운데 label corruption 이 생기자 generalization error는 증가해버립니다.
"Understanding and Utilizing Deep Neural Networks Trained with Noisy Labels"는 논문에서 위 논문을 자주 언급하는데, noise label이 섞여 있을 경우 test accuracy를 예측할수 있고, robust 한 학습을 위해 clean한 sample을 추출하고 robust하게 NN을 학습시킬수 있는 전략을 제안합니다.
Introduction
Noise data는 real world에 굉장히 혼재해 있고, 이 수가 매우 많으면 generalization 성능을 하락시킵니다. 모든 데이터에 대해 overfit시키기 때문인거죠. Noise data가 없는 경우에는 generalization error는 다음 이론들에 의해 bound됩니다(VC dimension, Rademacher complexity, Uniform stability). 그러나 위 논문의 저자(Zhang et al, 2017)들은 NN은 어떠한 label이든 잘 맞추면 generalization error가 증가한는 것을 보였습니다. 이러한 경우에는 위의 이론들이 적용될수가 없는 것이죠. 본 연구에서는 noise label이 있을 경우 generalization 성능을 수치화 할 수 있도록 제안하였습니다. 또한 Iterative Noisy Cross-Validation (INCV)를 통해서 clean sample을 추출 할 수 있는 방법을 제안하였고, Clean sample을 추출하고 DNN을 noise에 robust하게 학습 시킬 수 있는 알고리즘을 제안하였습니다.
Understanding DNNs trained with noisy labels
저자들은 noise label이 있을경우의 test accuracy를 계산하는 방법을 제안하였습니다. 학습데이터(labeled)의 label에 noise를 추가해서 실험을 하여야 하니 noise trainsition Matrix T를 도입합니다. T_ij는 실제는 i label인데 j로 예측할 확률을 의미합니다. Notation은 어렵지 않으니 한번 보시고 넘어가시면 될것 같습니다.
저자들은 다음과 같은 주장을 합니다.
Input data x들이 서로 iid이고 NN가 충분히 좋은 성능을 낸다면, D1에서 학습한 네트워크를 D2데이터에서 test했을 때 각 real class별로 각각의 predicted label로 예측할 확률은
로 정의 된다라는 것입니다. Noise transition matrix의 각각의 요소들이 의미하는 바가 실제 i label을 j label로 예측학 확률이라는 것입니다. 위 주장에 근거하여, label corruption process는 독립이기 때문에 아래 식이 성립하고 (y는 observed label이고 y_hat은 true label을 의미합니다, 굳이 의미를 나누자면 학습데이터와 테스트 데이터의 라벨이라고 할 수 있겠네요)
k=j인경우, 아래식이 성립하게 됩니다. 즉, class i에 대한 test accuracy를 구할수 있는 거죠.
Noise transition matrix에 대해서는 다음과 같이 정의하며 symmetric noise와 asymmetric noise로 구분하여 정의합니다. 아래 그림은 noise transition matrix의 예제입니다.
그리고 위 정의를 통해서 symmetric/asymmetric noise일때 각각의 test accuracy를 추론합니다.
Symmetric noise만 생각해보면, Prop1에 의해 아래 식이 성립하고(accuracy는 모든 class에 대한 정확도를 합해야하니)
Noise transition matrix의 diagnal term과 아닌 부분을 따로 생각해서 계산해주어야하기 때문에, 아래와 같이 계산이 됩니다. 그래서 위의 test accuracy 식이 유도됩니다. 결국에 이 nosie transition matrix를 통해서 위와 같이 전체 test accuracy를 구할수 있다고 주장합니다.
저자들은 이와 더불어 학습데이터에서 clean sample만 추출할수 있는 알고리즘을 제안합니다. 가장 첫번째로 제안하는 알고리즘은 다음과 같습니다. 이는 되게 간단하고 직관적인 방법으로, 학습데이터를 두개로 분할하여 각각 학습한 네트워크로 서로 교차하여 다른 데이터를 예측하여 그게 잘 예측할 경우 clean sample로 선택하고 이를 계속 반복해 나가는 것입니다.
저자들은 이 알고리즘의 성능을 측정하기 위해 두가지의 성능지표(LP, LR)를 가져옵니다. LP는 위 알고리즘을 통해 선택된 S에서 clean 한 sample의 비율을 의미하고, LR는 전체 데이터셋 집합에서 sample S의 clean한 sample의 비율을 의미합니다. 즉 LP는 추출한 샘플이 얼마나 clean한 비율인지에 대한 지표인거고 LR는 추출한 샘플이 전체 데이터셋에 비해 어라마나 clean한 비율인지에 대한 지표입니다. 각 class별 sample의 clean 비율 또한 아래 식처럼 정의할수가 있겠죠.
알고리즘 1에 의해 LPi와 LRi는 다음과 같이 쓸수 있습니다. Sample S는 전체집합 D내에서 y_f=y이기 때문에 LPi의 분모가 아래와 같이 쓰일 수 있습니다.
이를 앞서 봤던 수식2와 수식3을 이용해서 풀면
아래와 같이 수식이 정리됩니다(간단한 대입문제이므로 생략). 이를 통해, 저자들은 nosie transition matrix를 통해서 알고리즘1으로 추출한 clean sample의 비율까지도 예측 할수 있다고 주장합니다. (ㄷㄷ)
또한 위 수식은 아래와같은 식이 성립합니다.
이는 symmetric noise와 asymmetric noise의 정의에 대하여 수식8을 풀면 수식9가 나온다라는 것을 알수 있습니다.
Symmetric noise만 봐보면, diagonal term을 제외하고 나머지 class들(c-1개)은 모두 같은 값을 같기 때문에, 이들에 대해서는 아래와 같은 수식이 성립합니다. 결국 위 수식9를 보면 각각의 i class별로 clean sample비율(LPi)이 같고 전체 집합에 대한 clean sample비율(LRi)또한 같다라는 것을 알 수 있습니다. 왜냐하면 LPi와 LRi 모두 i에 대하여 수식이 정리되고 transition matrix의 diagonal term은 모두 같기 때문이죠.
위 에서 구한 LP수식을 Tii = 1-e 으로 정리하면 symmetric noise와 asymmetric noise에 대하여 LR와 LR을 다음과 같이 정리할수 있습니다. 저자들은 본인들이 제안한 알고리즘으로 추출한 clean sample비율이 실제로는 이 수식보다 더 높다라고 주장합니다.
저자들은 알고리즘1은 분명 original dataset 보다 더 적은 noise를 가지는 dataset을 만들 순 있지만, robust한 학습을 위해선 더 많은 학습데이터가 필요하며 이를 위해 INCV방법을 제안합니다. 알고리즘과 다음과 같으며, 기본적인 작동방식은 알고리즘1과 같고, clean sample을 선택할때에 그 중에서 large categorical cross entorpy를 가지는 데이터를 삭제하는 것을 추가하였습니다. 즉, clean sample이라고 일차적으로 판별을 받았더라도 loss를 높게 만드는 데이터는 보수적으로 추가하지 않겠다 라는 것이죠. 이를 통해 나오는 것은 selected clean sample S, reamaining candidate set C, estimated ration e입니다.
Training DNNs against noisy labels
알고리즘2에 의해 noise ratio, selected ample S, candidate C를 만들고, 실제로 사용할 네트워크를 잘 학습시킬수 있는 방법을 제안합니다. 일종의 Co-teaching 전략으로 네트워크 두개를 이용하여 학습을 하는 것입니다.
위 알고리즘을 그림으로 도식화 시키면 다음과 같습니다. 초기 Epoch(40~60)에서는 selected sample만을 이용하여 학습을 시킵니다. 그 이후에는 selected sample과 candidate sample을 합쳐서 사용합니다. Data를 각각의 두개의 네트워크에 넣고 Loss를 가장 작게하는 data를 선택하여 서로 교차하여 네트워크를 추가적으로 학습시킵니다. 매우 clean한 sample을 통해서 네트워크를 어느정도 학습시켜놓은 이후에, noise가 섞여있을지도 모르는 데이터를 가지고 fine-tuning하는 느낌이네요. 물론, fine-tuning할때에 loss를 가장 적게하는 data를 교차시켜서 학습시키는게 특징적인게 하지만... 굳이 왜 이렇게 하는지는 와닿지는 않는 것 같습니다. 논문에서는 이 알고리즘에 대해 자세히 서술해놓지는 않았습니다.
Experiment
실험은 다음 세가지 부분에 초점을 맞춰서 진행이 되었습니다.
• Theoretical results
• INCV method가 정확한 label을 추출한다라는것
• Alg3가 다른 SOTA에 비하여 DNN을 robust하게 학습시킨다라는것
데이터는 총 3가지를 사용하였습니다.
•CIFAR10 데이터의 label에 랜덤하게 nosie추가 (Symmetric, asymmetric noise)
•WebVision dataset (noise label이 포함된 2.4 million images), ImegeNET 사용
우선 Cifar10을 통하여 noise ratio에 따른 test accuracy를 측정해보았더니, test accuracy뿐만 아니라, LP, LR이 이론적인 결과와 거의 일치한다라는 것을 보였습니다. (사실 이부분은 noise label이 없을 경우 네트워크가 test data에 대해서 거의 100% 맞춘다는 전제하에 맞는 것입니다. cifar10의 경우에는 기본적으로 resnet만 가지고도 96%이상의 성능을 내고 있죠. 그래서 위 Claim1에서도 함수 f(NN)가 high capacity를 가지고 있을때를 가정합니다. 물론, 그럼에도 불구하고 noise ratio에 따른 test accuracy의 함수 형태가 이론적으로 거의 유사하다라는 것은 매우 특징적입니다.)
또한 Claim1 (각 class별 test accuracy는 Noise Transition matrix와 같다)에 대하여 실험을 통해 당위성을 주장합니다.
알고리즘2을 통해서 clean sample을 추출할때에 이론적인 LP/LR값보다 더 높은 비율로 추출되는것 또한 실험으로 보여줍니다.
또 하나 신기한것은... 이 INCV를 통해서 cifar10에서 noise data를 뽑아보니.. 아래 그림처럼 실제 noise label이 추출되었다라고 합니다. 우리가 학습하는 cifar10의 true label도 사실은 잘못 붙여져 있는것이 있다라는 거죠. 물론 그양은 매우 적다라고 합니다.
ImageNET 데이터를 통해서도 뽑아보니 잘못 labelling된 데이터들이 있다고 합니다.
여러 다른 알고리즘과 본인들이 제안한 알고리즘3의 성능을 비교한결과 cifar10에서 noise가 껴있을시 가장 좋은 성능을 기록했다고 합니다.
Webvision data와 ImageNET 데이터에서 본인들이 제안한 알고리즘이 좋은 성능을 기록했다고 합니다.
Conclusion
논문의 저자들은 observed data에 noise data가 섞여있을 경우, noise data를 걸러낼수 있는 방법과 noise ratio를 추정하여 test accuracy도 추정할수 있는 방법을 제안하였습니다. 이론적인 접근과 실험적인 접근이 일치하는 것을 보였습니다. 물론 여기서는 딥러닝 모델이 high capacity를 가지고 있다라는 가정이 있습니다. 즉, noise 데이터가 없을경우, test accuracy가 거의 100%에 근접하고, noise ratio를 추정하여 test accuracy를 추정할수 있다라는 것입니다. 실제로 사용한다라고 했을때에는 clean data로 train/validation 으로 나누어 validation에 대한 성능지표를 구하고 그와 noise ratio를 통해서 추정하는 식으로 쓸 수 있지 않을까 싶네요. 더불어, 저자들은 noise data가 있을경우 딥러닝 모델을 좀더 robust하게 학습 시킬 수 있는 방법을 제안하였습니다.
[PyTorch] 쉽고 빠르게 배우는 딥러닝(할인쿠폰코드) 369-7c698142f82e
https://www.inflearn.com/course/PyTorch-%EB%94%A5%EB%9F%AC%EB%8B%9D
'딥러닝' 카테고리의 다른 글
[딥러닝 논문 리뷰] Deep Double Descent : Where Bigger Models And More Data Hurt (0) | 2020.02.05 |
---|---|
[딥러닝 논문 리뷰] Generalisation in humans and deep neural networks (0) | 2019.12.02 |
[GAN 논문 리뷰] Augmented Cyclic Adversarial Learning For Low Resource Domain Adaptation (0) | 2019.04.04 |
[GAN논문 리뷰] Discriminator Rejection Sampling (0) | 2019.01.07 |
[딥러닝 논문 리뷰] Universal adversarial perturbation (0) | 2018.06.05 |
댓글