Post

Advanced Machine Learning 0 - Intro

Advanced Machine Learning 0 - Intro

Before starting

“Class” 카테고리에 있는 포스팅들은 실제로 수업에서 배운 내용을 정리하려는 목적으로 작성되었다. 이 글은 그 중 Advanced Machine Learning 과목의 수업을 다룬다.

What’s machine learning?

전통적인 컴퓨터 공학에서, 알고리즘이란 어떤 문제를 해결하기 위한 절차나 방법을 가리킨다. 조금 더 어렵게 표현하면 모든 입력값에 대해 튜링 머신을 정지하게 만드는 명령을 뜻한다. 그리고 주어진 문제를 풀기 위한 방법을 찾는 것이 목표이기 때문에, 이를 위해 문제의 입력값과 출력값은 명확하다는 것을 기본 전제로 한다. 또한 튜링 머신으로 대체될 수 있기 때문에, 입력값이 동일하다면 출력값도 항상 동일함도 전제로 한다. 이는 이 문제가 P인지 NP인지와는 상관없다. 지수 시간이 걸리더라도 어쨌든 방법은 찾은 것이니까.

그렇다면 위의 전제 조건이 잘 지켜진 모든 문제는 전통적인 알고리즘으로 해결 가능할까? 안타깝게도 그렇지 않다.

개나 고양이 중 하나의 모습이 담긴 사진이 주어졌을 때, 이 사진이 개인지 고양이인지를 판별하는 문제가 있다고 가정해보자. 이 문제는 입력값과 출력값이 명확하며, 동일한 입력값이 주어지면 출력값도 항상 동일하다. 심지어 사람에게는 이들을 구분하는 것은 굉장히 쉬운 일이다.

그럼 이걸 컴퓨터가 구분할 수 있도록 하는 알고리즘을 어떻게 작성할 수 있을까?

굳이 실제로 시도해보지 않아도, 이 문제의 알고리즘을 찾는 것은 굉장히 난해하다는 것을 알 수 있다.

사람에겐 쉬운 이 문제를 알고리즘화하는게 어려운 이유에 대해서는 여러 가지 답이 있을 수 있지만, 여기서는 사람 또한 논리적인 설명을 요구하면 대답하기 난해하다는 점에 주목해보자. 즉, 사람 또한 이 문제를 논리적인 근거가 아니라 직관, 혹은 그동안 봐온 수많은 데이터에 의해서 풀고 있다는 의미가 된다.

그렇다면 컴퓨터한테도 동일한 과정을 시키면 되는 것이 아닐까? 즉, 수많은 데이터들을 주고 규칙을 찾게 시키면, 컴퓨터 또한 (논리적으론 설명할 순 없지만) 이 문제를 해결할 수 있는 나름의 함수를 찾아내어 새로운 데이터를 입력값으로 줘도 정답을 찾을 수 있다는 논리이다. 자연스럽게 여기서의 “학습”은 데이터를 통해 이 데이터에 적합한 함수를 찾는 과정을 뜻하게 된다.

위의 고찰에 입각해서, Tom Mitchell이 1997년에 머신 러닝을 다음과 같이 정의하였다.

“A computer program A is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, imporves with experience E”

말은 복잡하지만, 결국 한마디로 “경험에 의해서 성능이 향상되는 알고리즘”이다.

A brief history

머신 러닝이 세간의 관심을 받은건 그리 오래된 일이 아니지만 머신 러닝 자체의 역사는 생각보다 오래되었고, 그 때 당시에 제안되었던 개념이나 구조 등이 그동안의 세월을 거치며 개선은 되었지만 근본적인 형태가 바뀌지는 않았다.

현재 딥러닝의 근간이 되는 퍼셉트론은 무려 1957년도에 Frank Rosenblatt에 의해 제안된 개념이다. 그 당시의 퍼셉트론은 각각의 입력들의 Weighted sum을 이용해서 특정 threshold보다 크면 1, 아니면 0을 할당하는 방식으로 동작 했다.

그 후 이 퍼셉트론을 기반으로 하여 다양한 시도와 연구들이 활발히 이루어졌으나, 1969년에 Marvin Minsky와 Seymor Papert에 의해 이 퍼셉트론으로는 XOR 연산을 학습할 수 없다는 것이 밝혀져서 그대로 사장되었다. 1969년부터 1986년까지의 이 시기를 AI Winter라고 부른다.

1986년까지가 AI Winter면 1986년에 뭔가가 있으리라고 짐작할 수 있는데, 실제로 1986년에 Geoffrey Hinton에 의해 back propagation, 즉 역전파라는 개념이 발표되었다. 당시는 퍼셉트론 기반의 인공 신경망을 여러 레이어에 걸쳐서 쌓으면 복잡한 함수들을 학습시킬 수 있다는 이론들이 막 나오기 시작한 때였는데, 문제는 그 레이어를 학습시킬 방법이 없었다. 그런데 역전파라는 개념으로 인해 굉장히 효율적으로 학습시킬 방법이 열려 다시 머신러닝의 붐이 일어나고 AI Winter를 끝낼 수 있게 되었다.

그리고 2006년에 이러한 신경망을 이용한 인공지능 알고리즘을 Deep Learning이라고 새롭게 이름붙이게 된다. 이는 학술적인 의미라기보단 제 2의 인공지능 붐에 맞춰 펀딩을 노린 리브랜딩에 가깝다.

이러한 머신러닝에 대한 투자, 그리고 하드웨어의 발전으로 인해 머신러닝은 2012년에 또 한번 크게 발전하게 되었다. 학습 방법 테크닉의 발전에 더해 imageNet이라는 대형 데이터셋, 그리고 GPGPU의 도입 등으로 점점 다룰 수 있는 신경망의 크기와 깊이가 커지게 되었고, 이러한 발전이 계속 되어 현재 시점에까지 이르게 된다.

위의 역사에서 볼 수 있듯이 딥러닝은 원래 홍보용으로 탄생된 이름이었으나 현재는 신경망 기반의 머신러닝을 딥러닝이라고 부르는 것으로 정착되었다.

This post is licensed under CC BY 4.0 by the author.