Offcanvas

How To / 머신러닝|딥러닝

폭발적인 발전을 거듭 중··· '딥 러닝' 이해하기

2019.05.29 Martin Heller  |  InfoWorld
딥 러닝(Deep Learning)은 데이터에 존재하는 패턴을 복잡한 다계층 네트워크로 모델화하는 머신러닝의 일종이다. 딥 러닝은 문제를 모델화하는 가장 총체적인 방법이기 때문에, 컴퓨터 비전과 자연어 처리 같은 어려운 문제를 해결할 잠재력을 갖고 있다. 또 전통적인 프로그래밍, 기타 머신러닝 기법보다 낫다.

 

ⓒ Getty Images Bank 


어렵지만 유용한 딥 러닝 

딥 러닝을 이용하면 다른 방법으로는 불가능한 유용한 결과를 얻을 수 있다. 또 다른 방법보다 더 정확한 모델을 만들 수 있고, 유용한 모델을 만드는 데 소요되는 시간을 줄일 수 있다. 그러나 딥 러닝 모델 트레이닝에는 아주 높은 컴퓨팅 성능이 필요하다. 또 다른 단점은 딥 러닝 모델 해석이 어렵다는 것이다. 

딥 러닝은 아주 중요한 특징 한 가지를 갖고 있다. 트레이닝 할 모델의 인풋과 아웃풋 사이에 숨겨진 계층(hidden layer)이 한 개 이상 존재해야 한다는 것이다. 대부분의 담론에서 딥 러닝은 심층신경망(Deep Neural Networks, DNN)을 사용하는 것을 의미한다. 그러나 신경망 외에도, 다른 종류의 숨겨진 계층을 사용해 딥 러닝을 구현하는 알고리즘들이 소수 존재한다.


딥 러닝 대 머신러닝

딥 러닝은 머신러닝의 한 종류다. 필자는 많이 사용되는 용례에 부합하게 딥 러닝과 관련이 없는 머신러닝을 전통적 머신러닝으로 지칭할 것이다. 일반적으로 전통적 머신러닝 알고리즘이 딥 러닝 알고리즘보다 더 빠르게 실행된다. 

하나 이상의 CPU로 전통적 모델을 트레이닝시키기 충분한 경우가 많다. 딥 러닝 모델의 경우, 트레이닝과 대규모 배포에 GPU, TPU, FPGA 같은 하드웨어 엑셀레이터(가속기)가 필요한 때가 많다. 엑셀레이터가 없다면, 모델 트레이닝에 몇 달이 소요될 수도 있다.

일부 전통적 머신러닝 알고리즘은 많은 문제에서 ‘충분히 좋은’ 모델을 생산해줄 것이다. 그러나 과거를 비춰봤을 때, 전통적 머신러닝 모델이 적합하지 않은 문제들도 있다.


딥 러닝 애플리케이션 분야

딥 러닝이 있어야 최상의 모델이 생산되는 문제들이 많다. 자연어 처리 프로세스(Natural Language Processing, NLP)가 대표적인 예이다.

2016년 가을, 구글 번역의 영어-프랑스어, 영어-중국어, 영어-일본어 번역 아웃풋(결과) 품질이 갑자기 크게 개선됐다. 단순히 언어를 버무리는 수준에서 전문 번역가의 번역 품질에 근사한 문장을 만들어낸 것이다. 구글 브레인과 구글 번역 팀이 구글 번역을 크게 향상시킨 결과였다. 구문에 기반을 둔 통계적 머신 번역 알고리즘(전통적 머신러닝의 일종) 대신 단어 임베딩으로 훈련시킨 DNN을 사용한 결과였다. 여기에 텐서플로우(TensorFlow) 프레임워크가 사용됐다.

쉬운 프로젝트는 아니었다. 박사 학위를 소지한 연구원이 몇달 간 모델을 향상시켰고, 모델 트레이닝을 위해 수천 GPU를 몇 주 동안 가동했다. 구글은 이를 바탕으로 새로운 칩을 만들었다. 구글 번역만을 목적으로 대규모로 신경망을 실행시키는 TPU(Tensor Processing Unit)라는 칩이다.

구글 번역처럼 언어 번역 문제만 다를 수 있는 것이 아니다. ▲자동 요약(Automatic Summarization) ▲대용어 해소(Co-reference Resolution) ▲담화 분석(Discourse Analysis) ▲형태론적 구분(morphological segmentation) ▲개체명 인식(Named Entity Recognition, NER) ▲자연어 생성 ▲자연어 이해 ▲POS(Part of Speech) 태깅 ▲감성 분석(sentiment analysis) ▲스피치 인식(speech recognition) 등이 주요한 NLP 프로젝트가 될 수 있다.

또 다른 딥 러닝 애플리케이션의 좋은 예는 이미지 분류이다. 생물은 대뇌의 시각령(visual cortex)으로 이미지를 처리한다. 이에 많은 연구원들이 포유류의 시각령이 갖고 있는 구조를 이미지 인식용 신경망 모델로 가져와 적용하고 있다. 이런 생물학적 연구는 1950년대로 거슬러 올라간다.

이미지와 관련된 신경망 분야의 획기적인 발견은 1998년 얀 르쿤의 LeNet-5이다. 이는 손으로 쓴 숫자를 32x32 픽셀 이미지로 디지털화한 것을 인식하는 7계층의 콘볼루션 신경망(Convolutional Neural Network, CNN)이다. 고화질 이미지를 분석하기 위해서는 LeNet-5를 더 많은 신경과 계층으로 확대해야 한다.

현존하는 최고의 딥 이미지 분류 모델은 칼라 HD 해상도의 물체에서 다양한 목록들을 식별할 수 있다. 순수한 DNN에 더해, 때때로 하이브리드 모델을 사용하기도 한다. 특정 하위 작업을 수행하기 위해 딥 러닝과 전통적 머신러닝 알고리즘을 결합한 것이다.

딥 러닝으로 해결한 기본적인 이미지 분류 외에도, 다룰 수 있는 다른 이미지 관련 문제들은 ▲로컬화 이미지 분류(Image classification with localization) ▲객체 탐지(Object detection) ▲객체 분할(Object segmentation) ▲이미지 스타일 전이(Image style transfer) ▲이미지 색상화(Image colorization) ▲이미지 재구성(Image reconstruction) ▲이미지 슈퍼레졸루션(Image super-resolution) ▲이미지 합성(Image synthesis) 등이다.

이미지 분류는 비디오에서 개별 프레임을 추출해 각 프레임을 분류하는 비디오 분류로 확대 적용할 수 있다. 비디오에서 탐지한 객체를 프레임 별로 추적할 수 있다.

구글펠로우(Goodfellow), 벤지오(Bengio), 쿠빌(Courville)이 2016년 발표한 자료에 따르면, 딥 러닝을 성공적으로 사용해 분자의 반응 형태를 예측할 수 있었다. 이는 제약회사의 신약 고안, 이원자 입자 탐구, 인간 뇌의 3D 맵을 구성하기 위해 사용하는 현미경 이미지를 자동으로 채우는 것 등에 도움을 줬다.


딥 러닝 신경망 

‘인공’ 신경망의 개념은 1940년대 처음 만들어졌다. 서로 연결된 한계 스위치(Threshold switches)를 통해 만든 인공 신경(뉴런) 네트워크를 학습시켜, 동물의 뇌와 신경계(망막 포함)처럼 패턴을 인식할 수 있게 만들 수 있다는 개념이다.

- 오차역전파(Backpropagation, 역전파)
심층 신경망은 두 뉴런(신경)이 트레이닝 동안 동시에 활성화되었을 때 두 뉴런 간 연결을 강화해 학습을 발생시킨다. 현대적인 신경망 소프트웨어의 경우, 이는 일반적으로 오차역전파(backprop, BP)이라는 규칙을 사용, 뉴런 간 연결 가중값을 증가시키는 것을 의미한다.

- 뉴런(신경 단위)
모델화한 뉴런은 어떨까? 각각 연결된 뉴런의 아웃풋(많은 경우 가중합과 함께)을 전이시키는 전파 함수(Propagation function)를 갖고 있다. 이 전파 함수의 아웃풋은 활성화 함수(Activation function)로 전달된다. 인풋이 한계 값을 초과할 때 작동을 시작하는 함수다.

- 활성화 함수(Activation function)
1940년대와 1950년대 인공 뉴런은 단계 활성화 함수(Step activation function)를 사용했으며, 퍼셉트론(Perceptrons)이라고 불렀다. 현대적인 신경망에도 퍼셉트론이 사용되고 있다고 말할 수 있지만, 평활 활성화 함수(Smooth activation function)를 갖고 있다. 논리(Logistic), 시그모이드 함수(Sigmoid function), 쌍곡선 탄젠트(hyperbolic tangent), ReLu(Rectified Linear Unit)가 여기에 해당된다. 빠른 수렴(Convergence)에는 일반적으로 ReLU가 가장 좋다 그러나 학습 계수(Learning rate)를 너무 높게 설정하면 트레이닝 동안 뉴런이 '죽는’ 문제가 있다.
추가적인 모양을 만들기 위해, 활성 함수 아웃풋을 아웃풋 함수로 전달할 수 있다. 그러나 아웃풋 함수가 항등 함수(Identity function)인 경우가 아주 많다. 활성화 함수의 아웃풋이 하방 연결 뉴런으로 전달된다는 의미다.

- 신경망 토폴로지 
뉴런에 대해 알아봤다. 이제 일반적인 신경망 토폴로지에 대해 학습할 필요가 있다. 피드포워드 망(Feed-forward network)에서 뉴런은 별개의 계층으로 구성된다. 1개의 인풋 계층, 몇 개의 숨겨진 처리 계층, 1개의 아웃풋 계층이다. 그리고 각 계층의 아웃풋은 다음 계층으로만 전달된다.
빠른 연결 형태를 가진 피드포워드 망의 경우, 일부 연결이 하나 이상의 중간 계층을 건너뛸 수도 있다. 순환 신경망(Recurrent Neural Network, RNN)의 경우, 뉴런은 직접, 또는 다음 계층을 통해 간접적으로 스스로에게 영향을 줄 수 있다.

- 트레이닝
신경망 학습의 지도 학습(Supervised learning)은 다른 머신러닝과 유사하게 이뤄진다. 네트워크에 트레이닝 데이터 그룹을 제시하고, 네트워크 아웃풋을 원하는 아웃풋과 비교하고, 오류 벡터를 생성하고, 오류 벡터를 토대로 네트워크에 수정을 적용한다. 수정을 적용하기 앞서 함께 실행하는 트레이닝 데이터 배치를 에포크(Epoch)라고 부른다.
좀 더 세부적인 내용을 설명하자면, 오차역전파는 모델의 가중치 및 편향에 대해 오류(또는 대가) 함수의 기울기를 사용해 오류를 최소화시킬 수정의 방향을 찾는다. 최적화 알고리즘(optimization algorithm)과 학습 계수 변수(learning rate variable) 이 두 가지가 수정을 적용하는 것을 통제한다. 통상 수렴이 보장되고, ReLU 뉴런이 죽는 문제를 방지하기 위해 가능한 작아야 한다.
 
- 옵티마이저
신경망의 옵티마이저(Optimizers)는 일반적으로 경사 하강(Gradient descent) 알고리즘을 사용해 오차역전파를 견인한다. 임의로 선택한 미니-배치(확률적 경사 하강)을 최적화하는 등 국소 최소한도 문제가 발생하는 것을 피하고, 경사에 탄성 수정치를 적용하는 데 도움을 주는 메카니즘을 사용하는 경우도 많다. 일부 최적화 알고리즘은 경사(기울기) 기록들인 AdaGrad, RMSProp, Adam을 조사해 모델 파라미터의 학습 계수를 조정한다.
다른 모든 머신러닝과 마찬가지로, 별개의 검증 데이터 세트를 대상으로 신경망의 예측치를 확인할 필요가 있다. 이렇게 하지 않으면, 일반화된 예측 도구가 될 학습 대신 인풋만 기억하는 신경망이 만들어질 위험이 있다.

- 실제 DNN
실제 문제를 대상으로 하는 DNN은 10개 이상의 숨겨진 계층을 갖고 있어야 할지 모른다. 이 토폴로지는 단순할 수도, 꽤 복잡할 수도 있다. 네트워크에 계층이 많을 수록 인식할 수 있는 특징도 많아진다. 하지만 네트워크에 계층이 많을 수록 연산에 더 많은 시간이 소요되고, 트레이닝도 어려워진다.


딥 러닝 알고리즘

앞서 언급했듯, 대부분의 딥 러닝에 DNN을 사용한다. CNN(Convolutional Neural Networks)는 컴퓨터 영상에 많이 사용한다. RNN(Recurrent Neural Networks)는 자연어, 기타 시퀀스 프로세싱에 사용하는 때가 많다. LSTM(Long Short-Term Memory) 네트워크와 어텐션(Attention) 기반 신경망도 마찬가지다. 랜덤 포레스트(Random Forests)는 다양한 분류와 회귀 문제에 유용하지만 신경망은 아니다.

CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.