많은 공대생이 그렇듯이, 나 역시 과학이란 그 자체가 진리라는 믿음을 갖고 있었다. 교과서나 원서에 나오는 과학적 사실은 객관적으로 입증된 것일 테야!라고 말이다. 이러한 생각에 도전받은 게 학부 때의 과학기술학 수업에서였다. 당시 교수님은 반대되는 이야기를 했었다. 과학 그 자체는 결코 진리가 아니라는 이야기였다. 과학은 절대적이지 않으며, 시간에 따라 패러다임이 계속해서 바뀌며, 인간에 의해 어떤 것들은 단순히 사회적으로 합의되기도 하며, 심지어 정치논리에 의해 그 내용조차 바뀐다는 것이다. 나를 포함하여 당시 수업을 같이 듣던 학생들의 대부분은 과학에 도전하는 이런 내용을 받아들이기 어려워했고, 교수님과의 열띤 토론도 있었던 게 기억난다. 그러나 내가 대학원에 오면서, 나름대로 공부나 연구를 하면서, 그때 그 이야기가 그런 거였구나 하는 것이 조금씩 납득하게 되곤 한다.
뭐 그렇게 심오한 과학기술학 이야기를 하고자 하는 건 아니지만, 아무튼 그래서 과학이란 그런 것이다. 잘 알려져 있는 통념 또한 틀릴 수 있다. 과학은 객관적인 사실이나 진리가 아니며, 그 패러다임은 변화한다. 논문이든 원서든, 항상 틀릴 가능성을 염두하고 읽어야 한다. 특히 딥러닝 같은 신생 분야일수록 더더욱, 통념이 틀릴 수 있다. 그렇기 때문에 공부하면 할수록, 내가 알고 있는 지식 조차 틀린 사실일 수 있다는 것을 깨닫곤 한다. 오늘 소개할 논문은, 내가 알고 있던 통념이 틀렸다는 것을 깨닫게 해 준 논문들을 소개하고자 한다. 블로그 포스팅 제목을 나름 고민했는데, 적당히 "신선한 딥러닝 논문"으로 소개한다.
ImageNet-trained CNNs are biased towards texture; increasing shape bias improves accuracy and robustness
https://openreview.net/pdf?id=Bygh9j09KX
ICLR 2019
CNN은 이미지를 어떻게 보는 걸까? 흔한 교과서적인 설명은, CNN의 앞쪽 layer에서 edge와 같은 low level feature를 얻고, 뒤쪽 layer에서 조합하여 high level feature를 얻는다는 이야기이다. 실제로 ZFNet 같은 다양한 visualization 논문들이 이러한 shape 관점에서 CNN의 작동 양상을 보여주기도 했었다. 근데 과연 그럴까?
저자들은 CNN이 이미지에서 shape보다 texture를 본다고 이야기한다. 다시 말해 CNN은 이미지의 shape를 기반으로 판단을 내리는 것이 아니라, texture를 기반으로 판단을 내린다는 것이다. 예를 들어 고양이의 shape를 코끼리의 texture로 구성한 이미지가 주어진다면, CNN은 뭐라고 분석할까? CNN은 shape를 보니까 고양이라고 할까? CNN은 이를 고양이가 아닌, 코끼리라고 판단을 내린다. 논문에서는 이처럼 CNN이 texture에 기반을 둔다는 이 주장을 단순히 말로서 설명하는 게 아니라, 실험적으로도 구체적으로 입증한다. 또한 texture에 집중하는 CNN이 shape를 보도록 하기 위해서는 어떻게 학습하면 되는지까지 이야기한다. CNN의 작용 양상에서는 shape를 보는 것이 거의 통념으로 알려져 있는데, 이 분야에서는 의외로 shape와 texture에서 의견이 분분하다는 것은, 처음 알았을 때에는 꽤 놀라웠다.
The Marginal Value of Adaptive Gradient Methods in Machine Learning
NIPS 2017
Neural Network는 학습, 다시 말해 optimization이 필요하다. SGD, Momentum, NAG, Adagrad, RMSProp, Adam 등 optimizer가 참 많은데, 딥러닝을 처음 배울 때에는 "잘 모르겠으면 Adam을 쓰세요"라고들 이야기한다. 뭔지는 모르겠지만 복잡한 수식으로 구성되어있는 Adam은 왠지 최첨단이고 더 좋은 것처럼 묘사하며, SGD나 Momentum과 같은 non-adaptive method는 너무 심플한 gradient descent 방법인 것처럼 이야기한다. 물론 적당히 좋은 성능으로 빠르게 수렴하는 데에는 Adam이 더 나은 것이 맞다. 그런데 가만 보면, state-of-the-art는 오히려 Adam을 안 쓰는 경향이 있다. 생각해보자, 그 유명한 ResNet은 Adam이 아니라 Momentum 계열인 NAG를 사용한다. DeepLab V3+같은 state-of-the-art도 NAG를 쓰고, DORN도 Momentum을 쓴다. state-of-the-art에서 다들 Adam을 잘 안 쓰고, 훨씬 심플해 보이는 non-adaptive method를 쓴다는 것은 도대체 왜 그런 걸까?
그래서 위의 논문은 실제로 optimizer의 성능을 다시 점검해봤는데, learning rate decay를 빡세게 걸어서 state-of-the-art 성능을 만드는 환경에서 optimizer의 성능을 확인한다. 이처럼 극한의 성능을 뽑아내는 상황에서는 Adagrad, RMSProp, Adam 같은 adaptive method는 성능이 낮고, 오히려 SGD나 Momentum 계열이 더 나은 성능임을 확인한다. 물론 SGD가 꼭 좋다는 이야기는 아니다. 내 나름대로 정리하자면, 편리하고 쉬운 도구는 Adam이지만, 진정한 고수는 SGD나 Momentum 계열을 쓴다고 할 수 있겠다.
How Does Batch Normalization Help Optimization?
https://papers.nips.cc/paper/7515-how-does-batch-normalization-help-optimization.pdf
NeurIPS 2018
Batch Normalization(BN)은 다들 아는 유명한 딥러닝 테크닉이다. 원 논문에서는 internal covariate shift(ICS)를 방지하기 위한 의도로 BN을 제안했다. 과연 그 의도는 올바를까? 사실 저자들의 의도가 반드시 그 본질이라고 할 수 없는 것이기도 하다.
이 논문에서는 BN을 쓰면 ICS가 해결되기는커녕 오히려 심화될 수 있음을 실험적으로 보인다. ICS의 해소는 BN의 효과와 무관한 것이다. 그렇다면 BN은 왜 효과가 있는 걸까? 이 논문에서는 BN의 효과를 전혀 다른 맥락에서 입증했는데, BN의 사용은 loss function의 smoothness를 개선한다는 것이었다. 이를 Lipschitz 관점에서 수학적으로, 또 실험적으로도 보인다.
Three Mechanisms of Weight Decay Regularization
https://openreview.net/pdf?id=B1lz-3Rct7
ICLR 2019
weight decay는 진부하고 고전적인 regularization 테크닉이지만, 여전히 자주 쓰이고 있다. 그런데 도대체 왜 weight decay를 쓰면 overfitting을 막는 regularization 효과가 나타나는 걸까? 그리고 딥러닝 환경에서는 또 이상한 게, 어차피 BN을 쓰면 weight의 scale과 관계없이 equivalent 할 텐데, BN을 쓰는 neural network에서도 weight decay가 효과가 있다는 것은, 사실 이상한 일이다.
이 논문에서는 weight decay의 작동 양상에 대해 보다 디테일하게 탐색한다. 이 논문에서는, weight decay가 weight의 scale을 낮추는데 -> gradient descent에서 weight의 scale이 낮아지면, effective learning rate가 상대적으로 증가하는 효과가 나타나며 -> learning rate의 상승은 학습 과정에서의 노이즈를 늘리는 것인데 -> 이러한 noise가 regularization 효과를 만든다고 설명한다. 노이즈가 regularization 효과를 만든다는 것이 이해가 안 될 수도 있는데, dropout을 잘 생각해보면, 랜덤 한 마스킹도 사실 노이즈를 추가하는 것과 같다고 생각할 수 있으니, 이게 납득이 될 것이다. 이 논문과 다른 관점에서, 또 다른 논문에서는 weight matrix의 norm이 Lipschitz constant와 관계가 있어, weight decay가 Lipschitz 관점에서 이득이 됨으로 설명하기도 한다.
참고로 위의 논문들은 읽은 지 꽤 시간이 흘렀기 때문에, 내 설명이 틀릴 수 있다ㅎㅎ 블로그의 내용도 또한 진리가 아니니까.