딥러닝이란?

반드시 알아야 할 3가지

딥러닝은 사람에게는 자연스러운 일, 즉 예시를 통해 학습하는 것을 컴퓨터가 수행할 수 있도록 가르치는 머신 러닝 기법입니다. 딥러닝은 무인 자동차에서 활용되는 핵심 기술로, 자동차가 정지 신호를 인식하고 보행자와 가로등을 구별할 수 있도록 합니다. 딥러닝은 전화, 태블릿, TV 및 핸즈프리 스피커와 같은 가전의 음성 제어를 위한 핵심 요소입니다. 최근 딥러닝이 많은 관심을 받고 있습니다. 딥러닝을 통해 이전에는 불가능했던 결과를 도출합니다.

딥러닝에서는 컴퓨터 모델이 직접 이미지, 텍스트 또는 사운드로부터 분류 작업 방법을 학습합니다. 딥러닝 모델은 종종 사람의 능력을 넘어서는 최고 수준의 정확도에 도달하고 있습니다. 여러 레이어를 포함하는 신경망 아키텍처와 함께 레이블링된 대단위 데이터를 활용하여 모델이 학습됩니다.

딥러닝이 중요한 이유

딥러닝은 어떻게 이처럼 뛰어난 결과를 얻을 수 있을까요?

다시 말하면 정확성입니다. 딥러닝은 그 어느 때보다 높은 수준의 인식 정확도를 달성합니다. 이러한 정확성은 가전제품에서 사용자의 기대치를 충족할 수 있으며, 무인 자동차처럼 안전이 중요한 응용 분야에서는 중대한 요소로 작용합니다. 최근 딥러닝의 발전은 딥러닝을 통해 이미지의 객체를 분류하는 것과 같은 일부 작업에서 사람을 능가하는 수준까지 향상되었습니다.

1980년대에 처음 이론화된 딥러닝이 최근에 유용하게 된 두 가지 주된 이유가 있습니다.

  1. 딥러닝에는 방대한 양의 레이블 지정 데이터가 필요합니다. 예를 들어 무인 자동차를 개발하려면 수백만 장의 이미지 및 수천 시간 분량의 비디오가 필요합니다.
  2. 딥러닝에는 강력한 컴퓨팅 성능이 요구됩니다. 고성능의 GPU는 딥러닝에 효과적인 병렬 아키텍쳐를 갖고 있습니다. 개발 팀이 이를 클러스터 또는 클라우드 컴퓨팅과 함께 사용할 경우 몇 주씩 걸리던 딥러닝 네트워크의 학습 시간을 몇 시간 이내로 단축할 수 있습니다.

딥러닝 예제

딥러닝 응용 프로그램은 자율주행에서 의료기기에 이르기까지 여러 산업 분야에서 사용되고 있습니다.

자율 주행: 자동차 연구소에서는 정지 신호, 신호등과 같은 물체를 자동으로 탐지하는 데 딥러닝을 사용하고 있습니다. 또한 딥러닝은 보행자를 탐지하는 데도 사용되어 사고를 줄이는 데 기여하고 있습니다.

항공 우주 및 국방: 딥러닝은 위성에서 객체를 식별하여 관심 영역을 찾고 병력을 파견하기에 안전하거나 안전하지 않은 지역을 확인하는 데 사용됩니다.

의학 연구: 암 연구진은 암 세포를 자동으로 탐지하는 데 딥러닝을 사용하고 있습니다. UCLA 연구 팀은 딥러닝 애플리케이션에 암 세포를 정확히 식별하는 법을 학습하는 데 사용될 고차원 데이터 세트를 생성하는 첨단 현미경을 개발했습니다.

산업 자동화: 사람이나 물체가 기계와 안전 거리를 유지하지 않을 때 딥러닝이 이를 자동으로 탐지하여 중장비를 다루는 작업자를 더 안전하게 보호할 수 있습니다.

전자: 자동 청취 및 음성 번역에 딥러닝이 사용되고 있습니다. 예를 들어 사용자의 음성에 응답하고 사용자의 기호를 파악하는 가전 기기는 딥러닝 애플리케이션을 기반으로 합니다.

딥러닝 작동 방식

대부분의 딥러닝 방식은 신경망 아키텍처를 사용하는데, 이런 이유로 딥러닝 모델은 종종 심층 신경망으로 불립니다.

“딥”이라는 용어는 뉴럴 네트워크를 구성하는 숨겨진 레이어(Hidden Layer)의 수를 가리킵니다. 기존 뉴럴 네트워크는 숨겨진 레이어가 2-3개에 불과하지만 딥 네트워크는 150개까지 이르는 경우도 있습니다.

딥러닝 모델은 수동으로 특징을 추출하지 않고 데이터에서 직접 기능을 학습하는 신경망 아키텍처와 함께 레이블링된 대단위 데이터를 활용하여 훈련됩니다.

그림 1: 신경망은 상호 연결된 노드의 집합으로 구성되어 있는 레이어로 이뤄집니다. 네트워크에는 수십 개 또는 수백 개의 숨겨진 레이어가 있을 수 있습니다.

가장 널리 사용되는 딥 신경망 유형 중 하나가 CNN(Convolutional Neural Networks)이며 ConvNet이라고도 합니다. CNN은 입력 데이터에 대해 컨벌루션을 취함으로써 특징을 추출하며, 이때 2D 컨벌루션 레이어를 사용하는데 이미지와 같은 2차원 데이터 처리에 적합한 아키텍처입니다.

CNN을 사용하면 수동으로 특징 추출을 할 필요가 없으므로 이미지를 분류하는 데 사용되는 특징을 식별하지 않아도 됩니다. CNN은 이미지에서 직접 특징을 추출하여 작동됩니다. 관련 특징은 사전 훈련되지 않으며 네트워크가 이미지 모음에서 훈련하는 동시에 학습됩니다. 이러한 자동화된 특징 추출은 객체 분류와 같은 컴퓨터 비전 작업에서 딥러닝 모델을 매우 정확하게 구현합니다.

그림 2: 많은 컨벌루션 레이어가 있는 네트워크의 예제. 필터는 해상도가 서로 다른 각 훈련 이미지에 적용되고, 각 컨벌루션된 이미지의 출력은 다음 레이어의 입력으로 사용됩니다.

CNN은 수십 개 또는 수백 개의 숨겨진 레이어를 사용하여 이미지의 다른 특징을 감지하는 방법을 학습합니다. 숨겨진 모든 레이어는 학습된 이미지 특징의 복잡도를 증대합니다. 예를 들어 첫 번째로 숨겨진 레이어는 윤곽선을 감지하는 방법을 학습할 수 있으며 마지막에 숨겨진 레이어는 사람이 인식하려고 하는 객체의 모양에 특별히 맞춰진 복잡한 모양을 감지하는 방법을 학습할 수 있습니다.

머신 러닝과 딥러닝의 차이점은 무엇입니까?

딥러닝은 특수한 형태의 머신 러닝입니다. 머신 러닝 워크플로는 관련 특징을 이미지에서 수동으로 추출하는 것에서 시작합니다. 그런 다음, 해당 특징을 사용하여 이미지의 객체를 분류하는 모델을 만듭니다. 딥러닝 워크플로우에서는 관련 특징이 이미지로부터 자동으로 추출됩니다. 여기에 딥러닝은 “엔드 투 앤드” 학습방법을 수행하게 되는데, 네트워크에 원시 데이터와 과제(예:분류)가 주어지면 자동으로 어떻게 이를 수행할지 학습하게 됩니다.

또 다른 중요한 차이점으로 딥러닝은 데이터의 양에 비례하는 성능을 나타내는 반면 쉘로우 러닝(shallow learning)은 수렴하는 특성을 갖습니다. 머신러닝과 같은 쉘로우 러닝은 네트워크에 예제 및 학습 데이터를 추가하더라도 일정 수준에서 성능이 수렴합니다.

딥러닝 네트워크의 주요 이점은 데이터 크기가 증가함에 따라 네트워크가 계속 향상되는 경우가 많다는 것입니다.

그림 3. 자동차 분류에서 머신 러닝(왼쪽)과 딥러닝(오른쪽) 비교.

머신 러닝에서는 수동으로 특징과 분류기를 선택하여 이미지를 정렬합니다. 딥러닝을 사용하면 특징 추출 및 모델링 단계가 자동으로 수행됩니다.

머신 러닝과 딥러닝 중에서 선택하는 방법

머신 러닝은 응용 프로그램, 처리 중인 데이터의 크기 및 해결하려는 문제 유형에 따라 선택할 수 있는 다양한 기술과 모델을 제공합니다. 효과적인 딥러닝 응용 프로그램을 사용하려면 모델을 훈련시키기 위한 대용량 데이터(수천 개의 이미지)뿐 아니라 데이터를 신속하게 처리하기 위한 GPU(Graphics Processing Units)가 필요합니다.

머신 러닝과 딥러닝 중 한쪽을 선택할 때 고성능 GPU가 있는지 그리고 많은 레이블 지정 데이터가 있는지 여부를 검토해야 합니다. 둘 다 해당하지 않는다면 딥러닝 대신 머신 러닝을 사용하는 것이 더 나을 수 있습니다. 일반적으로 딥러닝이 더 복잡하기 때문에 적어도 수천 개의 이미지가 있어야 신뢰할 만한 결과를 얻을 수 있습니다. 고성능 GPU가 있으면 모델이 해당하는 모든 이미지를 분석하는 데 걸리는 시간이 줄어듭니다.

딥러닝 모델 생성 및 훈련 방법

사람이 객체 분류를 수행하기 위해 딥러닝을 사용하는 가장 일반적인 세 가지 방법은 다음과 같습니다.

기초부터 훈련시키기

기초부터 딥 네트워크를 훈련시키기 위해서는 레이블이 지정된 대용량 데이터 세트를 수집하고, 네트워크 아키텍처를 설계하여 특징과 모델을 학습합니다. 이 방법은 새로운 응용 프로그램이나 출력 카테고리가 많은 응용 프로그램에 유용합니다. 대용량의 데이터 및 학습 속도로 인해 이러한 네트워크가 일반적으로 훈련시키는 데 며칠 또는 몇 주가 걸리기 때문에 흔하지 않은 방식입니다.

전이 학습

대다수 딥러닝 응용 프로그램은 사전 훈련된 모델을 세밀하게 조정하는 방법인 전이 학습 방식을 사용합니다. 이 방식에서는 AlexNet 또는 GoogLeNet과 같은 기존 네트워크를 사용하여 이전에 알려지지 않은 클래스를 포함하는 새로운 데이터를 주입합니다. 네트워크를 수정한 후에는 1,000가지의 서로 다른 객체 대신 개 또는 고양이만 분류하는 것과 같은 새 작업을 수행할 수 있습니다. 또한 이 방식은 훨씬 적은 데이터(수백만 개가 아닌 수천 개의 이미지 처리)가 필요하다는 이점이 있으므로 계산 시간이 몇 분 또는 몇 시간으로 감소합니다.

전이 학습에는 기존 네트워크의 내부에 관한 인터페이스가 요구되며 네트워크를 수정하고 새로운 작업을 위해 향상시킬 수 있습니다. MATLAB®에는 전이 학습에 도움이 되도록 설계된 툴과 기능이 있습니다.

특징 추출

딥러닝에 관한 덜 일반적이지만 전문화된 접근 방식은 네트워크를 피처 추출기로 사용하는 것입니다. 모든 레이어는 이미지의 특정 특징을 학습해야 하므로 교육 과정 중에 언제든지 네트워크에서 이러한 특징을 가져올 수 있습니다. 이러한 특징은 SVM(서포트 벡터 머신)과 같은 머신 러닝 모델에 입력으로 사용할 수 있습니다.

GPU를 사용하여 딥러닝 모델 가속화

딥러닝 모델을 훈련하는 데에는 며칠부터 몇 주까지의 긴 시간이 필요합니다. 하지만, GPU 가속을 활용하면 괄목할만한 수준으로 처리 속도를 증폭할 수 있습니다. 이뿐만 아니라 GPU가 있는 MATLAB을 활용하면 신경망 훈련과 이미지 분류 문제를 위한 훈련 시간을 며칠에서 몇 시간으로 단축시킬 수 있습니다. 딥러닝 모델을 훈련시킬 때 MATLAB은 GPU를 명확히 프로그래밍하는 방법을 파악할 필요 없이 GPU(사용 가능한 경우)를 사용합니다.

그림 4: CNN을 처음부터 훈련하거나 전이 학습을 위해 사전 훈련된 모델을 사용하기 위한 Deep Learning Toolbox 명령.

딥러닝 응용 프로그램

사전 훈련된 심층 신경망 네트워크 모델을 사용하여 이전 학습 또는 특징 추출을 수행하여 문제에 관한 딥러닝을 신속하게 적용할 수 있습니다. MATLAB 사용자의 경우 사용 가능한 일부 모델에는 AlexNet, VGG-16 및 VGG-19와 importCaffeNetwork를 사용하여 가져온 Caffe 모델(예: Caffe Model Zoo)이 있습니다.

웹캠을 활용하여 AlexNet으로 객체 인식하기

MATLAB, 간편한 웹캠과 심층 신경망을 사용하여 주변의 객체를 식별할 수 있습니다.

사례: 딥러닝을 사용한 객체 검출

특정 이미지 또는 비디오를 식별하는 객체 인식 외에도 딥러닝은 객체 검출에 사용할 수 있습니다. 객체 검출 는 장면에서 객체를 인식하고 탐지하는 것을 의미하며 여러 객체가 이미지 내에 있을 수 있습니다.

MATLAB을 활용한 딥러닝

MATLAB을 이용하면 딥러닝이 용이해집니다. MATLAB은 대규모 데이터 세트를 관리할 수 있는 툴과 기능을 사용하여 머신 러닝, 신경망, 컴퓨터 비전 및 자율주행을 위한 특수 툴박스를 제공합니다.

MATLAB을 사용하면 전문가가 아니어도 단 몇 줄의 코드로 딥러닝을 수행할 수 있습니다. 신속하게 시작하고, 모델을 생성 및 시각화하며 서버 및 임베디드 기기에 모델을 배포해보십시오.

딥러닝용 MATLAB을 사용하면 팀은 다음과 같은 작업을 성공적으로 수행할 수 있습니다.

  1. 단 몇 줄의 코드로 모델 생성 및 시각화
  2. MATLAB을 사용하면 최소의 코드로 딥러닝 모델을 만들 수 있습니다. MATLAB을 사용하면 학습 매개 변수를 조정할 때 사전 훈련 모델을 신속하게 가져온 후 중간 결과를 시각화하고 디버그할 수 있습니다.

  3. 전문가가 아니어도 딥러닝 수행 가능
  4. MATLAB을 활용하여 딥러닝 영역에서 전문 지식을 습득할 수 있습니다. 대다수의 사람들은 딥러닝에 관한 교육 과정을 수강한 경험이 없습니다. 따라서 이러한 작업에 대해 배워야 합니다. MATLAB은 이 분야에 관한 학습이 실용적이고 이해하기 쉽도록 도움을 줍니다. 또한 MATLAB을 사용하는 도메인 전문가는 산업 또는 응용 분야에 관한 지식이 없을 수 있는 데이터 과학자에게 작업을 넘기지 않고도 딥러닝을 수행할 수 있습니다.

  5. 이미지 및 비디오의 지상 실측 자료 레이블 지정 자동화
  6. MATLAB을 사용하면 딥러닝 모델의 교육 및 테스트를 위해 이미지 내의 객체에 대화형 방식으로 레이블을 지정하고 비디오 내의 지상 실측 레이블 지정 작업을 자동화할 수 있습니다. 이 대화형 자동 방식을 통해 짧은 시간 안에 더 나은 결과물을 얻을 수 있습니다.

  7. 딥러닝을 단일 워크플로로 통합
  8. MATLAB은 여러 영역을 단일 워크플로로 통합할 수 있습니다. MATLAB을 사용하면 하나의 환경에서 생각하고 프로그래밍할 수 있습니다. 또한, 딥러닝용 툴과 기능뿐만 아니라 신호 처리, 컴퓨터 비전 및 데이터 분석 등의 딥러닝 알고리즘 영역에 제공되는 다양한 도메인을 제공합니다.

MATLAB을 사용하면 결과를 기존 응용 프로그램에 통합할 수 있습니다. MATLAB은 엔터프라이즈 시스템, 클러스터, 클라우드 및 임베디드 기기에 딥러닝 모델을 배포하는 작업을 자동화합니다.

딥러닝 특징 및 예제 코드를 가져오는 방법에 대해 자세히 알아보십시오.

관련 제품: MATLABComputer Vision Toolbox™Statistics and Machine Learning Toolbox™Deep Learning Toolbox™, Automated Driving Toolbox™.

딥러닝 자세히 알아보기

이 MATLAB Tech Talk에서 딥러닝의 기본 사항을 살펴보십시오. 딥러닝이 널리 사용된 이유를 알아봅니다. 딥러닝은 무엇이며, 실제 활용 방법, 그리고 딥러닝을 시작하는 3가지 방법을 소개합니다.
MATLAB, 간편한 웹캠과 뉴럴 네트워크 사용 방법을 확인하여 주변의 물체를 식별해보십시오. 이 데모에서는 수백만의 이미지로 사전 훈련된 딥 컨벌루션 뉴럴 네트워크인 AlexNet을 사용합니다.
딥러닝 네트워크를 사용하여 시맨틱 분할을 위한 하이 레벨 워크플로에 대해 알아보십시오. 또한 Image Labeler 앱이 픽셀 수준에서 지상 실측 레이블 지정을 통해 워크플로를 어떻게 신속하게 처리할 수 있는지 알아보십시오.
UCLA 연구원은 유동 세포 분석법, 포토닉 타임 스트레치(Photonic Time Stretch) 및 머신 러닝 알고리즘을 결합한 영상 시스템을 사용하여 생체지표 레이블을 사용하지 않고도 혈액 샘플에서 암세포를 분류할 수 있습니다.
MATLAB의 머신 러닝 기술을 사용하여 이미지 내의 고유한 특징을 기반으로 장면을 인식할 수 있습니다.
이 문서에서는 간단한 객체 검출 및 인식 예제를 사용하여 고급 컴퓨터 비전 알고리즘이나 신경망 대한 광범위한 지식 없이도 MATLAB®을 사용하여 딥러닝을 쉽게 수행하는 방법을 설명합니다.