본문 바로가기

Machine Learning

[Deep Learning from Scratch] 8. 딥러닝

이번 시간에는 딥러닝에 대해서 알아보겠습니다.

multi layers

저번 시간에 CNN의 원리와 손글씨를 인식하는 모델을 직접 구성해봤습니다. 현재는 MNIST 데이터셋에 대해 정확률이 99.79%까지 도달한 상태로 많이 발전했고 앙상블 학습, 학습률 감소, 데이터 확장 등 여러가지 많은 테크닉들이 생겼습니다.

여기서 이런 테크닉도 중요하지만 저희가 알고 넘어가야 할 것은 '층을 깊게 하는 것'이 왜 중요한지에 대한 이해입니다. 일단 결과론적으로 비전 쪽에서 제일 유명한 대회인 ILSVRC의 수상작들을 보면 층들이 매우 깊습니다. 이런 것을 보면 층이 깊으면 더 좋다는 건 알겠는데 왜 좋아지는지 그 이유에 대해 생각을 한번 해봅시다. 먼저 층이 깊어지면 학습해야할 신경망의 파라미터 개수가 줄어듭니다. 또한 출력 레이어 한 칸에 해당되는 입력 레이어 칸 수가 많아지게 되어 정확한 학습을 할 수가 없습니다. 이런 이유들로 층과 정확도는 비례하는 관계라는 것을 알 수 있습니다.

Vision Model

이미지 분야에서 절대 빼놓을 수 없는 대회인 ILSVRC 수상작들을 토대로 어떤 모델들이 있었나 보도록 하겠습니다. VGG, GoogLeNet, ResNet 등등이 있습니다. 이에 대한 자세한 설명은 http://ai-hub.kr/post/25/ 를 참고하세요.

GPU

딥러닝은 반드시 데이터의 양과 질이 충분해야 합니다. 또한 학습량도 많아서 시간이 많이 걸립니다. 이를 줄일 수 있는 혁신적인 방법이 바로 GPU입니다. 보통 nvidia에서 개발한 GPU를 가지고 cuda와 연동하여 사용합니다. 병렬 수치 연산을 고속으로 해주어 CPU로 학습하는 것과는 차원이 다른 속도를 보여줍니다.

Etc.

지금까지는 제일 기본적인 classification문제를 다뤘습니다. 그러나 딥러닝은 온갖 문제에 적용 가능합니다. 이미지, 자연어, 음성, 로봇 등 여러가지 분야에서 활용 될 수 있습니다. 특히 이미지 쪽에서도 classfication이 아닌 여러가지 문제들을 해결할 수 있습니다.

Object Detection

사물 검출 문제입니다. 이미지 속에 담긴 사물의 위치와 종류를 알아내는 것입니다. 이 것을 하기 위해선 R-CNN(Regions with Convolutional Neural Network)를 쓰면 좋습니다.

Segmentation

분할 문제입니다. 이미지를 픽셀 단위로 분류하는 것이죠. 여기서는 FCN이 많이 쓰입니다. 단 한 번의 forward처리로 모든 픽셀의 클래스를 분류해줍니다.

Generate Caption

비전과 자연어를 융합한 연구도 있습니다. 어떤 사진에 대해서 이 사진에 대한 설명을 만들어주는 것입니다.

Style Transfer

첫번째 사진과 두번째 사진을 통해 세번째 사진을 생성해주는 style transfer도 딥러닝으로 가능합니다. 스타일을 추출하여 적용시키는 것입니다.

DCGAN

위 이미지처럼 아예 새로운 이미지를 생성할 수도 있습니다. GAN(Generative Adversarial Network)의 발전된 모델로 이 세상에 존재하지 않는 이미지를 실제로 찍은 사진처럼 속일 수 있는 엄청난 모델입니다.

이 외에도 정말 많은 분야에서 쓰이고 있고 꾸준히 빠른 속도로 발전해나가고 있습니다. 딥러닝의 활용 가능성은 무궁무진하고 여러 도메인에서 유용하게 쓰이고 있습니다. 옛날에는 정말 말도 안된다고 생각했던 기술들이 지금 구현되고 발전되가고 있는 것을 보면 정말 신기하다는 생각이 많이 듭니다. 딥러닝에 관심을 갖게 된 여러분들이 책과 이 블로그를 토대로 딥러닝의 기초를 잘 다진 만큼 앞으로 열심히 킵고잉하다보면 다른 사람들이 파놓은 땅굴을 따라가는 사람이 아니라 어느새 땅굴을 직접 파고 있는 모습을 발견할 것이라 생각합니다. 모두 화이팅입니다!!