Introduction to Deep Learning - (1)

Tentative Schedule of Topics

- Machine Learning Basics
- Feedforward Networks
- Regularization for Deep Learning
- Optimization for Deep Learning
- Convolutional Neural Networks
- Recurrent Neural Networks
- Memory-Augmented Networks
- Autoencoders
- Deep Generative Learning (GAN, VAE)
- Bayesian Deep Learning

Prerequisites

- Calculus
- Linear Algebra
- Probability and Statistics
- Mathematical Optimization


Machine Learning

머신러닝이란 무엇인가?
이에 대한 해답은 Arthur Samuel이 했던 말로부터 정의될 수 있다.
"A field of study that gives computer the ability to learn without being explicitly programmed"
컴퓨터에 명시적으로 프로그래밍을 하지않고도 학습할 수 있는 능력을 컴퓨터에게 주는 분야.

컴퓨터에 명시적으로 프로그래밍을 한다는 뜻은 기존에 짜여진 알고리즘이나 Heuristic과 같은 프로그래밍을 컴퓨터에 집어넣음으로써 컴퓨터가 주어진 임무를 한다는 뜻이다.

머신러닝은 이러한 내용과는 다르다. 컴퓨터가 주어진 임무를 진행하기 위해서 알고리즘이나 휴리스틱을 "미리" 받고 진행하는 것이 아니라 주어진 임무를 진행하기 위한 과정을 컴퓨터가 "직접" 학습한다고 생각하면 된다.

예를 들어서 주어진 임무를 진행하기 위해서 그 임무에 관한 특정한 Feature들이 존재한다. 그림을 분류하는 임무를 진행한다고 하면, 해당 data에는 pixel마다 RGB 값이 다 다를 것이다. 머신 러닝은 이러한 data의 RGB값과 data가 가지고 있는 해당 label을 가지고선, 해당 label로 분류하기 위한 feature들을 data의 RGB값으로부터 추출한다.

좀 더 쉽게 말하면 새가 그려진 데이터 x가 있다고 하자.
이 데이터의 label은 "새"이다. 데이터 x에 관한 정답 정보를 label이라 생각하면 된다. 이러한 데이터 x는 각 pixel마다 RGB값을 가지고 있고, 이러한 RGB값들을 토대로 pixel들이 서로 어떠한 관계를 가져 "새"가 되는가를 유추하는 것을 배우는 것이다.

또 다른 예시로는 SVM과 같은 분류기를 생각해보자. 데이터 A군과 B군에 관해서 분류하는 분류기를 만들 때, 분류기와 A군, 분류기와 B군 간의 거리를 최대로 만들기 위해 컴퓨터는 data를 학습하며 분류기를 조정하고 수정할 것이다.

머신 러닝은 결국 Data로부터 방법론을 배우는 것이기 때문에, data의 수가 많을 수록 절대적으로 유리할 수 있다고 볼 수 있다.

Deep Learning



그렇다면 딥 러닝과 머신러닝의 차이는 무엇인가?

딥 러닝은, 머신러닝의 한 분야이자, Representation 러닝의 한 분야이다.

딥 러닝 역시 data로부터 주어진 임무를 수행하기 위한 방법론과 알고리즘을 터득하는 방법론 중에 하나이다.
그러나 머신 러닝과는 다른 차이점이 있다.
딥 러닝은 계층 구조적 representation을 배운다는 것이다. representation은 data로부터 대표되는 feature라고 생각하면 된다.
예를 들어, 머신 러닝같은 경우에는 data의 feature를 뽑아내지 않고, 순수히 data 그 자체 값으로 학습되는 방법도 통용하여 말한다. 하지만 딥 러닝은 data의 feature를 뽑아내는 것이 중요하다. 이는 Data 내에서의 상관관계들을 배운다는 뜻이다. Data로부터 Feature들을 뽑아내면, 그 Feature들에서도 또 다시 Feature들을 뽑아낼 수 있다. 이러한 형태의 Feature Extraction을 계층적으로 진행할 경우, 이를 Deep Learning이라 부르는 것이다.

아래와 같은 그림을 보면 이해하기가 수월할 것이다.


Feature가 무엇인지 감이 안 잡혀도 아직은 괜찮다.

그렇다면 이 Feature인지 뭔지가 어떻게 뽑히는지는 궁금할만하다. 왜냐하면 이 Feature라는 것이 Data가 정답을 내놓는 데에 있어서 중요한 결정 요인 역할을 하기 때문이다.

이러한 Feature Extraction은 뇌를 구성하는 뉴런을 본따서 만들었다. 복잡하게 얽힌 신경망에서 서로 신경 정보를 주고 받다가 신경 신호가 역치값을 넘기면 해당 뉴런값이 1이 되듯이 이러한 모양을 본따서, 사람이 학습하듯이 행하게 한다. 하나의 뉴런에는 여러 정보가 들어올 수 있고, 이러한 정보들은 특정 Function에 의해 가공되어 다른 뉴런으로 전달된다. 이 때 뉴런이 활성화하는지에 대해서는 활성화 함수를 고려하여 판단한다. 이러한 과정을 반복하다가 마지막 Classifier나 Regression과 같은 작업에서 특정 값을 의미하는 뉴런에서 역치값이 넘으면, 해당 데이터는 그 특정 값으로 분류되어야 한다라고 말해준다.



결국 중요한 것은 우리가 확실히 아는 내용은 input이 어떻게 되고, output이 어떻게 되는 가이다. 우리는 가운데 사이에 오고 가는 내용에 대해서는 알지 못한다. 이러한 부분을 hidden layer라고 하고, 컴퓨터가 알아보는 정보들이 오갈 뿐, 우리가 해당 정보가 무엇인지 정확히 파악하기는 힘들다.


이러한 딥 러닝 네트워크 구조에는 매우 많은 구조들이 있으며 이 수업에서는 대표되는 구조들과 그 구조의 원리들에 대해서 살펴보려 한다.


*해당 내용들은 모두 2018년도 봄학기 KAIST, 딥러닝 특강 강의를 토대로 작성하였습니다.

댓글

가장 많이 본 글