brunch

You can make anything
by writing

C.S.Lewis

by 김범준 Apr 29. 2019

Why를 명쾌하게 설명하는 딥러닝 논문들


 딥러닝 논문을 읽다 보면 느끼는 게, 너무 How에 초점을 두고 있다. 그 유명한 DCGAN에서도 Architecture를 이렇게 쌓고~ Batch Normalization을 쓰면 더 잘되고~ LReLU를 섞어서 하는 게 좋더라~ 이런 이야기를 하고 있다. 물론 불안정한 GAN을 안정적으로 만들었다는 점에서 의의가 있고 또 Engineering이 그런 것이겠지만, 나름대로 왜 이것이 타당한지를 명쾌하게 설명하는 논리가 있는 논문은 정말 드물다. 내가 이런 것에 진짜 회의감을 느낀 게 YOLO였다. 이전 글에서도 잠깐 다루었지만, 원 논문에서는 그냥 grid로 나눠서 한다라는 How의 측면에서 이야기를 많이 하는데, 이게 왜 되는지에 대해서는 제대로 설명하지 않는다. 난 오히려 이분의 블로그에서 YOLO가 작동하는 이유를 Why의 측면에서 비로소 제대로 이해할 수 있었다. 사실 본질적으로 딥러닝이라는 분야 자체의 특성일지도 모른다. 왜 잘 되는지라는 게 설명하기 정말 힘든 것이다. 그저 엔지니어링이기 때문에 어떻게 하면 되는지를 열심히 익히면 되는 것이다. 

 그럼에도 이 바닥에서도 Why를 명쾌하게 설명하는 논문들도 간혹 있다. 이런 논문들은 읽다 보면 유레카 같은 깨달음을 얻게 된다. 나름대로 나에게 인사이트를 주기도 해서 오늘을 이것들을 소개해볼까 한다.  


1) Deep residual learning for image recognition

그 유명한 ResNet 논문이다. How에 초점을 둔다면, skip connection을 하면 학습이 잘된다, 조금 더 좋은 설명은, 그게 gradient가 1이라서 vanishing 안 한다, 이런 이야기가 많다. 내가 정말 큰 인사이트를 얻은 것은 오히려 Introduction 부분인데, 여기서는 Identity를 더해주게 된 이유를 설명하고 있다. 학습해보니 20 layer보다 56 layer가 더 성능이 안 좋은 현상이 있었는데 이것이 이상하다고 설명한다. 사실 더 깊은 모델은 나머지 36 layer를 identity로 만들면 20 layer와 같은 성능이 나올 수 있잖아. 즉 56 layer는 적어도 20 layer만큼의 성능은 나올 수 있는 것인데, 나오지 못한 것이다. 그래서 아예 그냥 identity를 더해주는 방식으로 모델을 구성해보고자 해서 skip connection이 등장하게 되었고, 그게 정말 잘된다는 이야기이다. 

이건 내 해석인데, 사실 생각해보면 random으로 initialization되었다면 convolution을 한 결과가 zero-centered일 것이다. 이걸 identity로 만드는 것보다 zero가 되도록 학습하는 것이 더 쉽기 때문이 아닐까 싶다.


2) Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification

이것도 Kaiming He의 논문인데, 어쩌면 Kaiming He가 설명을 정말 잘하는 사람일지도 모르겠다. 이 논문에서는 PReLU와 He initialization을 소개하는데, 내가 감명 있게 본 건 He initialization이다. 사실 initialization도 sigmoid는 Xavier, ReLU는 He를 쓴다고 달달 외우면 되겠지만, 왜 그 둘 사이에 미묘한 1/2 차이가 나는지 나도 잘 모르고 있었다. 이 논문에는 그것이 명쾌하게 수식으로 설명되어 있다. 기존의 수식 전개를 따라가면 sigmoid과 같은 activation function을 가정하는 단계가 있는데, 현대의 딥러닝이 ReLU를 많이 쓰므로 이 부분에서 ReLU를 고려하면 결과가 달라진다고 한다. 그리고 ReLU는 음수 축은 0이고, 양수 축은 x이기 때문에, 전체적으로 결국 1/2이 된다. 


3) Dropout: a simple way to prevent neural networks from overfitting

이 논문을 읽기 전에는 Dropout이라는 게 그냥 일부 뉴런을 off해서 학습하면 regularization 효과가 있어 overfitting을 막을 수 있다 이런 정도로 알고 있었다. 원 논문에서는 흥미롭게도 Neural Network를 Ensemble하고자 하는 차원에 motivation이 있었다고 이야기를 한다. 다양한 connection을 갖는 NN을 모두 모델링해서 Ensemble한다면 사실 굉장히 무거울 것이다. 그 대신에 probabilistic하게 뉴런을 off하면 다양한 경우의 수가 모두 반영된 효과를 얻을 수 있어, 결국 network 1개로 ensemble 효과를 얻을 수 있다고 한다. 그게 Dropout이었다. Hinton이 대가라는 것을 알 것 같은 논문.


4) Learning deep features for discriminative localization

Class Activation Map이라고 불리는 CAM을 소개한 논문이다. CNN Visualization할 때 쓰는 방법인데, GAP를 달아서 weight를 조사해서 역으로 계산하면 CNN이 어떤 부분을 보고 분류했는지를 알 수 있다고 한다. 

이 수식을 열심히 보면 이게 왜 그렇게 되는지를 이해할 수 있었다. 그냥 평범한 교환 법칙이지만 이게 의미하는 것은 x, y에 대한 summation이 뒤에 있다가 앞에 나오게 된다는 것이다. 다시 말해, score 값을 각각의 x, y 좌표에 해당되는 pixel에 대해 얻을 수 있다는 것이다.


5) Contractive auto-encoders: Explicit invariance during feature extraction

별로 중요한 논문은 아니지만, 이 논문은 하고자 하는 바를 명확하게 정의하여 그것을 수학적으로 표현하고 수행한 것이 마음에 들었다. Auto-encoder란 결국 latent variable로 압축하고 다시 재현하는 것인데, 이렇게 나타나는 latent variable이 데이터의 작은 변화에 대해 민감하게 반응해서는 안된다. 즉 데이터에 추가적인 노이즈가 주어지더라도 latent variable의 변화량이 작아야 한다. 이를 미분 관계로 나타낼 수 있고, 수학적으로는 Frobenius norm of the Jacobian of the non-linear mapping term을 추가할 수 있다고 한다.

작가의 이전글 가끔씩 다시보는 하루히 시리즈 - 백기도연대
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari