AlexNet
AlexNet-10만 번 인용 된 딥러닝 네트워크
AlexNet은 딥러닝 역사를 얘기할 때 빠지지 않고 등장하는 네트워크입니다. 딥러닝의 눈부신 발전을 이룬 2022년, 현재로서야 AlexNet 보다 성능이 뛰어난 알고리즘은 셀 수 없을 정도로 많습니다. 하지만 10년 전, 2012년에 첫 등장 했을 때는 매우 센세이션했습니다. 그건 Google Scholar(학술 정보 DB)만 봐도 알 수 있습니다. 바로 피인용 횟수가 10만을 넘어가기 때문입니다.
https://scholar.google.com/citations?user=xegzhJcAAAAJ
위의 스크린샷은 AlexNet의 1저자인 Alex Krizhevsky의 피인용 횟수 상위 2개의 논문들입니다. 피인용 횟수 10만을 넘는 AlexNet 논문과 딥러닝을 아는 분들이라면 너무나도 익숙할 Dropout 논문입니다. 2개의 논문 모두에, 마찬가지로 딥러닝의 권위자인 제프리 힌튼(Geoffrey Hinton) 교수의 이름이 올라가 있는 것이 눈에 띄네요.
10만 번 이상 피인용 되었다는 것은 그만큼 그 논문이 해당 분야에 큰 파급을 일으켰다고 해도 과언이 아닙니다. 그렇다면 AlexNet은 어떻게 이런 파급을 일으켰을까요?
CV와 딥러닝 사이의 연결고리가 된 CNN
<AlexNet으로 시작 된, 컴퓨터 비전-CNN 응용 연구>
(A Survey of Convolutional Neural Networks: Analysis, Applications, and Prospects, 2020)
그 이유는 바로, 당시까지 풀리지 않던 CV(Computer vision) 분야와 딥러닝 사이의 연결고리로 CNN(Convolutional neural network)이 적합하다는 것을 증명했기 때문입니다. CNN은 지금으로부터 약 30년 전인, 80-90년대에 처음 등장했습니다. 아래는 그 대표격인 논문들에서 발췌한 아키텍처 구조입니다.
참고로 아래 두 논문의 저자는 역시 딥러닝 분야의 권위자인 Yann LeCun 박사입니다. 현재는 Meta에서 연구중이죠. 앞서 언급한 제프리 힌튼 교수의 제자이기도 합니다.
<1989년에 발표된, 우편번호 분석에 쓰였던 Convolution 커널>
(Backpropagation applied to handwritten zip code recognition, 1989, LeCun)
<1998년에 발표된, 손글씨 분석에 쓰였던 LeNet의 구조에 보이는 Convolution 커널>
(Gradient-Based Learning Applied to Document Recognition, 1998, LeCun)
AlexNet은 이렇게 기존에 있던 CNN이라는 구조를 기반으로 설계되었습니다. 바로 위에 있는 LeNet과 유사한 점이 많습니다.
하지만 네트워크 구조를 자세히 살펴보면 AlexNet이 더 많은 레이어들로 깊은 계층 구조를 이루고 있으며, 많은 필터를 사용하여 진정한 deep network를 구현했음을 알 수 있습니다.
단적인 예로, LeNet의 파라미터는 6.1만개이지만, AlexNet의 파라미터는 6천 만개로 그 규모의 차이는 약 1000배입니다. 정말 deep 해졌다고 할 수 있겠죠.
1000배 많은 파라미터
2022년에 딥러닝을 하는 사람의 입장에서, 딥러닝 네트워크의 파라미터가 6천만개라고 해서 놀랄 사람은 아무도 없을 것입니다.
그렇다고 6천만개가 CV 분야에서 적은 파라미터 개수는 아닙니다. CV 분야는 텍스트 등과는 달리 3개의 RGB 채널로 이루어진 이미지를 다루기 때문에 더 많은 연산을 해야하기 때문입니다. 이는 곧 필요 리소스량이 늘어난다는 말이고, 더 많은 비용이 든다는 뜻이죠. 아래는 주요 CV 알고리즘의 깊이와 파라미터 개수를 비교한 표입니다.
(A survey of convolutional neural networks on edge with reconfigurable computing. Algorithms, 2019)
사실 AlexNet이 등장하기 전에도, 네트워크를 깊게 쌓는 게 불가능한 일이 아니었습니다. 간단하죠. 그냥 네트워크에 Hidden 레이어들을 많이 배치하면 깊은 네트워크를 만들 수는 있었습니다.
하지만 그 방법이 소용없었던 건, 레이어를 무작정 많이 쌓는다고 성능도 함께 올라가지는 않기 때문입니다. 오히려 성능은 더 떨어졌고, 당시 하드웨어 기술수준과 보급화 문제로 훈련조차 어려웠습니다.
즉, 논문 저자는 레이어를 ‘잘’ 쌓아서 딥러닝이 가능한 진정한 deep neral network를 구현한 것입니다.
AlexNet 구조
네트워크를 어떻게 설계했길래 당시 CV 분야에 파급을 일으켰는지 알아보겠습니다.
논문에서 발췌한 그림입니다.
(ImageNet Classification with Deep Convolutional Neural Networks, 2012)
AlexNet은 2개의 GPU에서 병렬적으로 학습할 수 있게 설계되었습니다. cross-GPU parallelization이라는 기법입니다.
최근에는 쓰이지 않는 기법이라서 간단히 설명하고 넘어가자면, 2개의 gpu가 레이어의 뉴런들을 절반 씩 맡아서 계산합니다.
이때 어떤 뉴런들을 어느쪽 gpu에 할당할 건지, 출력 값을 어느 시점에 공유를 하는지 등은 추가로 설계해야합니다. 당시에는 학습 리소스가 지금과는 달리 열악했기때문에 사용되던 기법입니다.
병렬적으로 처리하는 아키텍처를 직관적으로 파악하기 위하여 단일 네트워크로 재구성하면 아래와 같습니다.
(출처:duchesnay.github.io)
맨 처음에 있는 224x224x3은 입력 이미지 1장을 의미합니다. 이를 제외하면 8개의 큼직한 오브젝트가 보입니다. AlexNet은 총 8개 레이어로 구성 된 네트워크입니다.
입력 이미지 뒤에 오는 큐브 5개는 Convolution 레이어(진한 파랑색 사각형)를 거친 후의 피처맵을 의미하며, 끝 부분의 세로가 긴 직사각형 3개는 Fully-connected 레이어를 의미합니다.
정리하자면, Alexnet은 5개의 conv 레이어와 3개의 FC레이어, 총 8개의 레이어로 구성됩니다. 1번, 2번 conv 레이어 뒤에는 LRN(Local Response Normalization)레이어와 Pooling 레이어를 배치합니다. 5번 conv 레이어 뒤에도 Pooling 레이어가 있습니다. 8개의 모든 레이어 마지막에는 활성화 함수로 ReLU가 뒤따릅니다.
그림에 표기되어있는 대로, 사용하는 conv 필터 사이즈는 11x11, 5x5, 3x3 입니다. 참고로 첫 번째 conv 레이어의 필터 사이즈인 11x11은 매우 큰 사이즈라고 할 수 있습니다. 그래서 이후 연구들은 필터 크기는 줄이고 채널 수를 늘리는 방향으로 발전합니다. 필터 사이즈를 키우는 것보다 채널 수를 키우는 게 파라미터도 덜 증가하고, 성능 상승에도 더 효과적이기 때문입니다.
AlexNet 주요 기법
ReLU
지금이야 ReLU(Rectified Linear Units) 채택을 주요 기법이라고 하기에는 매우 사소해보입니다. ‘ReLU는 원래 많이 쓰지 않나?’라는 생각이 들죠. 하지만 2012년에는 아니었습니다. AlexNet에서 ReLU를 도입한 후로 관련 연구들은 활성화 함수로 tanh 대신에 ReLU를 사용하기 시작했습니다.
<ReLU 활성화 함수>
ReLU는 음수 출력 값을 모두 0으로 처리함으로써 출력 값들 사이의 편차를 줄여 학습 속도를 향상시킬 수 있습니다.
논문에 의하면 25% 에러율까지 수렴하는데, tanh을 사용했을 때보다 ReLU를 사용했을 때 6배 더 빨랐다고 합니다.
LRN(Local Response Normalization)
ReLU는 출력 값의 범위가 max(0, x)입니다. 양수가 입력될 경우, 그 값 그대로 출력되겠죠. 큰 값이 출력될 경우 주변 픽셀에 영향을 줍니다.
튀는 값이 생긴다는 것은 해당 패턴에 오버피팅 될 수 있다는 의미이기도 합니다. LRN은 이런 영향을 최소화하기 위하여 다른 피처맵의 동일 위치의 값들을 정규화하는 기법입니다.
하지만 이 기법 역시 최근에는 잘 사용하지 않습니다. Batch Normalization이 이 자리를 대체했습니다.
Overlapping Pooling
오버래핑 풀링은 풀링 레이어가 피처맵을 슬라이딩할 때 겹치는 영역이 있도록 설정하는 기법입니다. 풀링 레이어에 커널 사이즈와 stride를 겹치도록 설정하면 구현할 수 있습니다.
Dropout
드롭아웃은 오버피팅을 방지하는 대표 기법입니다. 논문 저자가 참여하여 발표 된 기법이기도 합니다. AlexNet은 3개의 FC레이어 중, 앞의 2개의 레이어에 드롭아웃을 적용하였습니다.
드롭아웃을 하지 않고 학습할 경우 오버피팅이 발생했다고 합니다.
터닝포인트가 된 AlexNet의 활약
2011년까지만 하더라도 이미지넷-이미지 분류 챌린지의 1등 에러율은 25.8%였습니다.
<2011년 이미지넷 챌린지 결과>
<이미지넷 챌린지 데이터셋 예시>
2012년에 AlexNet은 이미지넷 챌린지에 참여하여 16.42%라는 혁신적인 성능을 달성합니다.
<2012년 이미지넷 챌린지 결과/SuperVision이 AlexNet 저자의 팀>
최상단에 있는 15.32%는 추가 학습 데이터를 사용했기 때문에 공식 우승 성능으로 인정되지 않았고, 볼드처리 되어 있는 16.42%가 공식 기록으로 인정되었습니다. 주목할만한 점은 2등 팀이 26.17%를 기록하였고, 이는 2011년 우승 성적에 못 미치는 에러율이라는 것입니다. AlexNet이 얼마나 큰 성과를 냈는지 체감이 됩니다.
이로써 인공지능이 손글씨 같은 제한적인 데이터셋 뿐만이 아니라 3차원의 고화질 이미지도 높은 정확도로 분류할 수 있게 된 것입니다. 2015년에 발표된 이미지넷 챌린지 히스토리 논문에서는 2012년 챌린지를 두고 딥 뉴럴 네트워크가 첫 등장하는 터닝포인트였다고 논평합니다.
실제로 AlexNet으로 인하여 딥러닝이라는 것이 주목받기 시작했다고 해도 과언이 아닙니다. 이때부터 많은 후속 연구 논문들이 쏟아져나왔으며, 구글, MS, 페이스북, 아마존 등의 세계 기업들도 딥러닝 연구에 투자하기 시작했기 때문입니다.
(해당 파트의 모든 이미지는 ImageNet Large Scale Visual Recognition Challenge, 2015)
마무리하며
사실 저자는 논문에서 AlexNet이라는 네트워크 이름을 언급하지 않습니다. 저자가 지은 네트워크 이름이 아니기 때문입니다. 아무래도 발표 후, 세계의 주목을 받았고 10만 번이나 인용될 만큼 상징성이 큰 네트워크였기 때문에 후에 저자의 이름을 따서 AlexNet이 되었다고 합니다.
지금까지 딥러닝의 터닝포인트였던 AlexNet에 대해 알아보았습니다. 딥러닝에 관심이 있으신 분들이라면 꼭 이 상징성 있는 논문을 직접 읽어보시길 권합니다. 지금 읽으면 당연한 내용들이지만, 당시에는 당연하지 않았았기에 디테일 설명도 자세한 편이고 잘 읽힙니다.
About Author
양 다 은
Pro, AI 1팀
deyang@cubox.ai
TAG