지도 학습(Supervised Learning)이란 간단히 말해 선생님이 문제를 내고 그 다음 바로 정답까지 같이 알려주는 방식의 학습 방법이다. 여러 문제와 답을 같이 학습함으로써 미지의 문제에 대한 올바른 답을 예측하고자 하는 방법이다.
머신러닝에서 지도 학습을 위한 모델은 크게 분류(classification) 모델과 예측(prediction) 모델로 구분된다.
분류 모델은 사용하는 알고리즘에 따라 또다시 KNN(K Nearest Neighbor), 서포트 벡터 머신(Support Vector Machine, SVM), 의사결정 트리(decision trees) 등의 모델로 구분되며, 예측 모델로는 회귀(regression) 모델이 대표적으로 사용되고 있다.
분류 모델은 레이블이 달린 학습 데이터로 학습한 후에 새로 입력된 데이터가 학습했던 어느 그룹에 속하는 지를 찾아내는 방법이다.
예측 모델도 분류 모델과 마찬가지로 지도 학습 모델이므로 레이블이 달린 학습 데이터로 학습하게 된다.
하지만 예측 모델은 분류 모델과는 달리 레이블이 달린 학습 데이터를 가지고 특징(feature)과 레이블(label) 사이의 상관관계를 함수식으로 표현하게 된다.
선생님이 문제와 함께 정답(레이블)까지 알려주는 지도 학습과는 달리 비지도 학습(Unsupervised Learning)은 문제는 알려주되 정답까지는 알려주지 않는 학습 방식이다. 즉, 여러 문제를 학습함으로써 해당 데이터의 패턴, 특성 및 구조를 스스로 파악하여, 이를 통해 새로운 데이터에서 일정한 규칙성을 찾는 방법이다.
비지도 학습은 구체적인 결과에 대한 사전 지식은 없지만 해당 결과 데이터를 통해 유의미한 지식을 얻고자 할 때 사용되며, 사람도 제대로 알 수 없는 본질적인 문제나 데이터에 숨겨진 특징이나 구조 등을 연구할 때 많이 활용된다.
머신러닝에서 비지도 학습을 위한 모델로는 군집화(clustering)가 대표적이다.
비지도 학습에 사용되는 데이터에는 레이블(label)이 명시되어 있지 않기 때문에 지도 학습과는 또 다른 방식으로 학습을 수행해야 한다.
이때 가장 많이 사용되는 방법이 바로 입력된 데이터가 어떤 형태로 서로 그룹을 형성하는지를 파악하는 것이다.
비지도 학습에서 가장 대표적으로 사용되는 이 모델은 군집화(clustering) 또는 클러스터링이라고 불린다.
군집화는 레이블이 없는 학습 데이터들의 특징(feature)을 분석하여 서로 동일하거나 유사한 특징을 가진 데이터끼리 그룹화 함으로써 레이블이 없는 학습 데이터를 군집(cluster, 그룹)으로 분류한다. 그리고 새로운 데이터가 입력되면 지도 학습의 분류 모델처럼 학습한 군집을 가지고 해당 데이터가 어느 군집에 속하는지를 분석하는 것이다.
비지도 학습에 사용되는 데이터에는 레이블(label)이 없으므로, 지도 학습처럼 단순정확도(accuracy)를 지표로 그 정확도를 평가할 수는 없다.
즉, 다음 그림과 같이 레이블이 없는 데이터 집합 내에서 최적의 군집 모양과 개수를 파악하기란 굉장히 어렵다.
군집화의 주목적은 레이블이 없는 데이터 집합의 요약된 정보를 추출하여, 이를 가지고 전체 데이터 집합이 가지고 있는 특징을 찾는 것이다.
이러한 군집화는 사용하는 알고리즘에 따라 크게 두 가지 기법으로 나눌 수 있다.
1. 분할 기법(partitioning methods)의 군집화
2. 계층적 기법(hierarchical methods)의 군집화
분할 기법의 군집화는 각 그룹은 적어도 하나의 데이터를 가지고 있어야 하며 각 데이터는 정확히 하나의 그룹에 속해야 한다는 규칙을 가지고 데이터 집합을 작은 그룹으로 분할하는 방식이다. 이러한 분할 기법의 군집화에는 k-means, k-medoids, DBSCAN 등의 기법 등이 있다.
계층적 기법의 군집화는 데이터 집합을 계층적으로 분해하는 방식으로 그 방식에 따라 또다시 집괴적(agglomerative) 군집화와 분할적(divisive) 군집화로 나뉜다.
지도 학습과 비지도 학습이 학습 데이터가 주어진 상태에서 환경에 변화가 없는 정적인 환경에서 학습을 진행했다면, 강화 학습은 어떤 환경 안에서 정의된 주체(agent)가 현재의 상태(state)를 관찰하여 선택할 수 있는 행동(action)들 중에서 가장 최대의 보상(reward)을 가져다주는지 행동이 무엇인지를 학습하는 것이다.
강화 학습은 주체(agent)가 환경으로부터 보상을 받음으로써 학습하기 때문에 지도 학습과 유사해 보이지만, 사람으로부터 학습을 받는 것이 아니라 변화되는 환경으로부터 보상을 받아 학습한다는 점에서 차이를 보인다.
강화 학습의 동작 순서
강화 학습은 일반적으로 다음과 같은 순서대로 학습을 진행하게 된다.
정의된 주체(agent)가 주어진 환경(environment)의 현재 상태(state)를 관찰(observation)하여, 이를 기반으로 행동(action)을 취한다.
이때 환경의 상태가 변화하면서 정의된 주체는 보상(reward)을 받게 된다.
이 보상을 기반으로 정의된 주체는 더 많은 보상을 얻을 수 있는 방향(best action)으로 행동을 학습하게 된다.
마르코프 결정 프로세스(Markov Decision Process, MDP)
강화 학습에서 보상을 최대화할 수 있는 방향으로 행동을 취할 수 있도록 이용과 탐험 사이의 적절한 균형을 맞추는데 사용되는 의사결정 프로세스가 바로 마르코프 결정 프로세스(Markov Decision Process, MDP)다.
MDP에서 행위의 주체(agent)는 어떤 상태(state)를 만나면 행동(action)을 취하게 되며, 각 상태에 맞게 취할 수 있는 행동을 연결해 주는 함수를 정책(policy)이라고 한다. 따라서 MDP는 행동을 중심으로 가치 평가가 이루어지며, MDP의 가장 큰 목적은 가장 좋은 의사결정 정책(policy) 즉 행동에 따른 가치(value)의 합이 가장 큰 의사결정 정책을 찾아내는 것이다.
머신러닝은 학습하려는 문제의 유형에 따라 크게 지도 학습, 비지도 학습, 그리고 강화 학습으로 나눌 수 있다.
그리고 각 학습 방법들은 상황에 맞는 다양한 알고리즘을 사용하여 구현할 수 있다.
다음은 머신러닝 학습에서 사용되는 대표적인 알고리즘이다.
서포트 벡터 머신(Support Vector Machine, SVM)
K-means 군집화(K-means clustering)
의사 결정 트리(Decision tree)
서포트 벡터 머신(SVM)은 머신러닝의 지도 학습 중 분류(classification) 모델에서 최근까지도 가장 많이 사용되는 알고리즘이다.
SVM은 지금까지 수많은 연구가 진행되어 왔기에 굉장히 높은 인식률을 보여주며, 주로 다루려는 데이터가 2개의 그룹으로 분류될 때 많이 사용된다.
SVM은 학습 데이터가 벡터 공간에 위치하고 있다고 생각하며 학습 데이터의 특징(feature) 수를 조절함으로써 2개의 그룹을 분류하는 경계선을 찾고, 이를 기반으로 패턴을 인식하는 방법이다.
의사 결정 트리(Decision tree)
귀납적 추론을 기반으로 하는 의사 결정 트리(Decision tree)는 데이터를 분석하여 이들 사이에 존재하는 패턴을 시각적이고도 명시적인 방법으로 보여주는 지도 학습 알고리즘 중 하나다.
K-means 군집화(K-means clustering)
K-means 군집화는 비지도 학습의 군집화 중에서도 분할 기반(partition-based)의 군집화에 속하는 방법이며, 가장 간단한 비지도 학습 알고리즘 중 하나다.
오늘은 별다른 학습이 없다. 그래서, 오늘은 머신러닝에 관한 포스팅을 올렸다.
머신러닝에 관한걸 복습할 겸 다시 한 번 작성했다.
오늘은 팀 별 프로젝트 결과물을 발표하는 날이다. 내가 맡은 부분을 어떻게 발표할까 고민을 하고 탈고도 했었다.