Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

MATLAB의 딥러닝

딥러닝이란?

딥러닝은 인간에게는 자연스러운 능력인 경험으로부터의 학습을 컴퓨터에게 가르치는 머신러닝의 한 분야입니다. 머신러닝 알고리즘은 미리 정해진 방정식을 모델로 하는 방법에 의존하지 않고 연산 방법을 사용하여 데이터로부터 직접 정보를 “학습”합니다. 딥러닝은 특히 얼굴 인식, 움직임 감지와 같은 문제를 해결할 때 중요한 영상 인식과 자율 주행, 차선 검출, 보행자 검출, 자율 주차와 같은 고급 운전자 보조 기술에 특히 적합합니다.

Deep Learning Toolbox™는 심층 신경망의 계층을 만들고 상호 연결하는 간단한 MATLAB®명령을 제공합니다. 다양한 예제와 사전 훈련된 신경망이 제공되기 때문에 고급 컴퓨터 비전 알고리즘이나 신경망에 대한 사전 지식이 없어도 쉽게 MATLAB을 딥러닝에 사용할 수 있습니다.

Deep Learning Onramp에서는 실용적인 딥러닝 기법들을 실습을 통해 무료로 소개합니다.

수행하고자 하는 작업 자세히 알아보기
전이 학습을 수행하여 데이터로 신경망 미세 조정

전이 학습을 사용하여 더 빠르게 딥러닝 시작하기

사전 훈련된 신경망이 새로운 작업을 학습하도록 미세 조정하는 것이 일반적으로 새로운 신경망을 훈련시키는 것보다 훨씬 더 빠르고 쉽습니다.

사전 훈련된 신경망으로 영상 분류 사전 훈련된 심층 신경망
분류 또는 회귀를 위한 새로운 심층 신경망 만들기

간단한분류용딥러닝신경망만들기

회귀를 위해 컨벌루션 신경망 훈련시키기

훈련 또는 예측을 위해 영상 크기 조정, 회전 또는 전처리 딥러닝을 위해 영상 전처리하기
폴더 이름을 바탕으로 영상 데이터에 자동으로 레이블을 지정하거나 앱을 사용하여 대화형 방식으로 레이블 지정

영상분류를위해신경망훈련시키기

영상 레이블 지정기(Computer Vision Toolbox)

시퀀스 및 시계열 데이터를 위한 딥러닝 신경망 만들기

딥러닝을 사용한 시퀀스 분류

딥러닝을 사용한 시계열 전망

영상 내 각각의 픽셀 분류(예: 도로, 차, 보행자) 딥러닝을 사용한 의미론적 분할 시작하기(Computer Vision Toolbox)
영상 내 사물 검출 및 인식 인식, 객체 검출 및 의미론적 분할(Computer Vision Toolbox)
텍스트 데이터 분류 딥러닝을 사용하여 텍스트 데이터 분류하기
음성 인식을 위해 오디오 데이터 분류 딥러닝을 사용해 음성 명령 인식하기
신경망이 학습한 특징 시각화

GoogLeNet을 사용한 딥 드림 영상

컨벌루션 신경망의 활성화 시각화하기

데스크탑에서 병렬로 또는 클라우드의 클러스터에서 CPU, GPU, 복수의 GPU로 훈련시키고, 커서 메모리에 담을 수 없는 데이터 세트를 사용해 작업

Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud

Deep Learning with Big Data

자율 주행을 비롯해 딥러닝 응용 분야에 대한 자세한 내용은딥러닝 응용 사례항목을 참조하십시오.

사전 훈련된 신경망을 사용할지 혹은 새로운 심층 신경망을 만들지 선택하려면 다음 표에 나와 있는 시나리오를 살펴보십시오.

전이 학습을 위해 사전 훈련된 신경망 사용 새로운 심층 신경망 만들기
훈련 데이터 수백에서 수천 개까지의 레이블 지정 영상(작음) 수천 개에서 수백만 개까지의 레이블 지정 영상
연산 적당한 연산(GPU는 선택 사항) 연산 집약적(속도를 위해 GPU 필요)
훈련 시간 몇 초에서 몇 분 현실 세계 문제의 경우 며칠에서 몇 주
모델 정확도 양호, 사전 훈련된 모델에 따라 다름 높음, 그러나 작은 데이터 세트에 대해 과적합될 수 있음

자세한 내용은신경망 아키텍처 선택하기항목을 참조하십시오.

딥러닝은 신경망을 사용하여 데이터에서 특징의 유용한 표현을 직접 학습합니다. 신경망은 생물 신경계에서 영감을 얻은 병렬로 동작하는 단순한 요소들을 사용하여 여러 비선형 처리 계층을 결합합니다. 딥러닝 모델은 사물 분류에서 뛰어난 정확도를 달성할 수 있으며, 때로는 인간의 정확도를 능가하기도 합니다.

모델은 대규모의 레이블 지정된 데이터와 많은 계층을 포함하는(보통 컨벌루션 계층도 포함) 신경망 아키텍처를 사용하여 훈련됩니다. 이러한 모델을 훈련시키는 데는 많은 양의 연산이 필요하며, 일반적으로 고성능 GPU를 사용하여 훈련 속도를 높일 수 있습니다. 다음 도식은 컨벌루션 신경망이 여러 영상에서 자동으로 특징을 학습하는 계층들을 결합하여 새로운 영상을 분류하는 방식을 보여줍니다.

많은 딥러닝 응용 분야에서 영상 파일을 사용하며, 때로는 수백만 개의 영상 파일이 사용되기도 합니다. 딥러닝에 사용할 수많은 영상에 효율적으로 액세스할 수 있도록 MATLAB은imageDatastore함수를 제공합니다. 이 함수를 사용하여 다음을 수행할 수 있습니다.

  • 머신러닝 및 컴퓨터 비전 응용 분야에서 더 빠른 처리 속도를 위해 영상 배치 자동으로 읽어 들이기

  • 너무 커서 메모리에 담을 수 없는 영상 컬렉션에서 데이터 가져오기

  • 폴더 이름을 바탕으로 영상 데이터에 자동으로 레이블 지정하기

MATLAB코드 10줄로 시작해 보는 딥러닝

이 예제에서는 MATLAB 코드 10줄만으로 딥러닝을 사용하여 라이브 웹캠의 사물을 식별하는 방법을 보여줍니다. 이 예제를 실행해 보면 MATLAB에서 딥러닝을 사용하는 것이 얼마나 간단한지 알 수 있습니다.

  1. 다음 명령을 실행하여 필요한 다운로드를 받아서 웹캠을 연결하고 사전 훈련된 신경망을 가져옵니다.

    camera = webcam;% Connect to the cameranet = alexnet;% Load the neural network

    webcamalexnet애드온을 설치해야 하는 경우 각 함수에서 링크가 포함된 메시지를 표시합니다. 이 링크를 통해 애드온 탐색기를 실행하여 무료 애드온을 다운로드할 수 있습니다. 또는Deep Learning ToolboxModelfor AlexNet NetworkMATLABSupport Package for USB Webcams를 참조하십시오.

    Deep Learning Toolbox Modelfor AlexNet Network를 설치한 후에 이를 사용하여 영상을 분류할 수 있습니다. AlexNet은 사전 훈련된 컨벌루션 신경망(CNN)입니다. 1백만 개가 넘는 영상에 대해 훈련된 AlexNet은 영상을 키보드, 마우스, 커피 머그잔, 연필, 각종 동물 등 1,000가지 사물 범주로 분류할 수 있습니다.

  2. 다음 코드를 실행하여 라이브 영상을 표시하고 분류합니다. 웹캠으로 사물을 가리키면 신경망에서 웹캠이 보여주는 사물이 어떤 클래스인지 추정해서 보고합니다. 사용자가Ctrl+C를 누를 때까지 신경망은 계속해서 영상을 분류합니다. 이 코드는imresize를 사용하여 신경망에 적합하게 영상 크기를 조정합니다.

    whiletrue im = snapshot(camera);% Take a pictureimage(im);% Show the pictureim = imresize(im,[227 227]);% Resize the picture for alexnetlabel = classify(net,im);% Classify the picturetitle(char(label));% Show the class labeldrawnowend

    이 예제에서 신경망은 커피 머그잔을 올바르게 분류합니다. 주변의 사물을 사용하여 신경망이 얼마나 정확한지 실험해 보십시오.

    이 예제를 비디오로 시청하려면Deep Learning in 11 Lines of MATLAB Code를 참조하십시오.

    이 예제를 확장하여 클래스의 확률 점수를 표시하는 방법을 알아보려면딥러닝을 사용하여 웹캠 영상 분류하기항목을 참조하십시오.

    딥러닝의 다음 단계로 넘어가서 다른 작업에도 사전 훈련된 신경망을 사용해 볼 수 있습니다. 전이 학습이나 특징 추출을 사용하여 영상 데이터를 대상으로 새로운 분류 문제를 풀어 보십시오. 예제는전이 학습을 사용하여 더 빠르게 딥러닝 시작하기사전 훈련된 신경망에서 추출한 특징을 사용하여 분류기 훈련시키기항목을 참조하십시오. 다른 사전 훈련된 신경망을 사용해 보려면사전 훈련된 심층 신경망항목을 참조하십시오.

전이 학습을 사용하여 더 빠르게 딥러닝 시작하기

전이 학습은 딥러닝 응용 분야에서 널리 사용됩니다. 사전 훈련된 신경망을 새로운 작업을 학습하기 위한 출발점으로 사용할 수 있습니다. 전이 학습을 통해 신경망을 미세 조정하는 것이 처음부터 훈련시키는 것보다 훨씬 더 빠르고 쉽습니다. 보다 적은 개수의 훈련 영상을 사용하여 신경망이 새로운 작업을 빠르게 학습하도록 할 수 있습니다. 전이 학습의 이점은 사전 훈련된 신경망이 다양한 이외의 비슷한 작업에 적용할 수 있는 수많은 특징을 이미 학습했다는 데 있습니다.

예를 들어, 수천 또는 수백만 개의 영상에서 훈련된 신경망을 가져오는 경우, 새로운 객체 검출에는 수백 개의 영상만 사용하여 다시 훈련시키면 됩니다. 원래의 훈련 데이터에 비해 훨씬 작은 데이터 세트를 사용하여 사전 훈련된 신경망을 효과적으로 미세 조정할 수 있습니다. 데이터셋의 크기가 매우 큰 경우에는 전이 학습이 새로운 신경망을 훈련시키는 것보다 더 빠르지 않을 수 있습니다.

전이 학습을 사용하면 다음과 같은 이점이 있습니다.

  • 사전 훈련된 신경망의 학습된 특징을 새로운 문제로 옮길 수 있습니다.

  • 전이 학습은 새로운 신경망을 훈련시키는 것보다 훨씬 쉽고 빠릅니다.

  • 훈련 시간과 데이터셋 크기를 줄일 수 있습니다.

  • 새로운 신경망을 처음부터 만드는 방법을 익히지 않고 딥러닝을 수행할 수 있습니다.

대화형 방식 예제는심층 신경망 디자이너를 사용한 전이 학습항목을 참조하십시오.

프로그래밍 방식 예제는새로운 영상을 분류하도록 딥러닝 신경망 훈련시키기항목을 참조하십시오.

사전 훈련된 신경망에서 추출한 특징을 사용하여 분류기 훈련시키기

특징 추출을 사용하면 훈련에 시간과 노력을 투입하지 않고도 사전 훈련된 신경망의 강력한 기능을 사용할 수 있습니다. 특징 추출은 딥러닝을 사용하는 가장 빠른 방법이 될 수 있습니다. 사전 훈련된 신경망에서 학습된 특징을 추출한 다음 예를 들어 서포트 벡터 머신(SVM — Statistics and Machine Learning Toolbox™ 필요)과 같은 분류기를 훈련시키는 데 이렇게 추출한 특징을 사용할 수 있습니다. 예를 들어,alexnet을사용하여훈련된SVM이훈련및검증세트에대해90%를상회하는정확도를달성할수 있는 경우, 전이 학습을 사용하여 미미한 정확도 개선을 얻는 것이 그다지 크게 득이 되지 않을 수 있습니다. 작은 데이터셋에서 미세 조정을 수행하는 경우에는 과적합의 위험이 따릅니다. 응용 사례에서 SVM으로 양호한 정확도를 달성하기 어려운 경우에는 미세 조정이라는 수고를 들여서 더 높은 정확도를 달성하는 것이 좋을 수 있습니다.

예제는사전 훈련된 신경망을 사용하여 영상 특징 추출하기항목을 참조하십시오.

CPU, GPU, 병렬 및 클라우드에서 빅데이터를 사용한 딥러닝

신경망은 본질적으로 병렬 알고리즘입니다. Parallel Computing Toolbox™를 사용하여 멀티코어 CPU, GPU(그래픽 처리 장치), 복수의 CPU와 GPU가 탑재된 컴퓨터 클러스터로 훈련을 분산하여 이러한 병렬 처리의 이점을 활용할 수 있습니다.

심층 신경망을 훈련시키는 데는 엄청나게 많은 양의 연산이 필요하며, 일반적으로 고성능 GPU를 사용하여 훈련 속도를 높일 수 있습니다. 적합한 GPU가 없는 경우에는 대신 하나 이상의 CPU 코어에서 훈련시킬 수 있습니다. 단일 GPU나 CPU에서, 또는 복수의 GPU나 CPU 코어에서 또는 클러스터에서 병렬로 컨벌루션 신경망을 훈련시킬 수 있습니다. GPU 또는 병렬 옵션을 사용하려면 Parallel Computing Toolbox가 필요합니다.

메모리에 담을 수 없을 정도로 큰 데이터 세트가 사용되는 문제를 풀기 위해 여러 개의 컴퓨터가 필요하지 않습니다. 컴퓨터 클러스터 없이도imageDatastore함수를 사용하여 데이터 배치로 작업할 수 있습니다. 그러나 클러스터를 사용할 수 있다면 다량의 데이터를 이리저리 이동하는 것보다 코드를 데이터 리포지토리에 두는 것이 도움이 될 수 있습니다.

대규모 데이터 세트를 사용한 딥러닝에 대한 자세한 내용은Deep Learning with Big Data항목을 참조하십시오.

관련 항목