1.3 왜 딥러닝일까? 왜 지금일까?

  • 1989년 딥러닝의 핵심 아이디어인 합성곱 신경망과 역전파 소개.
  • 1997년 시계열을 위한 딥러닝의 기본인 LSTM(Long Short-Term Memory) 알고리즘 개발.
  • 그 이후 변화가 거의 없음.
    왜 2012년 이후 딥러닝이 부상하게 되었을까요?

머신 러닝의 진보는 다음 세 가지 기술적인 힘이 큰 역할을 했습니다.

  1. 하드웨어
  2. 데이터셋과 벤치마크
  3. 알고리즘 향상

1.3.1 하드웨어

CPU는 1990년부터 2010년 사이에 약 5000배 정도 빨라졌습니다. 그렇기에 작은 딥러닝 모델의 경우에는 노트북에서도 돌릴 수 있게 되었습니다.

하지만 컴퓨터 비전이나 음성 인식에서 사용되는 일반적인 딥러닝 모델들은 노트북보다 10배의 계산 능력이 필요합니다. 이런 상황에서 2000년대 게임 그래픽 성능 개발을 위한 대용량 고속 병렬 칩(그래픽 처리장치 GPU)가 발전하였고, GPU 제품을 위한 프로그래밍 인터페이서 CUDA를 출시하였습니다. 물리 모델링을 시작으로 신경망까지 병렬화가 가능해진 것입니다.

게임용 GPU인 NVIDIA TITAN X는 6.6 테라플롭의 단정도 연산 성능을 제공합니다. 이는 초당 6.6조 개의 float32 연산을 수행합니다. (PS에서 1초에 2~3억 연산을 가정하고 풀었는데 엄청난 속도입니다.) 큰 회사에서는 딥러닝을 위한 GPU 수백개로 딥러닝 모델을 훈련시킵니다.

이에 더하여 구글은 2016년에 텐서 처리 장치 프로젝트를 공개했습니다. 이 칩은 심층 신경망을 실행하기 위해 완전히 새롭게 설계한 것으로 최고 성능을 가진 GPU보다 10배 이상 빠르고 에너지 소비도 더 효율적입니다. (2017에 발표한 TPU는 180 테라플롭입니다.)

1.3.2 데이터

‘데이터의 바다’라는 용어가 있듯이 현재는 데이터가 매우 많습니다. 저장 장치의 발전, 데이터 셋을 수집하고 배포할 수 있는 인터넷의 성장은 머신 러닝에 필요한 데이터들을 마련할 수 있는 환경을 만들어주었습니다. 비디오에는 유튜브, 자연어에는 위키피디아, 이미지는 플리커 등 다양한 데이터가 존재하는 것이죠. 1400만 개의 이미지를 1000개의 범주로 구분한 ImageNet도 빼놓을 수 없는 데이터 셋입니다.

1.3.3 알고리즘

2009~2010년경에 몇 가지 간단하지만 중요한 알고리즘이 개선되면서 그래디언트를 더 잘 전파되게 만들어 주었고 상황이 바뀌었습니다.

  • 신경망의 층에 더 잘 맞는 활성화 함수(activation function)
  • 층별 사전 훈련(pretraining)을 불필요하게 만든 가중치 초기화(weight initialization) 방법
  • RMSProp과 Adam 같은 더 좋은 최적화 방법

이런 기술의 향상으로 10개 이상의 층을 가진 모델을 훈련시킬 수 있게 되었을 때 비로소 딥러닝이 빛을 발하기 시작했습니다.

2014~2016년 사이에 그래디언트를 더욱 잘 전파할 수 있는 배치 정규화batch normalization, 잔차 연결residual connection, 깊이별 분리 합성곱depthwise separable convolution 같은 고급 기술들이 개발되었습니다. 요즘에는 층의 깊이가 수천 개인 모델을 처음부터 훈련시킬 수 있습니다.24

1.3.4 새로운 투자의 바람

생략

1.3.5 딥러닝의 대중화

딥러닝의 대중화의 큰 주역은 도구들의 대중화입니다.

초창기 딥러닝은 C++와 CUDA의 전문가를 필요로 했지만, 요즘에는 기본 파이썬 스크립트 기술만 있으면 고수준의 딥러닝을 연구하는 데 충분합니다. 씨아노(Theano)텐서플로(TensorFlow) 와 같은 모듈들이 개발되었기 때문입니다. 또한 이런 툴을 더 편리하게 사용하기 위한 케라스 같은 사용자 편의 도구는 더욱 대중화를 이뤄낼 수 있었습니다.

1.3.6 지속될까?

딥러닝의 현재 상태를 AI의 혁명이라고 정의할 수 있는 몇 가지 특징이 있습니다. 지금부터 20년 후에는 신경망을 사용하지 않을지도 모르지만, 딥러닝과 딥러닝의 핵심 개념에서 직접 파생된 무엇인가를 사용할 것입니다. 이 중요한 특징은 크게 세 가지 범주로 나눌 수 있습니다.

  • 단순함: 딥러닝은 특성 공학이 필요하지 않아 복잡하고 불안정한 많은 엔지니어링 과정을 엔드-투-엔드로 훈련시킬 수 있는 모델로 바꾸어 줍니다. 이 모델은 일반적으로 5~6개의 텐서 연산만을 사용하여 만들 수 있습니다.
  • 확장성: 딥러닝은 GPU 또는 TPU에서 쉽게 병렬화할 수 있기 때문에 무어의 법칙 혜택을 크게 볼 수 있습니다. 또 딥러닝 모델은 작은 배치batch 데이터에서 반복적으로 훈련되기 때문에 어떤 크기의 데이터셋에서도 훈련될 수 있습니다(유일한 병목은 가능한 병렬 계산 능력이지만 무어의 법칙 덕택에 빠르게 그 장벽이 사라지고 있습니다).
  • 다용도와 재사용성: 이전의 많은 머신 러닝 방법과는 다르게 딥러닝 모델은 처음부터 다시 시작하지 않고 추가되는 데이터로도 훈련할 수 있습니다. 대규모 제품에 사용되는 모델에는 아주 중요한 기능인 연속적인 온라인 학습online learning을 가능하게 합니다. 더불어 훈련된 딥러닝 모델은 다른 용도로 쓰일 수 있어 재사용이 가능합니다. 예를 들어 이미지 분류를 위해 훈련된 딥러닝 모델을 비디오 처리 작업 과정에 투입할 수 있습니다. 더 복잡하고 강력한 모델을 만들기 위해 이전의 작업을 재활용할 수 있습니다. 또 아주 작은 데이터셋에도 딥러닝 모델을 적용할 수 있습니다.1
  1. 이미 학습된 모델의 층을 재사용하여 대부분을 구성하고 1~2개의 층만 새롭게 추가한다면 적은 수의 데이터셋으로도 규모의 모델을 만들 수 있습니다. 이런 경우 재사용되는 층의 가중치가 더 이상 학습되지 않게 동결시킬 수 있습니다. 5장과 7장에서 이에 대해 자세히 소개합니다. 

댓글남기기