머신러닝이나 딥러닝을 하는 사람들이 최고의 명서 중 하나로 생각하는
Pattern Recognition and Machine Learning(a.k.a PRML)에 도전하고자 합니다.
하다가 너무 바빠지면 또 뒷전이 될 것 같지만....(그냥 혼자 읽는 것에 비해 글을 작성하려면 시간이 배로 들기 때문에 바빠지면 손을 놓게 되는 것 같습니다...)
예전에 자연어 처리 책 정리했듯이 내용을 정리하면서, 최대한 읽으시는 분들에게 도움이 되는 방향으로 작성하려고 합니다.
이번 글은 PRML의 Chapter 1의 Prologue를 정리해볼까 합니다.
내용도 짧고 어려운 건 없지만, 처음 글인 만큼 가볍게 작성하면서 시작해보겠습니다.
PRML - Chapter 1. (0) Prologue
주어진 데이터에서 어떤 특정한 패턴을 찾아내는 것은 아주 중요한 문제로, 이 문제에 대해서 인류는 오랜 시간 동안 답을 찾아왔습니다. 이에 대한 예시로는 케플러의 행성 운동 법칙이나, 원자 스펙트럼의 규칙성 같은 것들이 있죠.
이처럼 패턴 인식은 컴퓨터 알고리즘을 통해 데이터의 규칙성을 자동적으로 찾아내고, 이 규칙성을 이용해 데이터를 각각의 카테고리로 분류하는 등의 일을 하는 분야입니다.
그림 1은 MNIST Data의 일부를 나타내고 있는데요. (아마 딥러닝이나 머신러닝을 조금이라도 해보셨다면 MNIST가 무엇인지는 아실 것이라고 생각합니다.) 28 x 28 픽셀 이미지로 구성되어 있고, 이런 이미지 1개를 입력받았을 때 숫자 0부터 9 중에서 어떤 값을 나타내는지를 출력하는 모델을 만드는 것이 패턴 인식의 예시라고 볼 수 있습니다.
데이터를 바탕으로 Rule을 만들어 문제를 해결할 수도 있지만 그렇게 하려면 수많은 규칙이 필요해지고 예외 사항도 필요하며 이렇게 하려고 했을 때는 결과적으로 좋지 못한 성능을 내게 됩니다.
이럴 때 머신 러닝은 훨씬 더 좋은 결과를 낼 수 있습니다. 이는 N개의 숫자들 {$x_1, x_2, ... x_N$}을 훈련 집합(Training set)으로 활용해 변경 가능한 모델의 매개변수(Parameter)를 조절하는 방법입니다. 훈련 집합에 있는 숫자들의 카테고리(정답, Label)는 미리 주어지게 되며 이를 표적 벡터(target vector) $t$로 표현할 수 있습니다. 각각의 숫자 이미지 $x$에 대한 표적 벡터 $t$는 하나입니다.
머신러닝 알고리즘의 결과물은 함수 $y(x)$로 표현할 수 있으며, 이는 새로운 숫자의 이미지 $x$를 입력값으로 받았을 때 해당 이미지의 정답인 $y$를 출력하는 함수입니다. 함수 $y(x)$의 정확한 형태는 훈련 단계(training phase)에서 훈련 집합을 바탕으로 결정되며, 훈련이 되고 나서 내가 알고 싶은 새로운 숫자 이미지들의 집합(시험 집합 - test set)의 정답을 찾아내는 데 활용할 수 있습니다. 훈련 단계에서 사용되지 않았던 새로운 예시들을 올바르게 분류하는 능력을 일반화(Generalization) 성능이라고 합니다. 실제 application에서는 입력 벡터의 변동이 커 훈련 데이터는 가능한 모든 케이스들 중에서 일부분만 커버할 수 있기 때문에, 패턴 인식에서의 가장 중요한 목표는 바로 일반화입니다. 즉, 학습 단계에서 본 적 없는 데이터에 대해서도 정답을 잘 맞춰야 한다는 얘기입니다.
많은 application에서 입력 변수들을 전처리(Preprocessing)하여 새로운 변수 공간으로 전환하게 되는데, 이를 통해 패턴 인식 문제를 더 쉽게 해결할 수 있습니다. 이를 통해 입력의 가변성을 상당히 줄여 패턴 인식 알고리즘이 각 클래스를 구별해 내기 더 쉽게 만들 수 있습니다. 이러한 전처리 과정은 특징 추출(feature extraction) 이라고도 불리며, 훈련 집합에서 전처리 과정을 적용했다면 시험 데이터에도 동일하게 적용해야 합니다.
혹은 계산 속도를 높이기 위해서 전처리 과정을 활용하기도 합니다. 예를 들면 데이터가 높은 해상도의 비디오 데이터를 실시간으로 처리해야 하는 경우라면 굉장히 연산량이 많을 것입니다. 따라서 모든 데이터를 다 사용하는 것 대신, 차별적인 정보(discriminatory information)를 가지고 있으면서 동시에 빠르게 계산하는 것이 가능한 유용한 특징(useful feature)들을 찾아내어 사용할 수도 있을 것입니다. 이러한 특징들은 기존 데이터보다 픽셀 수가 적기 때문에, 이러한 종류의 전처리를 차원 감소(dimensionality reduction) 이라고 하기도 합니다. 하지만, 전처리 과정에서는 주의를 기울여야 합니다. 왜냐하면 많은 전처리 과정에서 정보들을 버리게 되는데, 만약 버려진 정보가 문제 해결에 중요한 특징이었을 경우는 성능면에서 큰 타격을 받을 수 있기 때문입니다.
주어진 훈련 데이터가 입력 벡터와 그에 해당하는 표적 벡터로 이루어지는 문제를 지도 학습(supervised learning) 문제 라고 합니다. MNIST 예시처럼, 각 입력 벡터를 제한된 숫자의 카테고리 중 하나에 할당하는 종류의 문제는 분류(classification) 문제라고 하고, 출력 값이 하나 또는 그 이상의 연속된 값을 경우에는 회귀(Regression) 문제라고 합니다. 예를 들어서 반응 물질의 농도, 온도, 압력이 주어졌을 때 화학반응을 통해 얼마나 산출될 것인지를 예측하는 것이 회귀 문제의 예시가 됩니다.
훈련 데이터가 표적 벡터 없이 오직 입력 벡터 $x$로만 주어지는 경우의 패턴 인식 문제는 비지도 학습(unsupervised learning) 문제라고 합니다. 데이터 내에서 비슷한 예시들의 집단을 찾는 집단화(Clustering) 문제, 입력 공간에서의 데이터 분포를 찾는 밀도 추정(Density estimation), 높은 차원의 데이터를 2차원 또는 3차원에 투영하여 이해하기 쉽게 만들어 보여 주는 시각화(Visualization) 등이 비지도 학습 문제의 예시입니다.
마지막으로, 강화 학습(Reinforcement learning)이라는 테크닉도 있습니다. 강화 학습은 지도 학습, 비지도 학습과는 살짝 다른데, 주어진 상황에서 보상을 최대화하기 위한 행동을 찾는 문제를 푸는 방법입니다. 강화 학습은 지도 학습의 경우와 달리 학습 알고리즘에 입력값과 정답 값을 주지 않습니다. 강화 학습은 시행착오를 통해서 보상을 최대화하기 위한 행동을 찾게 되며, 알고리즘이 주변 환경과 상호 작용할 때 일어나는 일들을 표현한 연속된 상태(State)와 행동(Action)들이 문제의 일부로 주어지게 됩니다. 강화 학습의 적절한 예시로는 게임을 생각할 수 있는데, 다음과 같은 게임을 생각해보도록 하겠습니다.
위 그림은 Breakout 이라고 하는 게임의 화면을 나타내고 있습니다. 게임의 이름은 처음 들어보실 수 있지만 아마 어떤 게임인지는 짐작이 가실 것입니다. 밑에 있는 막대기를 왼쪽에서 오른쪽으로 옮기면서 떨어지는 공을 받고, 공은 막대기에 튕기면서 위에 있는 색깔이 있는 벽돌을 부수는 그런 게임입니다. 벽돌을 부수게 되면 보상(Reward) - 아마 해당 게임에서는 점수를 받게 될 것이고, 결국 이 게임의 목표는 최대의 보상을 받을 수 있는 막대기의 움직임을 결정하는 것입니다. 즉, 공이 위에 있는 벽돌을 부수고 아래로 떨어질 때, 플레이어는 적절하게 노란색 막대기를 이동시켜 바닥으로 떨어지지 않도록 해야 합니다. 이는 수백만, 수천만 번 이상의 게임을 수행하면서 강화 학습 알고리즘이 어떤 상황에서는 어떤 행동을 취하는 것이 최적 일지를 학습하게 됩니다. 이 게임에서 State는 게임 화면이 될 것이고, Action은 노란색 막대기를 어떻게 이동할 것인지(왼쪽으로 혹은 오른쪽으로 얼마큼 이동할 것인지, 혹은 가만히 있을 것인지)를 결정하는 것이며, Reward는 벽돌을 깨서 얻게 되는 점수가 될 것입니다.
그리고 강화 학습에는 탐사(exploration)와 이용(exploitation) 간의 trade-off가 있습니다. Exploitation은 강화 학습 알고리즘이 높은 보상을 주는 것으로 판단한 행동을 시행하게 되는 것을 의미하며, Exploration은 이 행동을 하는 것이 아닌 새로운 종류의 행동을 시도해보는 것을 말합니다. Exploitation만 하게 되면 많은 상황을 경험하지 못하게 되어 더 좋은 행동을 취할 가능성을 잃게 되며, Exploration만 하는 것은 최적의 행동을 취하지 않는 것이므로 좋지 않은 결과를 가져오게 됨을 예상할 수 있습니다. 따라서, 강화 학습은 exploration과 exploitation을 적절하게 잘 섞어서 학습을 진행하게 됩니다. 이 책에서도 강화 학습을 자세히 다루지는 않기 때문에 이 정도로만 적으면 될 것 같습니다.
지금까지 소개한 각각의 알고리즘을 해결하는 데는 서로 다른 방법과 기술이 필요하지만, 핵심에 속하는 중요 아이디어는 서로 겹칩니다. Chapter 1의 주요 목표 중 하나는 예시를 통해 이 중요 아이디어에 대해 비교적 간단하게 설명해 보는 것입니다. 해당 Chaper에서는 앞으로의 내용들을 다루는데 필요한 세 가지 중요한 도구인 확률론, 의사 결정 이론, 정보 이론에 대해서 설명합니다.
사실 Chapter 1.3까지는 본 상황인데, 역시 책의 난이도가 쉽지는 않습니다. 그래도 확실히 책을 읽으면서 느낀 점은, 사람들이 추천하는 데는 이유가 있다는 점입니다. 적은 내용을 봤음에도 내용 자체가 워낙 탄탄하고 알차서 좋다고 느껴집니다. 아무튼, 이어서 계속 가보도록 하겠습니다. 다음 Chapter 1.1 파트에서 뵙겠습니다.
'딥러닝 & 머신러닝 > PRML' 카테고리의 다른 글
PRML(패턴인식과 머신러닝) - Chapter 1. (3) Model Selection(모델 선택) (0) | 2021.02.28 |
---|---|
PRML(패턴인식과 머신러닝) - Chapter 1. (2) Probability Theory(확률론)(2) (0) | 2021.02.28 |
PRML(패턴인식과 머신러닝) - Chapter 1. (2) Probability Theory(확률론)(1) (0) | 2021.02.27 |
PRML(패턴인식과 머신러닝) - Chapter 1. (1) Example: Polynomial Curve Fitting (0) | 2021.02.24 |