eBook

섹션

딥러닝이란?

딥러닝은 머신러닝의 한 유형으로, 모델이 영상, 텍스트, 사운드에서 직접 분류 작업을 수행하는 방법을 학습합니다. 딥러닝은 일반적으로 신경망 아키텍처를 사용하여 구현됩니다. 딥러닝의 '딥'이란 용어는 신경망의 계층 수를 나타내며, 계층이 많을수록 신경망은 더욱 깊어집니다. 기존의 신경망은 2~3개의 계층만 포함하지만, 심층 신경망에는 수백 개의 계층이 있을 수 있습니다.

딥러닝이란?
딥러닝 응용 사례
섹션

딥러닝의 실사용 예

딥러닝은 얼굴 인식, 텍스트 번역, 음성 인식, 그리고 차선 분류 및 교통 표지판 인식 등의 첨단 운전자 보조 시스템과 같은 식별 응용 사례에 특히 적합합니다.

  • 자율주행 차량의 경우 횡단보도에 접근하면 감속합니다.
  • ATM의 경우 위조 지폐를 거부합니다.
  • 스마트폰 앱의 경우 외국의 도로 표지판을 즉시 번역합니다.
섹션

딥러닝을 가능하게 만드는 요소

세 가지 주요 기술의 발전으로 딥러닝의 실현 가능성이 대폭 증가했습니다. 아래 슬라이드쇼를 넘겨보면 각각에 대해 살펴볼 수 있습니다.

  심층 신경망의 기본   

섹션

심층 신경망의 내부

심층 신경망은 생물학적 신경계에서 영감을 받아 병렬로 작동하는 단순 요소를 사용하여 여러 비선형 처리 계층을 결합합니다. 심층 신경망은 입력 계층, 여러 은닉 계층, 출력 계층으로 구성됩니다. 각 계층은 노드 또는 뉴런을 통해 서로 연결되며, 각 은닉 계층은 이전 계층의 출력을 입력으로 사용합니다.

딥러닝이란?
섹션

심층 신경망의 학습 방법

여러분에게 각각의 영상에 네 개의 다른 범주에 속하는 물체 중 하나가 있는 영상의 집합이 있는데 이를 딥러닝 신경망을 통해 각 영상에 어떤 물체가 있는지 자동으로 인식하도록 만들려는 상황이 있다고 가정해 보겠습니다. 여러분은 신경망의 훈련 데이터를 확보하기 위해 영상에 레이블을 지정해야 합니다.

신경망은 이 훈련 데이터를 사용하여 물체 고유의 특징을 이해하고 이에 맞는 범주와 연관시킬 수 있습니다.

신경망의 각 계층은 이전 계층에서 데이터를 받아 변환한 후 다음 계층으로 전달합니다. 신경망에서는 각 계층을 통과하면서 학습한 내용의 복잡도와 세부 정보가 증가하게 됩니다.

신경망은 데이터에서 직접 학습하며 여러분은 학습 중인 특징에 어떠한 영향도 미치지 않는다는 점에 유의해야 합니다.

Deep Learning with MATLAB: Transfer Learning in 10 Lines of Code

Learn how to perform transfer learning in 10 lines of MATLAB code for an image classification task, and why transfer learning is important for many applications.

 딥러닝의 기본 사항에 대해 자세히 알아보기

컨벌루션 신경망

심층 신경망은 생물학적 신경계에서 영감을 받아 병렬로 작동하는 단순 요소를 사용하여 여러 비선형 처리 계층을 결합합니다. 심층 신경망은 입력 계층, 여러 은닉 계층, 출력 계층으로 구성됩니다. 각 계층은 노드 또는 뉴런을 통해 서로 연결되며, 각 은닉 계층은 이전 계층의 출력을 입력으로 사용합니다.

컨벌루션 신경망(CNN 또는 ConvNet)은 딥러닝에서 가장 많이 사용되는 알고리즘 중 하나입니다. CNN은 다른 신경망과 마찬가지로 입력 계층, 출력 계층, 그리고 그 사이의 여러 은닉 계층으로 구성됩니다.

섹션

특징 검출 계층

이러한 계층에서는 데이터에 대해 세 가지 연산 유형인 컨벌루션, 풀링, ReLU(Rectified Linear Unit) 중 하나를 수행합니다.

컨벌루션 계층은 입력 영상을 일련의 컨벌루션 필터에 통과시킵니다. 각 필터는 영상에서 특정 특징을 활성화합니다.

풀링 계층은 비선형 다운샘플링을 수행하여 신경망이 학습해야 하는 파라미터의 개수를 줄임으로써 출력을 단순화합니다.

ReLU(Rectified Linear Unit) 계층은 음수 값은 0에 매핑하고 양수 값은 그대로 두어서 더 빠르고 효과적인 훈련이 이루어지도록 합니다.

이러한 세 가지 연산이 수십 또는 수백 개의 계층에 대해 반복되며, 각 계층은 서로 다른 특징을 검출하도록 학습합니다.

CNN 소개
CNN 소개
섹션

분류 계층

특징 검출 이후에 CNN 아키텍처는 분류로 이동합니다.

마지막에서 두 번째 계층은 K 차원의 벡터를 출력하는 FC(완전 연결 계층)인데, 여기서 K는 신경망이 예측할 수 있는 클래스의 개수입니다.  이 벡터는 분류 대상 영상의 각 클래스에 대한 확률을 포함합니다.

CNN 아키텍처의 마지막 계층은 소프트맥스 함수를 사용하여 분류 출력을 제공합니다.

딥러닝 시작하기

섹션

딥러닝이 처음이라면, 빠르고 쉽게 시작할 수 있는 방법은 100만 개 이상의 영상으로 훈련된 CNN인 GoogLeNet과 같은 기존 신경망을 사용하는 것입니다. GoogLeNet은 영상 분류에 가장 일반적으로 사용됩니다. 키보드, 컴퓨터 마우스, 연필, 기타 사무용 기기는 물론 다양한 품종의 강아지, 고양이, 말, 기타 동물 등 1,000가지의 다른 범주로 영상을 분류할 수 있습니다.

GoogLeNet 사용 예

GoogLeNet을 사용하면 모든 영상의 물체를 분류할 수 있습니다. 이 예에서는 GoogLeNet을 사용하여 데스크탑에 설치된 웹캠의 영상에서 물체를 분류합니다.  MATLAB® 외에도 다음과 같은 제품을 사용합니다.

GoogLeNet을 불러온 후 웹캠에 연결하여 실시간 영상을 캡처합니다.

camera = webcam;           % Connect to the camera 
nnet = googlenet;          % Load the neural net 
picture = camera.snapshot; % Take a picture 

이후, 영상의 크기를 GoogLeNet에서 요구하는 크기인 224x224 픽셀로 조정합니다.

 picture = imresize(picture,[224,224]); % Resize the picture 

이제 GoogLeNet이 영상을 분류할 수 있습니다.

label = classify(nnet, picture); % Classify the picture 
image(picture);                  % Show the picture 
title(char(label));              % Show the label 
커피 컵
섹션

기존 신경망 재훈련

원래 신경망에서 훈련되지 않은 물체에 대해 GoogLeNet을 사용하려면 전이 학습을 통해 재훈련을 할 수 있습니다. 전이 학습은 한 가지 유형의 문제에 대한 지식을 연관성이 있지만 다른 유형의 문제에 적용하는 접근법입니다. 이 경우 신경망의 마지막 세 계층을 잘라내고 자체 영상으로 재훈련시키면 됩니다.

기존 신경망 재훈련
섹션

딥러닝을 위한 연산 리소스

딥러닝 모델 훈련에는 데이터의 크기와 가용 처리량에 따라 몇 시간, 며칠, 몇 주가 걸릴 수 있습니다. 워크플로를 설정할 때 연산 리소스를 선택하는 것은 매우 중요한 고려 사항입니다.

현재 널리 사용되는 세 가지 연산 옵션은 다음과 같습니다: CPU 기반, GPU 기반, 클라우드 기반 연산.

CPU 기반 연산은 가장 단순하고 쉽게 사용할 수 있는 옵션입니다. 이전 섹션에서 다룬 예제가 CPU에서 동작하긴 하지만, CPU 기반 연산은 사전에 훈련된 신경망을 사용하는 간단한 예제인 경우에만 사용하는 것이 좋습니다.

GPU 기반 연산을 사용하면 신경망 훈련 시간이 며칠에서 몇 시간으로 단축됩니다. 추가적으로 프로그래밍하지 않고도 MATLAB에서 GPU를 사용할 수 있습니다. NVIDIA® Compute Capability 3.0 지원 GPU가 권장됩니다. 여러 개의 GPU를 사용하면 처리 속도를 더욱 향상할 수 있습니다.

클라우드 기반 GPU 연산의 경우 하드웨어를 직접 구입하고 설정할 필요가 없습니다. 로컬 GPU를 사용하기 위해 작성한 MATLAB 코드의 설정 몇 개만 변경하면 클라우드 리소스를 사용하도록 확장할 수 있습니다.