2012년에 발표된 AlexNet은 비전 기반의 인공지능의 역사에서 큰 획을 긋는다. ImageNet은 시각 인공지능 성능을 평가할 때 사용되는 대표적인 데이터 집합으로 영상의 수가 1400만장이 넘을 정도로 대용량을 자랑한다.  AlexNet은 이런 ImageNet 데이터를 기반으로 한 대용량 영상 인식 대회 “ILSVRC(ImageNet Large Scale Visual Recognition Challenge) 2012”에서 우승을 하게 된다. 인식 성능에 있어 그림 1.처럼 2011년 우승자에 비하여 거의 10% 포인트 정도 가까이 성능을 끌어올리는 쾌거를 이룩한다.

그림 1. 역대 ILSVRC 유명 넷의 성능 비교
그림 1. 역대 ILSVRC 유명 넷의 성능 비교

 

AlexNet은 다음 3가지 점에서 중요한 의미를 갖게 된다.

  1. 기존 컴퓨터 비전 방식에서는 주로 비전 전문가가 경험과 직관에 의존하여 영상에서 특징을 추출(feature extraction)하고, SVM(Support Vector Machine)과 같은 “shallow learning”에 기반했다면, AlexNet은 당시로서는 매우 깊은 8-layer를 갖는 딥러닝 방식을 사용한다. 기존 방식과 달리, CNN을 사용하여 사람의 개입 없이 end-to-end 학습을 통해 인식을 할 수 있는 망을 개발하였는데, 사람들이 공들여 특징을 추출하는 방식에 비해 성능이 월등히 좋았고, 이를 계기로 많은 비전 관련 연구들이 딥러닝 방식으로 돌아서게 되고, 인공지능에 대한 연구가 다시 불이 붙게 된다. 그래서 인공지능의 차가운 겨울이 뜨거운 여름으로 바뀌는 기폭제가 되었다고 말하는 사람들도 있다.
  2. 이렇게 뛰어난 성능을 갖는 망을 독점적으로 사용하는 것이 아니라 소스 코드를 공개한다. 소스 코드가 공개되면서 그 코드를 바탕으로 더욱 연구를 발전시켜 성능을 끌어올릴 수 있게 되었으며, 그들 역시 코드를 공개하면서 인공지능 분야에서 소스 코드를 공개하는 전통이 만들어지게 된다. 그림 1.에서 본 것처럼, 매년 가파르게 성능이 개선되어 2015년에 발표된 ResNet은 사람의 인식 성능을 뛰어 넘게 된다.
  3. 기존 연구들이 GPU를 별로 사용하지 않았는데, AlexNet은 GPU를 사용하여 성능을 끌어 올린다. CNN 연산에는 많은 parallelism이 존재하기 때문에 수 많은 연산 유닛을 갖고 있는 GPU를 사용하여 많은 연산을 병렬적으로 계산하는 것이 CPU를 사용하는 것보다 속도 면에서 훨씬 효율적이다. LeNet-5는 입력 영상의 크기가 32x32로 매우 작았는데, AlexNet은 227x227로 엄청나게 커질 수 있게 되고, 깊은 망과 엄청난 수의 파라미터를 처리할 수 있게 된 것은 모두 GPU 사용 덕이다. 또한 자신들의 GPU가 그래픽 연산뿐만 아니라 범용 프로세서로 사용되기를 희망하며 GPGPU(General Purpose GPU)라는 용어를 만들어내고 cuda를 개발하여 제공하는 등 노력을 기울여왔던 엔비디아에겐 천재일우의 기회가 되고, 발 빠르게 cuDNN 등을 발표하며 인공지능 분야에서 리더로 자리매김하게 될 수 있게 만든다.

 

AlexNet은 2012년에 발표된 “Image Classification with Deep Convolutional Neural Networks” 라는 논문의 제 1저자인 ‘Alex Khrizevsky’의 이름을 따서 그렇게 부른다. 이제는 AlexNet의 구조를 살펴보자.

AlexNet의 구조는 아래 그림 2.와 같이 전형적인 CNN 구조를 취하고 있으며, 이전 연재에서 살펴보았던 LeNet-5와 비교해보면, Convolutional layer와 Fully-Connected Layer 수가 많아졌다는 것을 제외하면 비슷하다는 것을 알 수 있다.

그림 2. AlexNet 구조
그림 2. AlexNet 구조

 

그림 2와 같은 구조를 갖고 있는 AlexNet은 총 5개의 Convolutional layer와 3개의 Fully-Connected layer로 구성이 되어 있으며, 맨 마지막 FC layer는 1000개의 class를 분류하기 위해 Softmax 함수를 사용하는 등 전형적인 CNN 구조를 갖고 있다.

227x227 크기의 입력 영상 (논문 그림이 224x224로 오타가 있어 처음 논문을 읽는 분들은 혼동스러워 하기도 하지만 227x227이 맞음)을 받아들여, 첫번째 convolution 연산은 11x11 크기의 큰 필터를 적용한다. 그 다음해에 AlexNet은 개선한 ZFNet은 이보다 작은 필터 사이즈를 사용하는 것처럼, 아직 CNN의 형태가 요즘처럼 작은 convolution을 겹쳐서 사용하려는 경향과는 다른데, 이것은 당시 컴퓨팅 환경을 고려한다면 다양한 구조 실험을 해볼 수 없었기 때문에 그런 것 같다.

LeNet-5에서는 convolution과 subsampling이 번갈아 오는 구조였는데, AlexNet은 첫번째 layer에서는 별도의 subsampling 없이 일정한 간격으로 건너뛰면서 연산을 수행하는 strided convolution을 사용한다. 이는 큰 필터 사이즈에서 오는 연산량 부담을 이를 통해 절감하려는 의도인 것으로 추정된다.

나머지는 전형적인 CNN 구조라서 논문을 읽어보면 충분할 것 같다.

구조적인 관점에서 AlexNet 논문의 저자들이 주장했던 주목할 부분은 크게 보면 5가지 정도로 압축할 수 있을 것 같다.

  1. ReLU 사용

AlexNet 이전에는 활성함수로 생물학적인 뉴런 개념과 비슷하게 Sigmoid나 Hyper-tangent 함수를 주로 사용했지만, 이 함수들을 사용하면 망이 깊어지면 학습 속도가 느려지는 문제가 있다. 그래서 좀 더 단순한 구조를 갖는 ReLU(Rectified Linear Unit)나 ReLU 계열의 활성 함수를 사용하는데, AlexNet이 그 길을 열어줬다. (그림 3. 참고)

그림 3. 활성 함수 비교
그림 3. 활성 함수 비교

 

  1. Overlapped Pooling

전형적인 CNN 구조에서 pooling 혹은 subsampling layer의 역할은 feature-map의 크기를 줄이면서 간단한 이동에 대한 강인함을 갖게 하고 후속 연산량을 줄여주는 것이 목표이다. 통상적인 pooling에서는 겹치는 부분이 없게 하는 것이 일반적이며, 그래서 흔히 window의 크기를 2x2를 주로 사용하고, 건너뛰기(stride)도 2로 사용하기 때문에 가로/세로의 크기가 각각 1/2로 줄어든다. 하지만, AlexNet에서는 2x2 window 대신 3x3 window를 선택하고, 건너뛰기를 2로 하였기 때문에 일부 영역이 겹치는 overlapped pooling 방식을 사용했다. 논문에서는 이를 통해 top-1과 top-5 에러율을 각각 0.4%와 0.3% 줄일 수 있었고, overfitting에 빠질 가능성도 더 줄일 수 있었다고 주장을 한다.

  1. Local Response Normalization (LRN)

생물학적인 뉴런에서의 lateral inhibition(강한 자극이 주변의 약한 자극이 전달되는 것을 막는 효과)과 같은 효과를 얻을 수 있고 일반화(generalization) 관점에서 좋아질 수 있기 때문에, AlexNet에서는 convolution 앞 단 2곳에서 feature-map 결과를 normalization을 수행하였다. 하지만, LRN의 효과에 대한 무용론이 대두되면서 지금은 거의 사용이 되지 않는다.

  1. Data Augmentation

Overfitting에 대한 해결책으로 학습 데이터의 양을 늘리기 위해 영상을 좌우/상하 반전시키거나, 256x256 크기의 큰 영상에서 무작위로 AlexNet 입력 크기에 맞게 227x227 크기로 잘라내서 사용하는 cropping 방식을 사용하였다. 간단한 연산만으로 학습 데이터를 손쉽게 늘릴 수 있으며, GPU가 이전 학습 데이터를 학습하고 있는 동안에 CPU에서 data augmentation을 진행하는 방식을 사용하였기 때문에 CPU-GPU 부하 균형 관점에서도 효율적이다.

  1. Dropout

지금은 대부분의 CNN에서 사용하고 있는 dropout을 지원하여 overfitting 문제를 개선시켰다. AlexNet에서는 FC-layer의 처음 2개 layer에 대하여 50% 비율로 dropout을 적용하였다. Dropout에 대한 내용은 그들의 선행 논문 “Improving neural neworks by preventing co-adaptation of feature detectors” 논문을 참고하면 좋을 것 같다.

 

AlexNet의 실험 결과를 보면, 아래 그림.4처럼 상당히 결과가 좋은 것을 확인할 수 있다. 그림에서 AlexNet이 인식한 결과는 top-5 추천의 경우로, 망이 5개의 후보를 자신이 인식하는 우선 순위별로 분류한 결과이다. 왼쪽 상단의 진드기(Mite)는 한쪽으로 치우쳐 있고,, 전체 다 보이지 않는데도 잘 인식하는 것을 확인할 수 있다. Leopard에 대한 추정 결과도 거의 대형 고양이과 동물들을 추천하는 것으로 보아 잘 인식함을 확인할 수 있다. 그림의 하단의 경우처럼 오류가 있는 영상들도 형편없이 틀린 것이 아니라 1순위가 아닐 뿐이지 어느 정도 비슷하게 추정하고 있음을 확인할 수 있다.

그림 4. AlexNet 인식 결과 예
그림 4. AlexNet 인식 결과 예

 

종합하면, 이런 결과가 SIFT(Scale Invariant Feature Transform) 같은 feature extractor 사용하지 않고, CNN 학습을 통해서 얻어진 결과라는 점이 더욱 고무적이다. 2012년의 대회에서 실제로 SIFT 등을 사용한 다른 참가자들의 경우, 성능이 떨어졌다.

이는 CNN 아주 복잡한 일반 영상에 대해서도, 학습의 양이 충분하다면, 그리고 좋은 CNN 구조를 갖는다면, 충분히 좋은 결과를 있다는 가능성을 보여줬다는 점에서 잠들어 있던 세상을 깨웠으며, 그래서 AlexNet은 변화의 시작이라고 있다.

라온피플 이석중 대표이사
라온피플 이석중 대표이사

 

저작권자 © 청년경제신문 무단전재 및 재배포 금지