여름에 당차게 블로그를 잘 꾸며 보겠다고 호언장담을 했지만 역시나 오래가지 못했다...
학기가 시작되고 20학점 들으면서 일도 계속하니까 토플 공부도 못하고 있는데 블로그를 쓸 시간은 도저히 나지 않는 것이다ㅠㅠ
그러던 중 인공지능 관련 교양 과목을 하나 듣고 있는데, 인공지능 관련 보고서를 쓰는 과제가 있어서 내가 일하고 있는 분야인 Image Classification 관련 정리도 해볼 겸 주제를 'Image Classification 연구의 동향'으로 잡고 보고서를 썼다. 바빠서 보고서를 자세히는 못 쓰고 의식의 흐름대로 그냥 적어서 깊이 있게는 못 적고, 검토도 못해서 틀린 부분이 많을 수 있지만 그래도 내용을 여기에다도 올려보겠다.
Image Classification 연구의 동향
물체 인식, 음성 인식, 자연어 처리 등 최근 활용되고 있는 여러 인공 지능 응용 분야 중에서 현재까지 가장 많이 발전되고 가장 많이 다뤄지고 있는 분야는 당연 이미지 분류(Image Classification) 분야가 아닐까 생각합니다. 따라서 이번 보고서에서는 지금까지 이미지 분류 연구가 어떻게 발전되어 왔는지, 어떤 요소들이 이미지 분류 모델들을 성공적으로 발전하도록 이끌었는지 살펴보겠습니다.
다소 정체되어 있던 이미지 분류 분야를 폭발적으로 각성시킨 모델은 Convolution을 인공지능 모델에 사용하여 ImageNet Challenge(이미지 분류 연구를 위해 제공된 14million개 이상의 학습 데이터, 1000개의 클래스를 가진 ImageNet 데이터를 사용하는 일종의 대회)에서 이전 결과들보다 훨씬 높은 정확도를 얻어낸 AlexNet(2012, https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf) 입니다.

위와 같이 Convolution, Max Pooling, Dense 레이어를 활용한 AlexNet은 이전까지의 Top 1 Accuracy인 50.9%에서 63%, Top 5 Accuracy는 73.8%에서 84.6%으로 획기적인 발전을 이뤄냈습니다. 이후 여러 다른 모델들이 AlexNet을 발전시켜서 현재 가장 성능이 좋은 모델(FixEfficientNet-L2, 2020)가 Top 1 Accuracy는 88.5%, Top 5 Accuracy는 98.7%의 정말 좋은 퍼포먼스를 보여주게 되었습니다. 이제 AlexNet으로부터 현재까지의 Image Classification의 주요 모델들에 대하여 주요 특징과 발전 과정에 대하여 알아보겠습니다.
먼저 VGG16(2014, https://arxiv.org/pdf/1409.1556.pdf) 모델입니다.

(사진 출처: https://neurohive.io/en/popular-networks/vgg16/)
이와 같은 구조를 가지며 71.5%의 Top 1 Accuracy, 90.1%의 Top 5 Accuracy를 자랑하는 이 모델은 AlexNet과의 구현 상 큰 차이는 없지만 단지 더 많은 layer를(13개의 Convolution layer, 2개의 Dense layer) 사용하였을 때 얼마나 더 좋은 성능을 가질 수 있는가를 보여줍니다. 최근의 어마무시하게 거대한 딥러닝 모델들에 비하면 턱없이 작은 수준이지만, 그래도 이렇게 모델의 덩치를 키우는 것 만으로도 5% 이상의 정확도의 향상을 얻을 수 있다는 것을 보여준 모델이었습니다.

다음으로 ResNet(2016, https://arxiv.org/pdf/1512.03385.pdf)에 대하여 알아보겠습니다. 여러가지의 변종된 모델들이 있지만 기본적으로 옆의 이미지와 같은 구조를 가지는 ResNet은 75.8%의 Top 1 Accuracy, 92.9%의 Top 5 Accuracy(ResNet 50 기준)을 가집니다. 기본적으로 기존의 VGG16 모델보다 더 많은 layer를 사용하고 있고, 중요하게 이 모델에서는 기존의 모델들과는 다른, Residual Connection이라는 새로운 방법이 사용되었습니다. 그리고 이 Residual Connection은 추후의 여러 모델들도 대부분 사용할만큼 또 다른 획기적인 방법이라고 할 수 있습니다. 이 Residual Connection 방법에 대하여 간단히 설명하면, 한 Convolution Block(convolution layer를 2개 이상 사용하는 일종의 단위)의 인풋을 그 Block의 아웃풋에 더하여 다음 Convolution Block의 인풋으로 사용하는 것입니다. 어찌보면 그냥 단순히 기존의 아웃풋에 인풋을 더한 것일 뿐인데 어떻게 이 방법이 딥러닝 모델들을 획기적으로 발전시킬 수 있었는지 설명하겠습니다. AlexNet의 등장으로부터 모델들은 점점 layer를 늘리는 방향으로 발전이 되었고, 이런 방법이 어느 정도 성능을 향상시켜주었습니다. 하지만 계속 layer를 늘렸을 때 어느 순간 성능이 향상되지 않는 현상을 사람들은 발견했습니다. 그 이유는 역전파를 사용하여 layer들을 학습시킬 때, 모델이 깊어지면 깊어질수록 모델의 끝부분(prediction layer와 가까운 부분) 모델의 처음부분(input layer와 가까운 layer)들로 가면서 점점 기울기가 사라지는(0에 가까워지는) gradient vanishing 현상이 심해졌기 때문입니다. 따라서 모델 초반부의 layer들은 제대로 학습이 되지 않았고, 이 현상은 모델이 깊어질 수록 심해졌습니다. 하지만 이렇게 Residual Connection을 통해 블록의 인풋을 아웃풋에 더해주면, 계속해서 이전 블록의 정보를 다음 블록에도 포함시키는 것이므로 역전파를 이용하여 학습 시 모델 초반부로 gradient가 전해질 때 사라지지 않는 장점을 지니게 됩니다. 따라서 이 Residual Connection은 Convolution 이후의 또 다른 획기적인 방법이라고 생각합니다.
다음으로 Inception(2014, https://arxiv.org/pdf/1409.4842.pdf)모델에 대하여 알아보겠습니다. 78%의 Top 1 Accuracy, 94.1%의

Top 3 Accuary(Inception V3 기준)을 가지는 이 모델은, 일단 이전의 모델들보다 덩치는 더 커져서 모델의 구조 사진이 너무 커서 전체 이미지를 첨부하지는 못하지만 옆 사진과 같은 Convolution Block을 가지고 있습니다. 모델의 크기가 점점 커질수록 사람들의 고민이 생겼습니다. 파라미터가 너무 많아져서 훈련 시간이 너무 길어진다는 것이었습니다. 따라서 제안한 구조가 Inception V3의 옆의 이미지와 같은 구조인데요, 1x1 컨볼루션, 즉 파라미터의 개수가가 매우 작은 convolution을 이용하여 컨볼루션을 해준 뒤, 블록 내의 레이어들을 각각 다른 방법으로(3x3 convolution, 5x5 convolution, max-pooling 등)으로 따로 작업한뒤 element-wise 하게 더해줌으로써 하나의 아웃풋 레이어를 만드는 것입니다. 이를 통해 어찌보면 모델이 확장되고 커지고 다른 종류의 filter 크기를 사용하여 학습을 하여 보다 다양한 feature들을 뽑아 낼 수 있는 장점도 지녔고, 1x1 convolution으로 인하여 파라미터 개수도 줄이는 방법을 고안하게 됩니다. 마찬가지로 이런 구조도 추후의 모델에서 자주 사용되는 구조입니다.

마지막으로 Xception(2017, https://arxiv.org/abs/1610.02357) 모델에 대하여 알아보겠습니다. 79%의 Top 1 Accuracy, 94.5%의 Top 5 Accuracy를 가지는 이 모델은, 마찬가지로 구조가 너무 커서 전체 이미지를 첨부하지는 못하지만 옆의 이미지와 같은 블록이 사용되었습니다. 가장 큰 차이는 Separable Convolution(Depthwise Convolution + 1x1 Point wise Convolution)을 사용하였다는 것 입니다. 마찬가지로 이 방법은 블록의 크기는 유지시키면서 훨씬 적은 수의 파라미터를 사용하였다는 것에 의미를 가질 수 있습니다. 일반적인 Convolution이 아닌 Separable Convolution을 사용할 때의 장점은, 밑의 이미지에서 보이는 것 처럼 인풋 채널의 수만큼의 커널이 각각 채널을 convolution 한다는 것입니다.

일반적인 convolution을 실행하면 아웃풋 레이어의 채널(예를들어 100개라고 하겠습니다)의 수만큼의 커널이 인풋 레이어의 채널(예를들어 10개라고 하겠습니다)수를 각각 돌면서 convolution을 하지만, (이 예에서는 100*10) Depthwise는 단지 10개의 채널만큼만 convolution을 하기에 계산양을 월등히 줄일 수 있습니다. 마찬가지로 이후에 1x1 컨볼루션을 사용하여 채널수만 늘려주면, 적은 파라미터를 사용하면서도 일반 convolution을 사용했을 때와 똑같은 output shape을 가질 수 있습니다.
지금까지 AlexNet을 포함하여 5개의 유명한 ImageNet Classification 모델에 대하여 간단히 알아봤습니다. 각각 독특한 특성과 구조를 가진 모델들이지만 전체적으로 공통된 발전 방향을 추구하고 있다고 생각합니다. 첫번째는 어찌됐든 모델의 덩치는 커져야 한다는 것이고, 동시에 그것으로 인한 단점들(많은 파라미터, 길어지는 학습시간)을 줄이기 위해 노력하고 있다는 것입니다. 그리고 오버피팅을 줄이기 위한 Dropout, Batchnormalization 등의 방법, 그것들을 Convolution, Activation 등과 어떤 순서, 조합으로 사용해야 하는가의 등의 연구들도 진행되고 있다는 것을 알 수 있습니다.
또한 모델을 학습시키기 위한 Residual Connection과 같은 창의적이고 혁신적인 새로운 아이디어들도 필요하다는 것을 알 수 있습니다. AlexNet의 Convolution으로 인해 이미지 분류 딥러닝 모델들이 폭발적으로 발전되었지만, 한 단계 더 Up하기 위해서는 단순히 모델의 크기를 늘리고 그에 따른 사소한 아이디어들을 더하는 것보다는 Convolution 처럼 엄청나게 획기적인 아이디어가, 그것이 Activation에 적용되던, 규제 레이어에 사용되던 상관없고, 모델안의 어느 곳에서든 또 나타난다면 좋지 않을까 생각을 해봅니다. 단순히 파라미터 조절하고 train image를 augmentaion 하고 그런 것들 보다는, 다시 한 번 Convolution을 능가하는 엄청난 아이디어가 나와서 이미지 분류 모델들을 획기적으로 발전시켜주면 좋겠다는 생각을 해봅니다.
'AI' 카테고리의 다른 글
| [SNU AI] EHR Data in DeepLearning 발표 유튜브 업로드! (1) | 2021.02.19 |
|---|---|
| tensorflow/keras Convolution, Pooling시 padding = same 일 경우 padding size 구하는 함수 (0) | 2021.02.03 |
| Convolution 후의 shape을 구하는 공식 (0) | 2020.08.05 |
