메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

(모두를 위한) 딥러닝을 배우는 방법?

한빛미디어

|

2021-09-13

|

by 제러미 하워드 외

2,402

"딥러닝은 강력한 신기술이며, 여러 분야에 걸쳐 적용되어야 합니다. (꼭 개발자가 아니더라도) 각 분야의 전문가가 해당 분야에서의 새로운 활용법을 찾을 가능성이 가장 높으며, 딥러닝을 잘 사용하려면 학문적 배경이 다양한 더 많은 인력이 필요합니다. 우리는 가능한 한 많은 사람이 딥러닝을 사용하기를 바랍니다."

- 제러미 하워드, fast.ai 공동 설립자

 

많은 사람이 딥러닝(deep learning)으로 좋은 결과를 얻기란 매우 어렵다고 생각합니다. 하지만 이는 사실이 아닙니다. 다음은 세계 최상급 딥러닝 결과물을 만들 때 전혀 필요 없는 몇 가지 요소입니다. 

 

불필요요소.png

[딥러닝에 필요하지 않은 요소]

 

딥러닝은 여러 계층의 인공 신경망을 사용해 데이터를 추출하고 변형하는 컴퓨터 기술입니다. 활용 범위는 음성 인식부터 동물 이미지 분류까지 다양하죠. 각 계층의 출력은 다음 순서의 계층에 입력으로 쓰이며, 이 과정을 계속 반복하면서 데이터는 점진적으로 정제됩니다. 그리고 각 계층은 오차를 최소화하고 정확도를 개선하는 알고리즘으로 학습이 이루어집니다. 이런 과정을 거쳐 신경망이 특정 작업을 수행하는 방법을 배우죠. 

 

딥러닝은 강력하고, 유연하며, 단순합니다. 그래서 딥러닝을 여러 분야에 걸쳐 적용할 수 있습니다. 예를 들면 사회 과학, 물리, 예술, 의학, 금융, 과학적 연구 등의 분야가 포함됩니다. 저 같은 경우에는 의학적 배경지식은 없었지만 딥러닝 알고리즘을 사용해 질환과 질병을 진단하는 엔리틱(Enlitic) 사를 창업할 수 있었습니다. 창업한 지 몇 달 만에 방사선 전문의보다 더욱 정확하게 악성 종양을 판단하는 알고리즘(https://oreil.ly/aTwdE)을 발표하기도 했죠.

 

여러 학문에 활용된 딥러닝 사례

딥러닝을 많이 활용한 기법으로 세계 최고 수준의 결과를 끌어낸 다양한 분야의 예시를 살펴봅시다. 

 

자연어 처리(NLP) : 질의응답, 음성 인식, 문서 요약, 문서 분류, 문서에서 정보(예: 이름, 날짜) 검색, 특정 개념을 언급한 기사 검색

영상 처리 : 위성과 드론 이미지 해석(예: 재난 구조 현장), 얼굴 인식, 이미지에 설명 달기, 교통 표지판 판독, 자율 주행차에서 보행자와 다른 차량의 위치 파악

의학 : 방사선 이미지(예: CT, MRI, 엑스레이)의 이상 탐지, 병리 슬라이드의 특징 집계, 초음파 특징 측정, 당뇨병성 망막증 진단

생물학 : 단백질 접힘, 단백질 분류, 종양 염기서열 분석 및 임상적으로 실행할 수 있는 유전자 돌연변이 분류와 같은 유전체학(게놈) 관련 작업, 세포 분류, 단백질 또는 단백질 상호작용 분석

이미지 생성 : 이미지 채색, 이미지 해상도 개선, 이미지 보정, 유명한 예술가의 스타일로 이미지 변형

추천 시스템 : 웹 검색, 상품 추천, 홈페이지 레이아웃 

게임 플레이 : 체스, 바둑, 대부분의 아타리 비디오 게임, 실시간 전략 게임

로봇공학 : 정확한 위치를 찾기 어렵거나(예: 투명하고, 빛나고, 질감이 없는) 집어 올리기 어려운 물체 다루기

기타 활용 분야 : 금융, 물류 예측, 텍스트 음성 변환 등 다양한 분야에서 활용 

 

딥러닝을 응용하는 방법은 다양하지만, 거의 모든 사례가 신경망이라는 단일 모델에 기초한다는 사실을 기억해둘 필요가 있습니다. 

 

딥러닝을 배우는 방법

좀더 쉬운 이해를 돕기 위해 <Making Learning Whole>(Jossey-Bass, 2009)를 저술한 하버드 대학의 교수 데이비드 퍼킨스(David Perkins)가 교육에 관해 이야기한 내용으로 시작합니다. 기본 아이디어는 게임 전체(whole game)를 가르치는 것입니다. 야구를 가르치는 상황을 가정해봅시다. 가장 먼저 사람들을 야구 경기에 데려가거나 게임을 직접 하도록 유도해야 합니다. 이러한 기초 과정도 없이 야구공을 감아치는 방법, 포물선의 물리학, 방망이에 맞은 공의 마찰 계수를 가르치진 않죠.

 

한동안 꽤 알려졌던 수필 'A Mathematician’s Lament(https://oreil.ly/yNimZ)'를 작성한 폴 록하트(Paul Lockhart)는 수학을 가르치는 방식을 '끔찍한 방법으로 음악과 예술을 가르치는 악몽 같은 세계'로 묘사합니다. 그런 세상에서는 악보와 이론을 익히고 악보를 다른 키로 조옮김하는 방식을 배우는 데 소요되는 10년 동안 음악을 듣거나 연주할 수 없습니다. 미술도 마찬가지입니다. 학생들은 색상과 소도구의 역할을 공부하지만 대학생이 될 때까지 실제 그림을 그려볼 수 없습니다. 

 

어리석은 말이라고 생각하나요? 하지만 현재 수학 교육 방식이 이렇습니다. 나중에 도움이 된다는 가정하에 수년 동안 딱딱하고 단절된 기초를 기계적으로 암기해야만 하죠. 그 결과 대부분의 학생은 수학을 포기하기에 이릅니다. 

 

 

board-2853022_640.jpg

[그림 : pixabay.com]

 

안타깝지만 딥러닝 교육도 비슷한 과정을 따릅니다. 실제 코드 예시를 제공하지 않고 헤세 행렬(Hessian Matrix)의 정의와 손실 함수에 대한 테일러 정리를 따라오라고 요구하죠. 미적분학을 비판하려는 의도가 아닙니다. 미적분학을 좋아하고 대학교에서 수학을 가르치기도 했지만, 딥러닝을 처음 배울 때 미적분학부터 시작하는 게 좋다고 생각하지는 않습니다.

 

딥러닝에서 모델을 더 개선하고 싶다는 동기가 있으면 배움에 많은 도움이 됩니다. 그때부터 관련 이론을 배우기 시작하면 됩니다. 그런데 먼저 개선할 딥러닝 모델이 있어야겠죠. 그런점에서 실제 사례로부터 모델을 구축하고, 더 깊이 파고들며, 프로젝트를 계속해서 개선하는 방법으로 딥러닝에 접근하는 것이 좋겠습니다. 즉, 맥락 속에서 필요한 이론적 기초를 점진적으로 학습하며, 이런 이론이 중요한 이유와 작동 방식 등을 파악해가는 겁니다. 제가 생각하는 원칙은 이렇습니다. (실제로 저는 이런 원칙에 기반해 책을 집필하기도 했습니다.)

 

실행에 의한 학습

딥러닝의 가장 어려운 점은 장인 정신이 있어야 한다는 것입니다. 데이터가 충분한지, 올바른 형식인지, 모델이 제대로 학습하는지, 그렇지 않다면 어떤 대처가 필요한지를 파악하는 방법은 무엇일까요? 이는 제가 실행에 의한 학습(learning by doing)을 믿는 이유기도 합니다. 데이터 과학의 기본 기술들과 마찬가지로, 여러분의 딥러닝 기량은 실전 경험으로만 향상됩니다. 이론에 너무 많은 시간을 투자하면 비생산적이겠죠. 핵심은 코드로 문제를 해결하는 것입니다. 그 과정에서 상황과 동기가 생겼을 때 이론을 살펴보면 됩니다.

 

때로는 딥러닝을 배우고 구현하는 과정이 힘들게 느껴질 수도 있습니다. 어딘가 꽉 막혔다고 느낄지도 모릅니다. 하지만 포기하지 마세요! 이럴 때는 막힘이 없던 마지막 부분으로 돌아가서, 명확히 이해할 수 없는 첫 번째 내용을 찾습니다. 그리고 그 내용에 관한 몇 가지 코드를 실험해보기 바랍니다. 그래도 이해가 안 된다면, 같은 문제를 다른 시각으로 바라보는 자료나 튜토리얼을 인터넷에서 찾아보세요. 누구나 처음 책을 읽고 모든 내용(특히 코드)을 이해하지 못할 수 있습니다. 때로는 모든 내용을 차례대로 이해하고 넘어가기가 어려울 때도 있죠. 더 많은 자료를 보며 큰 그림을 그린 후에야 이해되기도 한답니다. 따라서 어디선가 막혔다면, 나중에 다시 읽을 부분이라는 메모를 남긴 후 계속해서 책을 읽어나가기 바랍니다.

 

딥러닝 분야에서 성공하는 데 특별한 학문적 배경이 필요하지는 않습니다. 박사 학위가 없는 사람들도 연구와 산업 분야에서 중요한 혁신을 이뤄냈죠. 가령 5,000번 이상 인용되었으며 지난 10년간 큰 영향력을 미친 「Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks」 논문은 알렉 래드포드(Alec Radford)가 학부 시절에 썼습니다. 앞서도 언급했지만 저는 철학을 전공하고 의학적 배경지식이 없었지만 딥러닝 알고리즘을 사용해 질환과 질병을 진단하는 회사를 창업해, 방사선 전문의보다 더욱 정확하게 악성 종양을 판단하는 알고리즘을 발표하기도 했습니다. 그밖에도 매우 어려운 과제인 자율 주행 자동차를 만드는 테슬라의 CEO인 일론 머스크(Elon Musk)는 다음과 같이 말합니다(https://oreil.ly/nQCmO).

 

"박사 학위는 필수가 아닙니다. AI를 깊이 이해하고 실제로 유용한 신경망을 구현하는 능력이 중요하죠. 고등학교만 졸업했더라도 전혀 상관없습니다."

- 일론 머스크, 테슬라 CEO

 

다만 성공하려면 배운 내용을 여러분만의 개인 프로젝트에 적용하고, 유의미한 결과를 얻을 때까지 인내해야 합니다.

 

그렇다면 딥러닝을 해보기 위해 어떤 종류의 작업을 시도해보면 좋을까요? 처음에는 크고 웅장한 문제보다 4~5개의 작은 프로젝트를 계획하는 편이 좋습니다. 여러분의 취미나 관심 있는 분야의 프로젝트라면 더 좋습니다. 가령 피카소와 모네의 그림을 구별하거나, 아들과 딸 사진을 필터링하는 등의 간단한 예를 떠올려볼 수 있겠죠. 공부하다 보면 꽉 막힌 느낌이 들때도 있습니다. 너무 일찍 지나친 포부를 품으면 오히려 역효과를 초래할 수 있거든요. 우선은 기본기를 익히고, 다음으로 스스로 자랑스러워할 만한 일에 도전해보기 바랍니다.

 


 

이 글은 <fastai와 파이토치가 만나 꽃피운 딥러닝> 도서 내용 일부를 발췌 편집하여 작성되었습니다. '모두를 위한 딥러닝'에 대한 보다 자세한 정보는 하기 책에서 만나볼 수 있습니다. 

 

 

표지_fastai와 파이토치가 만나 꽃피운 딥러닝300.jpg

 『fastai와 파이토치가 만나 꽃피운 딥러닝

댓글 입력
자료실