Understanding deep learning requires rethinking generalization (2017) 1/2

Preview:

Citation preview

Understanding deep learning requires rethinking generalization (2017) - 1/2

Chiyuan Zhang, Samy Bengio, Moritz Hardt, Benjamin Recht, Oriol Vinyals

170322 @mikibear_ 논문 정리

질문 1,

"딥러닝 알고리즘은 진정으로 일반화를 하고 있는가?"

이 질문은, 모델의'일반화를 잘 하는 정도'를 어떻게 측정할 수 있는가하는 문제와 밀접하게 연관되어 있습니다.

그리고 우리는 일반적으로 사용하는 답을 알죠.

바로 Generalization Error

그리고 우리는 일반적으로 사용하는 답을 알죠.

바로 Generalization Error= |training error - test error|

당연히 Generalization error가 작을 수록,모델은 일반화를 잘하고 있다고 말할 수 있을 것입니다.

논문엔 없는 내용이지만, 다음과 같은 상황을 상정해봅시다.

개와 고양이를 구분하는 학습을 하는

논문엔 없는 내용이지만, 다음과 같은 상황을 상정해봅시다.

개와 고양이를 구분하는 학습을 하는

뉴럴넷 모델과

논문엔 없는 내용이지만, 다음과 같은 상황을 상정해봅시다.

개와 고양이를 구분하는 학습을 하는

뉴럴넷 모델과

생전 개와 고양이라는 개념을 처음 접하는 아기

이건 개야!

이건 고양이야!

대답 잘 하겠죠?

"이건 뭐야?"

개!

"이건 뭐야?"개!

물론 우리의 VGG, Inception, AlexNet같은 것도 잘하죠

여기까지는 아무 문제 없습니다.

그럼 다음 상황을 봅시다.

개, 고양이 사진에 붙은 라벨을 전부 떼고, 라벨을 랜덤 배정합니다.그리고 가르칩시다.

이건 개야!

이건 고양이야!

이건 고양이야!

이건 고양이야!

이건 개야!

???

당연히 혼돈스럽습니다.

같은 질문을 해봅시다.

"이건 뭐야?"

몰라...

물론 우리 뉴럴넷도 모를 겁니다.

"이건 뭐야?" 몰라...

여기까지도 아무 문제 없습니다.

문제는 학습했던 데이터를 다시 보여줄 때 발생합니다.

어떻게 아기가 대답해야, 아기가 일반화를 잘한다고 할 수 있을까요?

"이건 뭐야?"

'고양이'라고 알려줬던 사진

정답은 "몰라..."입니다.

라벨을 랜덤 배정하면서이미지와 라벨의 관계가 없어졌기 때문에 이미지를 보고 라벨을 예측한다는 것이 말이 안되기 때문입니다.

만약 이렇다면 어떤 의미일까요?

"이건 뭐야?"

'고양이'라고 알려줬던 사진

고양이!

만약 아기가 '고양이'라고 답한다면,

아기는 고양이라는 개념을 일반화한 것이 아니라,

이미지를 보고 라벨을 암기한 것입니다

논문에서 제기하고 있는 문제점이 이것입니다.

딥러닝 모델은 이와 같은 상황에서 암기를 합니다.

요렇게 행동한다는 뜻이죠.

"이건 뭐야?"

'고양이'라고 알려줬던 사진

고양이!

내가 암 ㅇㅇ내가 봤음

그래서 실험에서 CIFAR10 데이터셋을 활용해 (라벨이 10개)

('진짜 이미지' - '완전한 랜덤 라벨링') 쌍을 이용해 몇몇 모델을 트레이닝시킵니다.그 실험만 진행한 것은 아니지만, 결론은 같으니 생략하겠습니다.

결과

결과

Training error는 0으로 가고, Testing error는 0.9로 갑니다.

Training error가 0이므로,

Generalization error = Testing error

즉, 모든 경우에 대해서 좀 큰 뉴럴넷은 0.9의 Generalization error를 가지게 됩니다.

Training error가 0이므로,

Generalization error = Testing error

즉, 모든 경우에 대해서 좀 큰 뉴럴넷은 0.9의 Generalization error를 가지게 됩니다.

좀… 많이 크네요...

논문에서는 본 실험을 다음과 같이 요약하고 있습니다.

논문에서는 본 실험을 다음과 같이 요약하고 있습니다.

와아 대단해 뉴럴넷은 암기를 잘하는 프렌즈구나

'음… 그래도 요즘에 일반화 잘한다고 알려진 방법 있잖아요.

Data augmentation이나Dropout이나

Weight decay나BatchNorm이나

Early stopping이나…

그런 것들 걸면 좀 낫지 않을까요?'

질문 2,

"그런 것들은 좀 일반화를 더 잘 시키는데 도움이 될까?"

Dropout이나 weight decay를 걸어도 이미지넷 데이터에서도 잘 '외웁'니다 (...)

오, 근데 weight decay는 좀 일반화를 시키나봅니다. 랜덤 라벨에서 train data에 대한 정확도가 줄었네요

'그럼 그냥 기존의 모델이나 논문에서 걸었던 data augmentation이나 weight decay나 batch norm 같은 걸 빼면 어떨까...?'

'그럼 그냥 기존의 모델이나 논문에서 걸었던 data augmentation이나 weight decay나 batch norm 같은 걸 빼면 어떨까...?

기존에 해왔던 것이 전부 사기일리는 없으니까… 랜덤 라벨링 안 한 정상적인 데이터에선 저런 기법들이 돌아가긴 하잖아'

네, 기법의 조합이나 구조에 따라서 달라지긴 하지만 잘 작동합니다. 특히, batch norm이 있고 없고는 inception에서 굉장한 차이가 있습니다.

논문에서는 세부적으로 좀 많이 구구절절 다루는데, 생략하도록 하겠습니다.

'아니, 그래서 일반화를 위한 regularizer들이 일반화를 한다는 거에요, 안한다는 거에요?'

'좀 작동하긴 하는데, 그런 regularizer가 일반화의 결정적인 이유는 아니니까…일반화에 대해서 좀 재고해볼 필요가 있지 않을까요?'

'좀 작동하긴 하는데, 그런 regularizer가 일반화의 결정적인 이유는 아니니까…일반화에 대해서 좀 재고해볼 필요가 있지 않을까요?'

결론이 왠지 미적지근...

질문 3,"딥러닝 모델이 암기를 한다고 했는데, 그럼 그 Capacity가 어떻게 되나?"

질문 4,"SGD도 딥러닝 트레이닝 중 일반화를 시키는데 도움을 준다고 알려져 있는데, 이건 어떤가?"

추후에…(사실 뒤에 내용들이 더 멋집니다)

틀린 내용이 있거나 중요한데 빠져있는 경우 알려주세요!@mikibear

Recommended