본문 바로가기
딥러닝

[딥러닝 논문 리뷰] Understanding Deep Learning Requires Rethinking Generalization

by 미스터탁 2022. 12. 10.

이번에 포스팅 할 논문은 "Understanding Deep Learning Requires Rethinking Generalization"으로서 2017 CVPR에서 Best paper로 선정된 논문입니다. 제목에서 알수 있듯이, 기존의 딥러닝에 관한 관점에 대해 의문을 제기하는 논문입니다.

 

이 논문에 대해 알아보기 앞서 한편의 논문을 살짝 리뷰하고 가도록 하겠습니다.

 

"Deep Neural Network are Easily Fooled:"

High Confidence Predictions for Unrecognizable Images

2015년 CVPR에 올라온 논문이고, 이번에 포스팅하고자 하는 논문의 느낌(?)과 비슷한 것 같아서 간단하게만 리뷰해보도록 하겠습니다.

아래 사진을 보시면 인간이 봤을때는 왼쪽과 오른쪽의 사진을 각각 코끼리와, 배로 인식할 것입니다. 오른쪽 사진이 해상도가 조금 낮구나 하는정도만 인지할 뿐이죠.

 

 

 

하지만, 딥러닝 모델은 각 사진의 우측사진을 아예 다르게 인식합니다. 코끼리의 사진은 코알라로, 배의 사진은 ipod 으로 인식합니다. 기존 사진에 단순히 노이즈만 추가하였을 뿐인데 딥러닝 모델이 인식하지 못한다는 것입니다.

 

 

 

 

논문에서 주장하는 바는 다음과 같습니다. 정상이미지에 적절한 noise를 더하면 NN를 완벽하게 속일수 있다는 것입니다. 단순히 모델이 헷갈려하게 하는 것이 아니라 완전히 속일수 있다고 합니다. 그럼 노이즈를 어떻게 주느냐. 기본적인 개념은 아래 수식을 보시면 직관적으로 이해하실 수 있습니다. 이미지에 노이즈를 추가해서 오분류를 일으키게 하지만 그 noise는 최소화하도록 하게끔 optimize시키면 됩니다. 

 

 

 

이렇게 만들어진 노이즈를 이미지에 추가한다면, 기존에 알려져있는 이미지를 잘 분류하는 모델(LeNet, AlexNet)에 대하여 예측을 시켜봤더니, 위에 보여드린 예제처럼 완벽하게 속더라는 것입니다. noise를 더한 이미지를 NN가 완벽하게 잘 못 인식한다면 그 데이터를 다시 재학습 시키면 더 좋지 않을까 ? 하는 의문이 들지만, 그렇게 재학습하더라도 또 다시 noise생성하여 이미지에 더하면 NN가 다시 속는다고 합니다. 

 

또한, 진화알고리즘(Genetic Algorithm과 같은)을 이용하여 인간이 인지(또는 구분)할수 없는 이미지를 생성하여 NN에 넣었더니 그 또한, 높은 확률로 어떤 category로 분류한다고 합니다. 

 

 

아래 그림애서 위쪽에 있는 숫자들이 NN가 예측한 label입니다. 즉, 인간이 봤을때 noise라고 보이는 것들은 NN가 99.99%의 확률로 (확신하며) 각 이미지를 특정 라벨로 인식합니다. 본 논문에서 주로 이야기 하고자하는 부분은 아무리 잘학습된 모델이라도 쉽게 속일 수 있다는 것이고 그 외에도 시사하는 부분이 굉장히 많습니다. 딥러닝에 관해 우리가 알고 있던 인식들을 완전히 깨주는 논문이라 시간내서 한번 읽어보시면 좋을 것 같습니다.

 

 

반응형

 

 

 

다시 본론으로 돌아와, "Understanding Deep Learning Requires Rethinking Generalization"에서 저자가 하고싶은 이야기도 비슷합니다. 딥러닝의 성능에 대해 다시한번 생각해 볼 필요가 있다라는 것인데, 여기서 말하는 성능은 Generalization을 의미합니다. Generalization error는 보통 Generalization error = training error – test error로 이야기하며 관련 이론들은  

 - VC dimension

 - Rademacher complexity

 - Uniform stability

등이 있습니다. 이러한 이론들이 기본적으로 이야기하는 것은 “Parameter가 많아지면, generalization error를 줄이기 위해서는 penalty term이 필요하다.” 라는 것입니다. Shrinkage Regression만 생각해도 직관적으로 '그렇구나'하고 넘어갈 수 있는 부분입니다. NN는 기본적으로 굉장히 Overfitting이 잘되는 모델이기 때문에 이 Overfitting을 방지하기 위한 (Generalization을 높이기 위한) 알고리즘이나 테크닉들이 많이 발전하였습니다. Drop-out, ReLu, Batch Normalization등등 여러가지 기법들이 있죠. 

 

아기에게 개와 고양이를 가르친다고 가정해봅시다. 아기에게 개와 고양이 사진을 보여주면서 이건 개야, 이건 고양이야 라고 알려주면 아기가 학습을 하겠죠?

 

 

 

그리고 새로운 개를 보여주면 아기는 '개!!!'라고 대답할 것입니다.

여기까지는 NN도 똑같습니다. NN도 개와 고양이 사진을 보여주고 새로운 형태의 개를 보여주면 개!! 라고 예측할 확률이 높죠. 이제는 개와 고양이를 헷갈리게 가르친다고 가정해봅시다. 개사진을 보여주면서 고양이라고 알려주고, 고양이 사진을 보여주면 개 라고 알려주는 것이죠. 그리고 어떨때는 제대로 알려주면 아기는 당연히 헷갈려하겠죠?

 

 

 

아기는 새로운 개의 사진을 보아도 헷갈려하고 방금 봤던 사진을 다시 보아도 헷갈려 할 것입니다. 

 

 

 

그럼 NN은 어떨까요? 아기에게 가르친 것처럼 개와 고양이를 헷갈리게 가르친다고 가정해봅시다. NN에게 새로운 사진을 보여주면 당연히 헷갈려 할것입니다. 오답을 낼 확률이 높겠죠. 그렇지만 문제는 학습했던 사진을 다시 보여줄 때 일어납니다. 

 

 

NN은 학습했던 사진을 다시보여주면 잘 맞춘다라는 것이죠.  이게 왜 이상한것이지 라고 생각 하실 수 도 있지만, 인간은 학습을 통해 Generalization이 잘된다. 라는 것은 분명한 사실입니다. 그렇단 인간이 학습하면서 헷갈려했다면 Generalization이 잘된다는 NN도 학습했던 사진을 다시 보면 헷갈려 해야 한다는 것입니다. 좀 더 구체적으로 이야기한다면, 사실은 근본적으로 '학습이 되지 말아야합니다'. 그러나 NN는 학습하지 말아야 할 것도 학습을 해버린다는 것이고, 정확히는 NN는 Input Data와 Y의 관계를 외운다 라는 것입니다. 논문에서는 “Deep Neural Network easily fit random labels”라고 표현하고 있습니다. Label이 어떻든 간에 NN는 그걸 외워버린다는 것이죠.

 

 

 

저자는 기존에 잘 알려져있는 (Generalization 이 잘되는) NN모형들을 사용해서 라벨을 random하게 섞어서 실험을 진행해 보았습니다. 아래 그럼의 (a)를 보시면 True label이든 random label이든 loss가 0으로 수렴하는 것을 알 수 있습니다. 다만, 학습 시간에 차이가 있을 뿐이죠. 그림(b)는 label corruption 비율에 따른 NN의 overfitting되는 시간을 보이고 있는데, label corruption 비율이 어떻든 완벽하게 overfitting된다는 것을 보이고 있습니다. 그림 (c)는 label corruption에 따른 test error 를 보이고 있는데 전부 0.9에 수렴하고 있습니다. Cifar10데이터를 활용하였기 때문에 random하게 맞춘다고 가정하면 error는 0.9가 됩니다. 이렇게 될 경우, 앞서 언급했던 것처럼 Generalization error를 구하면 Training error = 0이고,  Generalization error = Test error = 0.9가 되버립니다. 즉, 기존의 구하던 방식의 Generalization error를 구하면 매우 높게 나온다. 과연 이 모델이 Generalization이 잘되는 것인가에 대해 의문을 던지는 것이죠.

 

Generalization에 도움을 준다고 알려져 있는 Drop-out, Weight decay, Batch Norm, Data Augmentation, Early Stopping을 하면 도움이 되지 않을까 싶지만, 아래 표와 그림을 보시면 이런 테크닉들이 있더라도 '잘외운다'라는 것을 알 수 있습니다. 아래 표는 random crop과 weight decay에 대한 실험 결과이고 그 아래 그림은 data augmentation, weight decay, drop-out에 관한 실험결과입니다. 다음 포스트에 이어서 적도록하겠습니다....

 

 

 

 

 

 

 

 

[PyTorch] 쉽고 빠르게 배우는 딥러닝(할인쿠폰코드) 369-7c698142f82e

https://www.inflearn.com/course/PyTorch-%EB%94%A5%EB%9F%AC%EB%8B%9D

반응형

댓글