본문 바로가기

공부 기록/딥러닝의 수학

[딥러닝의 수학] 1. Introduction

728x90

 

 

딥러닝 시리즈의 첫 번째 글입니다. 이 글은 고려대학교 수학과 오승상 교수님의 딥러닝 강좌를 참고자료로 하여 쓰임을 밝힙니다. 또한, 이 글의 목적은 이 강좌를 듣고 저의 개인적인 복습용으로 요약하여 작성하는 것임을 밝힙니다. 자세한 내용을 알고 싶으시다면 아래 링크를 참고해 주세요.

 

https://youtube.com/playlist?list=PLvbUC2Zh5oJvByu9KL82bswYT2IKf0K1M

 

오승상 딥러닝 Deep Learning

고려대학교 오승상 교수의 Deep Learning 강의 입니다. (자료) https://sites.google.com/view/seungsangoh

www.youtube.com

 


이 글에서는 딥러닝 강좌에서 다루고자 하는 간단한 Introduction을 다룹니다.

 

Artificial Inteligence(AI)와 Machine Learning(ML), Deep Learning(DL) 각각의 특징들을 알아봅니다.

 


AI를 요약하면, 사람의 지능을 모방하여 학습과 추론을 기계가 하도록 구현하는 것을 말합니다.

 

ML은 이러한 AI를 실현시키기 위한 방식 중 하나입니다.

 

특정한 상황에 일일이 케이스를 나눠서 작동하는 챗봇과는 다르게, ML은 기계가 스스로 학습을 진행합니다.

 

예시를 들자면, 사람들의 나이, 학력, 직업 등등이 이미 주어져있고, 이들의 연봉이 주어져 있다고 해봅시다.

 

우리는 이 데이터들을 토대로 하여 나중에 어떤 사람의 데이터가 들어오면 이를 토대로 연봉을 예측하는 시스템을 만들고 싶어 합니다.

 

그러면 우리는 다양한 기준을 토대로 가중치를 두어서 연봉을 예측할 수 있습니다.

 

예를 들어, 나이가 많으면 연봉이 많다던지, 학력이 높으면 연봉이 많다던지 등등의 다양한 기준치(Parameter)에 다양한 가중치(Weight)를 두어 예상할 수 있습니다.

 

이런 식으로 다양한 기준치들에 다양한 가중치들을 우리가 손으로 직접 일일이 정해주는 것을 Programming이라고 말합니다.(실제로 말하는 Programming의 의미하고는 다릅니다. ML의 반대 개념임을 강조하기 위한 용어임을 명심합시다.)

 

반면, ML은 기계가 "스스로" 학습합니다. 즉, 데이터들을 통해 이러한 가중치(Weight)들을 직접 찾습니다.

 

DL은 ML의 하위분야로, ML을 구현하기 위한 방식 중 하나라고 간주하면 됩니다.

 

ML보다는 Parameter의 개수가 매우 매우 많고, 방대한 양의 데이터가 필요합니다.

 


ML의 방식에는 크게 세 가지가 있습니다.

 

1. Supervised(지도)
2. Unsupervised(비지도)
3. Reinforcement(강화)

 

1. Supervised Learning

 

Supervised Learning에서는 Training Set과 그 Set의 답이 되는 Label을 한데 묶어서 학습이 진행됩니다.

 

예를 들어, 개와 고양이 사진들이 학습 데이터라고 치면, 이 사진들 각각에는 개 사진, 고양이 사진이라는 "이름"이 붙겠죠.

 

이후 학습이 진행될 때, 어떤 사진을 가지고 예측을 하여, 이 답이 맞았는지 틀렸는지 Label을 통해 확인하는 과정을 반복해서 거치게 됩니다.

 

즉, 피드백 과정을 거칩니다.

 

이러한 Supervised Learning을 구현하는 방식에는 Regression, Classification 등이 존재합니다.

 

이 강좌에서는 Supervised Learning을 중점적으로 다룹니다.

 

2. Unsupervised Learning

 

이 방식은 Label이 존재하지 않습니다. 쉽게 이야기해서 답안지가 존재하지 않습니다.

 

다만, 학습을 진행하며, 데이터들이 가지고 있는 "공통된 특성"(Pattern)을 끄집어내어 군집화(Clustering)를 이루는 방식으로 진행이 됩니다.

 

이 과정 속에서 데이터의 숨겨진 구조를 발견할 수 있습니다.

 

또한, 당연히 답이 틀렸는지 맞았는지 확인하는 과정이 없으니 피드백 과정을 거치지 않습니다.

 

3. Reinforcement Learning

 

이 방식은 학습을 진행해야 하는데, 그 데이터가 학습을 진행할 만큼 충분하지 않을 때, 혹은 그러한 데이터를 준비할 수 없을 때 사용하는 방식입니다.

 

환경과 Interacting 하며 계속 학습을 진행합니다.

 

예를 들어 로봇이 걸어가는 것을 이 방식으로 학습을 진행시킨다고 합시다.

 

로봇이 처해있는 다양한 상황들이 있을 것입니다.

 

바닥의 노면 상태, 장애물의 위치 등등의 다양한 요인들이 있겠습니다.

 

0.1초마다 매번 갱신을 해주어서 상황을 다르게 입력받는다고 해봅시다. 그러면 로봇이 어떤 관절을 움직일지, 몇 번 관절을 얼마큼 동작시킬지 등 다양하게 동작시킬 수 있을 것입니다.

 

결국 우리의 목적은 이 로봇이 멀쩡하게 잘 걷도록 하는 것이 우리의 목적이므로, 오랫동안 걸으면 그만큼 로봇에게 Reward를 주는 방식으로 학습을 진행시킵니다.

 

로봇은 결국 이 Reward를 최대화하는 방향으로 움직임의 규칙(Policy)을 스스로 결정하게 됩니다.

 


DL과 ML의 가장 큰 차이점은 사람의 Feature Extraction 과정이 필요하냐, 필요하지 않냐의 여부입니다.

 

예를 들어, 수많은 환자의 20개 뇌파들을 분석하여 이 환자가 뇌전증 환자인지 뇌전증 환자가 아닌지 구분하고자 합니다.

 

사실, 20개의 뇌파 중 뇌전증을 판단하기 위해 확인해야 되는 뇌파의 종류는 3~4개로 한정돼있고 그 뇌파의 특정 움직임만 확인해 주면 됩니다.

 

그 과정을 사람 손을 거쳐서(이 과정을 하는 사람은 의사겠죠) 이 뇌파를 가진 사람은 뇌전증이고, 이 뇌파를 가지지 않은 사람은 뇌전증이 아니다,라고 Label을 매겨준다면, 이는 사람의 Feature Extraction과정을 거친 것입니다.

 

반면, DL은 사람의 이러한 과정이 필요하지 않습니다.

 

원본 Input data를 그대로 넣습니다. 즉, 뇌파 20개의 데이터를 그대로 분석합니다.

 

그리고 기계가 Feature Extraction을 하도록 시킵니다.

 

즉, Feature Extraction과정을 기계에게 대신 맡김으로써 Hidden Layer의 개수가 증가하게 됩니다.

 

또한 필요한 Data의 개수도 증가하게 됩니다.

 

각각의 장단점이 있지만, DL의 경우 ML보다 Data의 개수가 많아야 그 효과를 볼 수 있다는 점에서 한계가 있습니다.

 

반면, ML의 경우 Data의 개수가 적을 때 DL보다 성능이 더 좋습니다. 다만, Data의 개수가 많으면 DL보다 성능이 좋지는 않습니다.

 

또한 ML의 경우 Label을 사람이 직접 매기기 때문에 어떠한 근거로 판단을 했는지 알 수 있습니다.

 

반면 DL은 그렇지 않기 때문에 Black Box적인 성격을 지닙니다. 즉, 알 수가 없습니다.

 

이러한 DL이 발전하게 된 계기는 크게 세 가지로 꼽을 수 있는데, 하나는 빅데이터, 둘째는 컴퓨팅 파워의 향상, 세 번째는 알고리즘의 발전이라고 볼 수 있습니다.