for textmining

CNN 주요 모델들

|

이번 글에서는 Convolutional Neural Network(CNN)의 주요 모델들에 대해 살펴보도록 하겠습니다. 이 글은 Adit Deshpande 님의 블로그이곳, 그리고 각 논문을 참고해 제 나름대로 정리했음을 먼저 밝힙니다. 그럼 시작하겠습니다.

AlexNet

Recurrent Neural Network와 더불어 딥러닝 모델의 양대 산맥으로 주목받고 있는 CNN은 기본적으로 얀 르쿤이 1989년 제안한 구조를 토대로 하고 있습니다. 컴퓨터 비전 분야의 ‘올림픽’이라 할 수 있는 ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)의 2012년 대회에서 제프리 힌튼 교수팀의 AlexNet이 top 5 test error 기준 15.4%를 기록해 2위(26.2%)를 큰 폭으로 따돌리고 1위를 차지했습니다.

여기서 top 5 test error란 모델이 예측한 최상위 5개 범주 가운데 정답이 없는 경우의 오류율을 나타냅니다. 당시 ILSVRC 데이터셋(Image은 1000개 범주 예측 문제였습니다. 어쨌든 AlexNet 덕분에 딥러닝, 특히 CNN이 세간의 주목을 받게 됐습니다. AlexNet 아키텍처의 주요 특징은 다음과 같습니다.

  • conv layer, max-pooling layer, dropout layer 5개
  • fully connected layer 3개
  • nonlinearity function : ReLU
  • batch stochastic gradient descent

AlexNet이 중요한 이유는 의미있는 성능을 낸 첫번째 CNN 아키텍처이자, AlexNet에 쓰인 드롭아웃 등 기법은 이 분야 표준으로 자리잡을 정도로 선도적인 역할을 했기 때문입니다.

GoogleNet

AlexNet 이후 층을 더 깊게 쌓아 성능을 높이려는 시도들이 계속되었습니다. VGGNet(2014), GoogleNet(2015) 등이 바로 그것입니다. GoogleNet은 VGGNet보다 구조가 복잡해 널리 쓰이진 않았지만 아키텍처 면에서 주목을 받았습니다. 보통 하나의 conv layer에는 한 가지의 conv filter가 사용됩니다.

GoogleNet 연구진들은 한 가지의 conv filter를 적용한 conv layer를 단순히 깊게 쌓는 방법도 있지만, 하나의 layer에서도 다양한 종류의 filter나 pooling을 도입함으로써 개별 layer를 두텁게 확장시킬 수 있다는 창조적인 아이디어로 후배 연구자들에게 많은 영감을 주었습니다. 이들이 제안한 구조가 바로 Inception module입니다. (그림 출처)

Inception module에서 특히 주목받은 것이 바로 1×1 conv filter입니다. 가령 현재 층 입력데이터 이미지의 차원수가 100×100×60이고, 1×1 conv filter를 20개 사용한다면 데이터의 차원 수는 100×100×20으로 줄어듭니다. 60개 채널(차원)에 달하는 하나의 픽셀이 20차원의 feature space로 선형변환, 차원축소된 것이라고도 볼 수 있겠습니다.

ResNet

ResNet(2015)은 2015년 ILSVRC에서 오류율 3.6%로 1등을 차지했습니다. 인간의 분류 오차가 5~10% 정도라는 걸 감안하면 놀라운 성적표입니다.

사실 AlexNet이 처음 제안된 이후로 CNN 아키텍처의 층은 점점 더 깊어졌습니다. AlexNet이 불과 5개 층에 불과한 반면 VGGNet은 19개 층, GoogleNet은 22개 층에 달합니다. 하지만 층이 깊어질 수록 역전파되는 그래디언트가 중간에 죽어서 학습이 잘 되지 않는 문제(gradient vanishing)가 발생했습니다. ResNet 저자들이 제시한 아래 학습그래프를 보면 이같은 문제가 뚜렷이 나타납니다.

ResNet 저자들의 핵심 아이디어는 다음 그림과 같은 residual block입니다. 그래디언트가 잘 흐를 수 있도록 일종의 지름길(shortcut, skip connection)을 만들어 주자는 생각입니다. 이는 forget gate 등을 도입해 이전 스텝의 그래디언트(정보)를 좀 더 잘 흐르게 만드려는 Long Term Short Memory(LSTM)의 철학과 본질적으로 유사합니다.

ResNet의 성능이 좋은 이유는 그래디언트 문제 말고 또 있습니다. Veit et al. (2016)은 residual block이 앙상블(ensemble) 모델을 구축한 것과 비슷한 효과를 낸다고 주장했습니다. residual block의 skip connection 덕분에 입력데이터와 그래디언트가 오갈 수 있는 통로가 크게 늘어나기 때문입니다. ($n$개 skip connection이 있다면 $2^n$개의 서로 다른 통로 존재) 이를 직관적으로 나타낸 그림은 아래 그림과 같습니다.

DenseNet

DenseNet(2016)은 ResNet에서 한발 더 나아가 전체 네트워크의 모든 층과 통하는 지름길을 만들었습니다. conv-ReLU-conv 사이만 뛰어넘는 지름길을 만들었던 ResNet보다 훨씬 과감한 시도입니다. DenseNet의 전체적인 아키텍처는 다음과 같습니다.

Region Based CNNs

R-CNN(2013), Fast R-CNN(2015), Faster R-CNN(2015) 등은 object detection 문제를 풀기 위해 제안된 모델들입니다. object detection이란 이미지가 주어졌을 때 해당 이미지 속에 들어있는 오브젝트의 경계(bounding box)를 찾아내는 작업입니다. object detection 문제는 크게 오브젝트의 경계를 찾아내는 작업(region proposal step), 해당 오브젝트가 무엇인지 맞추는 작업(classification step) 둘로 나뉩니다. CNN은 여기에서 이미지의 특성을 추출하는 데 중요한 역할을 합니다. 모델이 거듭될 수록 정확도는 물론 속도도 크게 향상되는 추세입니다.

CNNs for NLP

문서분류에서 높은 성능으로 주목받은 CNN 아키텍처는 Kim(2014)입니다. 단어벡터들을 붙여서 행렬 형태의 입력값을 만들고, 너비가 단어벡터의 차원수와 일치하는 필터를 씁니다. conv layer가 단 1개뿐이지만 필터를 100개 이상 써서 두텁게 만든 것도 특징입니다. 다음 그림과 같습니다.

위 그림에서도 알 수 있듯 Kim(2014)의 단점은 conv filter가 돌 때 이웃단어들을 고려할 수는 있지만, 멀리 떨어져 있는 단어들을 감안하기가 어렵다는 점입니다. 이에 Kalchbrenner et al.(2014)dynamic $k$-max pooling 기법을 제안했는데요. 풀링을 할 때 내림차순으로 $k$개를 선택하되 순서를 보존하는 방식입니다. 아래 그림에서 첫번째 conv layer에선 5개, 두번째 conv layer에선 3개를 풀링한 것입니다. 결과적으로 Recursive Neural Network와 유사한 파싱트리 모양의 구조가 됩니다.

한편 위의 연구들은 단어 수준에서 문서분류를 수행했는데, 최근엔 글자 수준의 CNN 아키텍처도 제안되고 있습니다. 단어(글자)벡터와 문서의 외부정보를 합쳐서 분류 성능을 높이려는 시도도 제안되고 있습니다. 이와 관련 자세한 내용은 이곳을 참고하시면 좋을 것 같습니다.

Comments