개요
해당 포스팅 시리즈는 “Unerstanding Deep Learning” 책을 학습하는 과정을 기록하는 스터디 노트이다. 이번에는 11장, Residual networks를 다룬다.
1. ResNet과 RNN의 차이
Residual network가 RNN인 줄 알았으나 공부를 해보니 비슷한 점은 있어도 완전히 다른 내용이었다. 만들어진 이유부터 다른데 ResNet은 deep한 network를 보다 효과적으로 training하기 위해 만들어진 것이고 RNN은 시계열 데이터를 잘 처리하기 위해 만들어졌다. 그래서 Residual block을 CNN에 적용할 수도 있다. 각각의 간략한 원리에 대해 살펴보면 ResNet은 이전 값을 출력에 그대로 더하는 간단한 방식으로 구현된다. 한편 RNN에서도 LSTM의 cell state도 곱셈이 아니라 덧셈을 쓴다는 점에서 유사한 부분이 있다.
2. Branch의 각 값이 Uncorrelated한 이유

11.4 문제에서 위 그림의 residual block 내 두 branch 값이 서로 uncorrelated한 이유를 설명하라고 헸다. 처음 문제를 볼 때 도대체 무엇이 branch인지 몰라 헷갈렸다. 알고 보니 으로 통과되는 흐름이 하나의 branch이고 그 위로 add되는 흐름이 다른 branch였다. 그리고 이 두 branch가 uncorrealted한 이유는 단순히 에서 weight를 곱하고 activation을 통과하는 등 여러 단계를 거치기 때문에 uncorrelated된다.
마무리
ResNet, DenseNet은 들어만 봤는데 원리를 알고 나니 생각보다 별 게 없다는 것을 느꼈다. 특히 단순히 값을 더하기만 해도 loss surface가 부드러워진다는게 놀랍다. 우리 뇌도 다른 뉴런의 영향을 받으니까 단순히 sequential하게 두는게 아니라 residual하게 만드는게 합리적인 것 같다. 특히 deep learning pipeline에서 표준으로 잡히고 있다고도 하니 나중에 꼭 써먹어봐야겠다.
Reference
[1] Prince, S. J. D. (2023). Understanding Deep Learning. The MIT Press. Retrieved from http://udlbook.com