LeNet
LeNet 이미지 분류 모델은 문서 인식을 위한 모델이며, 실용적인 응용분야에 CNN과 역전파 방법이 처음 적용된 모델이다.
MNIST database
미국 우편 공사의 우편번호 손글씨를 컴퓨터로 인식하기 위한 연구 과정에서 MNIST database가 구축되었는데,MNIST는 필기체 숫자 이미지를 모아놓은 데이터셋이다.
위의 이미지와 같이 다양한 스타일의 숫자 글씨들을 정확히 인식할 수 있는가에 대한 대표적인 Classification 문제다.
MNIST database는 28 x 28 픽셀의 흑백톤이미지로, 약 7만장의 이미지로 구성되어 있다. 손글씨는 사람마다 제각기 다른 형태로 쓰게 된다. 따라서 활자체를 인식하는 것보다 상당히 어려운 문제였다.
그러면 이제 LeNet의 모델 구조를 살펴보자.
LeNet 모델 구조
먼저 첫 번째 Convolutional Layer에서는 6개의 5 x 5 Kernel을 사용하는데 이미지 크기를 유지하기 위해 Padding을 상하좌우 적용시켜서 6개의 Feature Map을 뽑아낸다.
그 다음에는 Pooling Layer로 특성맵 크기를 절반으로 줄이게 된다.
두 번째 Convolutional Layer에서는 5 x 5 filter 16개를 사용하여 16개의 Feature Map으로 늘리는데 이때는 Padding을 적용하지 않고 가로, 세로 크기를 10으로 줄이게 되는데, 이렇게 더 많은 종류의 특성을 학습하도록 구성한다.
여기에 Pooling Layey로 크기를 절반으로 줄여 공간적인 정보를 압축한다.
이렇게 추출한 이미지의 Feature Map을 쭈욱 펼치면 400차원이 되는데,여기에 Fully Conected Layer를 세 개의 다층구조 분류 네트워크를 구성하여 0에서 9중에서 어떤 숫자에 해당하는지 분류하도록 한다.
마지막 10개의 출력값은 각 숫자로 분류될 확률이라고 볼 수 있다.
LeNet 특징
LeNet은 여러층으로 Neural Network를 구성하여 단계적으로 Feature를 학습하고 축약 및 다양화하면서 복잡한 패턴을 인식할 수 있다는 점에서 의의가 있다.
이미지 인식을 위한 Neural Network 구조인 CNN의 선구적인 역할을 했는데, 이미 이때부터 Convolution과 Pooling의 개념을 사용하여 시각적인 특성을 효과적으로 추출하는 방법이 제안되기 시작한 것이다.
LeNet모델은 딥러닝이 다른 기존의 이미지 패턴 인식 방법에 비해 더 좋은 성능을 낼 수 있다는 것을 보여주었는데, CNN이라는 방법이 실제로 이미지 인식에 상당히 효과적이라는 것을 실제 문제를 통해 보여준 현대적 CNN의 시초라고 볼 수 있다.
원래 MNIST 데이터셋은 사람도 헷갈릴만한 꽤나 복잡한 패턴을 가진 손글씨 인식 문제였지만, LeNet을 활용해서 98%의 정확도를 달성할 수 있었다. 이때 활용된 MNIST 데이터셋은 이후에도 여러 딥러닝 네트워크 모델에 성능을 측정하는 벤치마크로 널리 사용되었다.
ImageNet
일단 딥 러닝 분야에서 매우 유명한 ImageNet이라는 데이터에 대해 알아보자. ImageNet은 시각적 인지 소프트웨어 연구를 위해 1400만 장 이상의 이미지에 약 2만 개의 카테고리를 직접 기록한 방대한 데이터베이스다. 기존에 주로 이 데이터셋의 축소판(1,000개 클래스의 이미지 약 140만 장)을 가지고 ImageNet Large Scale Recognition Challenge(ILSVRC)라는 대회가 진행되었는데, 이 대회는 2010년부터 2017년까지 진행되었고, Classification부터 Object Detection 등에 대한 모델 성능을 겨뤄 볼 수 있었다. ImageNet은 지금도 컴퓨터 비전 분야에서 자주 사용되고 있는 데이터라고 할 수 있다.
AlexNet
AlexNet은 2012년 ImageNet Challenge에서 다른 모델들과 top-5 에러율에서 10%p 이상 차이를 보이며 우승한 모델이다. 참고로 AlextNet이 공식적인 이름은 아니고 Alex Krizhevsky가 발표한 논문이어서 이렇게 불리고 있다다.
입력 이미지의 크기와 네트워크 파라미터 숫자가 LeNet에 비하면 매우 큰데, GPU의 동시 연산 능력을 바탕으로 학습에 사용되는 시간을 줄였다. AlexNet이 GPU를 이용한 최초의 모델은 아니지만 이때를 기점으로 CNN과 GPU를 활용한 연구가 크게 증가하게 된다.
ReLU를 Activation function으로 사용했고 드롭아웃 기법을 적용하기도 했는데, ReLU는 시그모이드에 비해 계산이 매우 간단하고 Gradient 소실 문제가 줄어드는 효과가 있다. 드롭아웃은 말 그대로 학습 과정에서 확률적으로 일부 전파 경로를 차단함으로써 여러 모델이 앙상블된 효과를 주게 된다. 그래서 과적합(Overfitting)을 방지하는 대표적인 방법 중 하나로 알려져 있다.
VGGNet
AlexNet이 딥 러닝 모델이 크고 복잡한 이미지도 잘 인식할 수 있다는 가능성을 보여 준 이후, 컨볼루션 레이어의 크기와 깊이를 키워 더욱 성능을 끌어 올리려는 시도가 활발하게 일어났다. AlexNet이 8개의 레이어가 있는 것에 비해, VGGNet는 19개의 레이어로 깊이가 더 늘어난 네트워크인데, 학습 파라미터 수 같은 경우에는, AlexNet은 약 60M(Million, 백만)이었던 것에 비해 VGGNet에서는 약 144M로 늘어났다.
컨볼루션 필터는 픽셀의 주변부의 특징을 다음 피쳐맵으로 모아서 전달하는 역할을 하는데요. 필터의 크기는 얼마나 넓은 범위의 특징을 모으느냐를 결정한다. 따라서 넓은 범위에서 나타나는 특징을 적절히 잡아내기 위해서는 커널의 크기가 커야 한다고 볼 수 있다.
그러나 VGGNet은 그냥 단순하게 3x3 크기의 커널만을 사용하여 네트워크를 구성했다. 사실 어떤 입력에 대해 5x5 컨볼루션 레이어 한 개와 3x3 컨볼루션 레이어 두 개가 생성한 피쳐맵의 수용 영역(local receptive field)은 동일한데 VGGNet은 아주 단순한 방법으로 효과가 쏠쏠했던 네트워크라고 할 수 있다.
GoogLeNet
GoogLeNet은 2014년 ImageNet Challenge에서 우승을 차지한 모델이다. GoogLeNet은 5M개의 파라미터로 훨씬 더 효율적인 성능을 보여 줬다. 이 네트워크에서는 'Inception 구조'라는 게 핵심이라고 할 수 있다. 간단히 말하자면, Inception 모듈이라는 걸 반복적으로 사용해서 쌓은 네트워크라고 생각하면 된다. GoogLeNet의 또다른 핵심 아이디어는 1x1 컨볼루션 필터를 이용해서 피쳐맵의 크기를 크게 줄였다는 것, 작은 필터 크기를 병렬적으로 계산하여 계산 효율을 높였다는 것이다.
ResNet
ResNet은 마이크로소프트에서 개발한 모델로, 네트워크의 깊이를 더욱더 늘리기 위한 방법으로 Residual Learning이라는 방법을 적용한다.
네트워크의 깊이가 늘어날수록 입력 데이터가 수많은 계층을 거치면서 Gradient가 0에 가까워지게 되면, 멀리 떨어진 파라미터는 거의 학습이 안 되는 지점에 도달하기도 한다. 이런 Gradient를 깊은 네트워크에서도 더 잘 전달하기 위해 고안한 것이 바로 Residual Block이다. 여기서 Residual은 '잔차'라고 하는 통계 용어로, 실제 값과 예측 값 간의 차이를 의미한다. 간단히 말하자면, Residual Block에서는 입력값을 곧바로 출력값에 연결 짓는 Skip Connection이라는게 이루어지는데 이를 통해, 네트워크가 입력값과 출력값 간의 차이인 잔차(Residual)를 학습하게 된다.
2015년 ImageNet Challenge에서는 이 레이어를 약간 더 변형하여 152층까지 쌓은 ResNet-152를 통해 3.57%의 top-5 에러율을 기록하게 되는데 이 수치는 2014년도 챌린지에서 발표한 사람 수준의 성능을 능가하는 결과다.