Week 1

Going Deeper with Convolutions 리뷰

이번 23년 하계 학부연구생 활동을 하면서 가장 먼저 인공지능 전반에 있어 내가 흥미있어 하는 세부 분야를 찾아내는 것이 가장 중요하다고 생각했다. 그래서 딥러닝 기본에 관한 논문들을 찾아보고자 했다.

나는 기존에 컴퓨터 비전 분야에 흥미를 갖고 있었지만 관련지식이 전무하다시피해 CNN 관련한 잘 알려진 논문을 읽어보고 싶었다. 그 중에 ‘Going Deeper with Convolutions’라는 논문을 찾게 되었고, 이 논문을 읽게 되었다.

이 논문이 나왔을 당시에 CNN 성능을 높이기 위한 많은 연구들이 진행되었다고 한다. 이때 성능을 높이는 방법으로 주로 거론된 것은 신경망의 크기를 늘리는 방법이었다. 하지만, 두가지 문제점이 존재했는데, 첫 번째 문제점으로 크기가 커진다는 것은 파라미터 수의 증가를 의미하고, 이는 over fitting이 일어나기 쉬워진다는 문제가 존재한다는 것을 의미하며 두 번째 문제점으로 네트워크가 커질수록 컴퓨팅 자원의 사용량이 늘어난다는 문제점이 존재했다. 이를 해결하기 위해 이 논문의 저자들은 dense한 Fully-Connected 구조에서 Sparsely-Connected 구조로 변경하는 방법을 생각했다. 이로 인해 Inception 구조의 주요 아이디어가 나오게 되었다. 주요 아이디어는 CNN에서 각 요소를 최적의 local sparce structure로 근사화 후, 이를 dense component로 바꾸는 방법을 찾는 것이라고 한다. 이러한 Inception module을 사용하였을 때 과도한 연산량 문제 없이 각 단계에서 유닛 수를 상당히 증가시킬 수 있으며 Visual 정보가 다양한 scale로 처리되고, 다음 layer는 동시에 서로 다른 layer에서 특징을 추출할 수 있는 장점이 존재한다. 결과적으로 성능은 대폭 상승하지만 연산량은 약간만 증가하게 된다.

이 논문을 읽으면서 CNN에 대해 알아갈 수 있었고, 이후로 더 발전된 모델들도 찾아보고 싶다는 생각을 하였으며 추후에 코드로 구현하고 싶다.


Week 2

Deep Residual Learning for Image Recognition 리뷰

지난 주와 마찬가지로 논문을 찾아보던 중 이 논문도 흥미로워서 읽어보게 되었다.

먼저 논문의 저자들은 더 깊은 신경망일수록 훈련이 어려운 점을 해결하고자 했다. 그래서 이들은 이전에 사용된 것보다 훨씬 더 깊은 네트워크의 훈련을 쉽게 하기 위해 이전 layer의 결과를 다시 이용하는 Residual Learning 개념을 도입하였다. 이 당시 연구들에선 network의 depth는 매우 중요해졌고, 실제로 많은 모델들이 깊은 네트워크로 좋은 성능을 보였다고 하지만 gradient vanishing, exploding 문제가 발생하는 문제가 존재했다. 이 원인으로 깊은 신경망으로 overfitting이 주된 원인일거라 생각했지만 그저 더 많은 layer들의 추가로 인한 성능 저하라고 판단했다. 이를 해결하기 위해 Residual Learning 개념을 도입했다. 이를 이용한 network 를 구현한 ResNet과 Plain net을 비교하였을 때 degradation 문제를 잘 해결한 점과 depth가 증가하더라도 높은 정확도를 얻을 수 있음을 확인할 수 있었다.

나는 처음 보는 단어인 residual 라는 단어에 집중했고, 이 개념이 적용된 network가 기존과 다르게 성능 향상이 된 부분이 신기했다. 특히 적은 필터와 복잡성으로 더 나은 성능을 내는 부분이 인상깊었고, 딥러닝 분야에 흥미가 더 생기게 되었다.


Week 3

Batch Normalization: Accelerating Network Training by Reducing Internal Covariate Shift 리뷰

기존에 NLP 프로젝트를 진행하며 한 쌍의 문장(전제와 가설로 구성됨)을 entailment(관련있음), contradiction (모순) 또는 neutral (관련없음) 세 가지 범주로 분류하는 프로젝트를 진행했는데, 전부터 배치 정규화에 대해 궁금해서 이와 관련된 논문인 ‘Batch Normalization: Accelerating Network Training by Reducing Internal Covariate Shift’를 읽게 되었다.

Internal Covariate Shift 문제를 해결하기 위한 방법으로 Batch Normalization(배치 정규화) 방법을 논문의 저자들이 제시하였고, Batch Normalization은 네트워크 훈련 과정에서 Internal Covariate Shift 현상을 줄여주어 학습 속도를 개선시켜주며 높은 정확도를 갖게 해준다고 주장했다. 결론적으로 Batch Normalization은 인공 신경망의 학습 과정을 가속화하고 성능을 향상시킬 수 있는 좋은 도구이며, 다양한 응용 분야에서 활용이 가능하다는 것을 말한다는 걸 이 논문을 통해 알 수 있었다.

하지만, 교수님께서 알려주신 ‘How Does Batch Normalization Help Optimization?’ 논문을 읽고, Batch Normalization과 Internal Covariate Shift 현상은 크게 관계가 없다는 것을 알 수 있었다.

이 논문을 통해 같은 문제점을 해결하는데 시간이 지날 수록 다르게 판단된다는 점을 알 수 있었고, 어느 연구를 하는데에 있어 문헌 조사를 좀 더 깊게 해야된다는 필요성을 느꼈다.