무료로 공부할 수 있는 엔비디아 딥 러닝 실습 강의에 대해 알아봅시다

by NVIDIA Korea

엄마가 아이에게 사물의 이름을 가르쳐줄 때, 사물이 그려져 있는 낱말카드를 들고 아이에게 반복해서 알려주곤 합니다. 이 학습법이 바로 딥 러닝 개념인데요, 딥 러닝이란 반복적인 학습을 통해 컴퓨터가 스스로 사물의 개념을 이해하도록 하는 것입니다.

기계가 스스로 학습하게 하는 딥 러닝은 인공지능의 핵심 기술이라고 할 수 있는데요, 엔비디아는 딥 러닝 생태계 확장을 위해 오프라인 딥 러닝 교육 뿐 아니라, 기초 이론과 해당 코드 실습을 무료로 할 수 있는 Online Self-Paced Lab을 오픈하고 있습니다!

무료로 오픈되어 있는 Self-Paced Lab 강의 중 이번에 소개해 드리는 Image Classification with DIGITS 강의를 통해 로봇에게 어떻게 “빵”의 개념을 학습시킬 수 있는지 간단한 이론과 실습 통해 공부해 보시기 바랍니다.

아직 딥 러닝의 기초 개념들이 친숙하지 않으시다면, 딥 러닝 기초 이론 및 해당 코딩 실습(Application of Deep Learning with Caffe, Theano and Torch) 강의부터 듣고 오시는 것을 추천합니다!

 

Image Classification with DIGITS 에서는 어떤 내용을 다룰 수 있을까?

엔비디아 딥 러닝 교육 프로그램에서 만나보실 수 있는 엔비디아 DIGITS(NVIDIA DIGITS™)은 엔비디아가 자체 개발한 딥 러닝 프레임워크인데요, 복잡한 코딩 없이 딥 러닝을 돌려볼 수 있답니다!

이 강의에서는 DIGITS을 통해 라벨링된 클린 데이터를 사용하여 뉴럴 네트워크트레이닝하는 방법을 배울 수 있습니다. 강화 학습된 이미지 분류 작업 (Supervised Image Classification)을 통한 딥 러닝 실습 방법을 안내하게 될 텐데요. 제공 받은 대량의 이미지, 그리고 그 이미지에 부착된 라벨에 기반하여 새로운 이미지 라벨을 예측할 수 있는 툴을 개발할 수 있습니다.

본 강의는 딥 러닝으로 시도될 수 있는 새로운 기술들을 구현하는 것을 목표로 합니다.

강의를 통해 함께 살펴보게 될 항목은 다음과 같습니다:

  • ‘트레이닝’ vs. ‘프로그래밍’ 의 개념
  • 인공지능에서 데이터의 역할
  • 뉴럴 네트워크 트레이닝을 위해 데이터를 로드하는 방법
  • 딥 러닝에서 네트워크의 역할
  • 데이터로 모델을 트레이닝시키는 방법

이 강의를 수료할 때쯤이면 수강생 여러분들 모두 전형적인 딥 러닝 과제 해결을 위해 성공적으로 이미지를 분류할 수 있도록 트레이닝된 뉴럴 네트워크를 갖게 될 것입니다. 그럼 강의에서 다루는 내용을 좀 더 구체적으로 알아볼까요?

 

트레이닝 vs. 프로그래밍

인공지능(AI)과 기존 프로그래밍 간의 근본적인 차이점은 인공지능은 학습을 하는 반면, 전통적인 알고리즘은 프로그래밍된다는 것입니다. 아래 예시를 통해 이 차이를 보다 자세히 살펴보도록 하겠습니다.

로봇에게 전통적인 컴퓨터 프로그래밍 방식을 통해 샌드위치를 만드는 방법을 지시해야 한다고 가정해 봅시다. 샌드위치를 만들기 위해서는 빈 접시에 빵 두 조각을 먼저 놓아야겠죠? “빈 접시에 빵 두 조각을 놓는다.”에 해당하는 알고리즘을 로봇에게 입력시키면 “NameError” 오류가 뜨게 될 것입니다. 아직 이 로봇은 “빵”이 무엇인지 모르기 때문이죠! 그렇다면 여러분은 어떻게 로봇이 “빵”을 정의하도록 만들 수 있을까요? 그렇다면 여러분은 어떻게 로봇이 “빵”을 정의하도록 만들 수 있을까요? 또, 빵 외의 다른 재료들을 조합하는 방식을 학습시키기 위해서는 어떻게 하면 좋을까요?

컴퓨터는 단지 각 픽셀(pixel) 별로 빨강(red), 파랑(blue), 녹색(green) 세 색상 성분이 갖는 값에 따라 이미지를 “인식”합니다. 그 밖에 다른 모든 것을 컴퓨터가 알도록 만들기 위해서는 픽셀이라는 용어에 국한하여 설명해야 했습니다.

인공지능은 이와 다른 접근법을 취합니다. 명령어를 입력하는 대신 예시를 제공하지요. 위에서 우리는 로봇에게 수천 장의 라벨링된 빵 이미지와 다른 여러 사물들의 라벨링된 이미지들을 제시할 수 있었고, 로봇이 그 차이를 학습하도록 만들 수 있었습니다. 우리의 로봇은 새로운 픽셀들(이미지)의 그룹을 빵으로 식별하는 자체 프로그램을 개발할 수 있었습니다.

이제는 명령어를 입력하는 대신, 학습하도록 설계된 데이터와 컴퓨터가 필요합니다

 

인공지능에서 데이터 역할

* 데이터: 빅 데이터의 시대에서 우리는 하루에 250경(1018)바이트에 달하는 데이터를 생성합니다. 무료 데이터셋은 캐글(Kaggle.com)UCI 같은 출처로부터 이용할 수 있는데요. 크라우드소스(Crowdsourced) 데이터셋은 창의적인 접근법을 거쳐 마련됩니다. 가령, 페이스북은 유저들에게 사진 속 친구들을 “태그(tag)”할 것을 요청하여 라벨링된 안면 인식(facial recognition) 데이터셋을 만들지요. 한편, 보다 복잡한 데이터셋은 전문가들에 의해 수동으로 형성되는데요. 방사선 전문의에게 심장의 특정 부위에 라벨 부착을 요청하는 것이 그와 같은 사례에 해당된다고 할 수 있습니다

* 학습하도록 설계된 컴퓨터 – 소프트웨어: 인공신경망(artificial neural networks)은 인간의 두뇌에서 영감을 얻은 것으로, 생물학적으로 대응되는 부분들과 마찬가지로, 복잡한 개념을 이해하고 재현할 수 있도록 구조화되어 있습니다. 인공신경망의 가장 큰 장점은 데이터 및 피드백을 통해 학습할 수 있는 능력이 있다는 것입니다. 딥 러닝에서 “딥(deep)”은 네트워크의 성능에 기여하는 여러 층의 인공 뉴런을 의미합니다.

* 학습하도록 설계된 컴퓨터 – 하드웨어: 딥 러닝을 구동하는 컴퓨팅은 집약적이지만 복잡하지는 않습니다. 딥 네트워크(deep networks)를 통해 방대한 데이터셋을 처리하는 것은 GPU 특화된 병렬 처리로 가능합니다.

그렇다면 우리는 인공신경망을 어떻게 데이터에 노출시킬 수 있을까요?

강의가 끝날 때쯤이면 프로그래머가 입력한 대로 작동하는 방식이 아닌, 학습한 내용으로 문제를 해결할 수 있도록 트레이닝된 모델을 개발하는 DNN에 데이터를 로드하는 방법을 알 수 있을 것입니다.

 

손 글씨로 쓰여진 숫자를 인식하는 네트워크 트레이닝

컴퓨터는 이미지를 픽셀 값의 군집으로 “인식”하기 때문에 해당 픽셀이 뜻하는 바를 알지 못하면 비주얼 데이터로는 아무 것도 할 수 없는데요.

만약 손 글씨로 쓰여진 숫자를 디지털 숫자로 쉽게 변환할 수 있다면 어떨까요?

1.우체국에서 우편물 더미를 우편번호로 분류하도록 도울 수 있게 됩니다. 이는 얀 레쿤(Yann LeCun) 교수에게 동기를 불어넣는 문제인데요. 얀 레쿤 교수와 그의 연구진은 오늘날 우리가 사용하는 데이터셋과 뉴럴 네트워크를 조합하여 지금 알려져 있는 딥 러닝의 대부분을 공들여 개척해냈답니다.

2. 수학 숙제를 자동으로 채점하여 교사들을 도울 수 있게 됩니다. 이 문제는 answer.ky  연구팀에 동기를 부여했습니다. answer.ky 연구팀은 얀 교수의 작업을 활용해서 지금 우리가 해야 하는 작업과 같은 워크플로우를 통해 현실세계의 문제를 간단히 해결했습니다.

3.우리는 수많은 다른 도전 과제들 또한 해결할 수 있었습니다. 여러분은 무엇을 개발할 계획을 갖고 있나요?

우리는 손으로 쓴 숫자 0부터 9까지를 인식할 수 있는 DNN을 트레이닝할 예정인데요. 이 도전 과제는 “이미지 분류”라고 하며, 우리의 네트워크가 어떤 이미지가 어떤 종류, 또는 그룹에 속하는지 결정할 수 있습니다.

 

예시를 함께 봅시다:

다음 이미지는 숫자 ‘4’ 종류에 포함되어야 합니다.

 

 

 

 

그 다음 이미지는 숫자 ‘2’ 종류에 포함되어야 합니다:

 

 

 

 

이와 같은 워크플로우가 대부분의 이미지 분류 작업에 공통적으로 포함되어 있다는 것을 숙지하는 것은 중요하며, 이는 딥 러닝으로 문제를 해결하는 방법을 학습하기 위한 탁월한 출발점일 것입니다.

핵심 개념들을 이해하셨다면, 이제 DIGITS로 본격적인 실습을 시작해 보세요!

실습 강의 듣기