All about

제가 공부한 것을 정리할 겸, 인터넷을 통해 지식을 전달함으로써 제 공부에 도움을 주신 많은 분들처럼 저 또한 누군가에게 도움이 되고자 글을 적어봅니다.


제가 예전에 공부하면서 정리해두었던 내용을 다시 글로써 옮깁니다. 따라서 내용들 안에 잘못된 설명이나 표현들이 있을 수 있습니다. 혹시 그러한 내용을 발견하셨다면 지적 부탁드립니다. 감사합니다.


기계 학습과 머신 러닝 두 단어가 같은 의미로 혼용됩니다.




Machine learning


컴퓨터 과학자 아서 사무엘은 Machine learning (머신 러닝, 기계 학습)을 다음과 같이 정의했습니다.


"Field of study that gives computers the ability to learn without being explicitly programmed"


이를 번역하면 "컴퓨터에게 배울 수 있는 능력, 즉 코드로 정의하지 않은 동작을 실행하는 능력에 대한 연구 분야" 라고 할 수 있습니다.


위의 번역을 더 풀어서 말하면 "프로그래머가 모든 경우의 수를 지정해주지 않아도, 프로그램 스스로 데이터에 대한 학습을 통하여 최적의(혹은 적당한) 판단이나 예측을 가능하게 하는 것" 이라고 생각합니다. 


예를 들어 필기체를 인식하는 모델의 경우 사람들은 매우 다양한 방법으로 손글씨를 쓰기 때문에 손글씨 이미지에 대한 전처리 작업을 하더라도 모든 경우의 수를 고려할 수 없습니다. 그렇기 때문에 사람의 직접적인 개입 없이 손글씨를 인식하는 모델은 만든다면 그것은 적절한 기계 학습기법을 통해 학습된 모델이라고 할 수 있습니다.



인공 지능 분야의 범주


AGI(Artificial general intelligence, 인공 일반 지능) 은 인간이 할 수 있는 어떠한 지적인 업무도 성공적으로 할 수 있는 기계의 지능을 말합니다. 인공 일반 지능은 강한 AI, 약한 AI 로 구분되는데 현재 기술수준에서 만들 수 있는 인공지능은 약한 AI 의 범주에 포함됩니다. 이는 간단한 이미지 분류나 얼굴, 지문 인식처럼 특정 문제 해결을 목적으로 하죠.


머신 러닝은 인공 지능을 구현(혹은 학습)하는 구체적 방법론입니다. 머신 러닝의 방법론에는 의사 결정 트리 학습(Decision tree learning), 클러스터링(Clustering), 베이지안 네트워크(Bayesian network) 등이 있습니다. 머신 러닝의 학습 알고리즘 중 인공 신경망(Artificial neural network) 을 발전시킨 형태의 학습 기법들이 딥 러닝(Deep learning) 입니다.




Types of Machine learning Algorithms


기계 학습 기법은 크게 3가지로 나뉩니다. 이 글에서는 3가지 기법의 아이디어 혹은 컨셉만 이해하고 넘어가는 것을 목표로 작성했습니다. 더 자세한 이해를 위한 글들은 추후에 작성할 예정입니다.




1. Supervised learning(지도 학습)


데이터셋이 주어질 때, 입력 값과 정답 값(class, label or true and false) 이 주어진 상태로 학습을 진행합니다. 어떤 입력에 대해 어떤 출력이 나와야 하는지 '사전 지식' 을 갖고 학습하는 경우로 주어진 입력으로부터 출력값이 나오게 되는 규칙(혹은 특징) 을 발견 및 학습하는 것을 목표로 합니다. 분류(Classification), 회귀(Regression) 이 지도학습에 속합니다.


분류(Classification)

이미지 출처: https://en.wikipedia.org/wiki/Linear_classifier


분류는 주어진 정보를 바탕으로 클래스를 구분하는 것입니다. 스팸 메일을 필터링 하는 시스템이 있다고 할 때, 주어지는 정보는 이메일의 제목과 본문, 발송자 정도일 것입니다. 이 때 제목에 [광고] 같은 문구가 있다면 시스템은 이 메일을 스팸 메일로 구분하겠죠. 클래스가 스팸 메일과 일반 메일 두가지 만 있기 때문에 이 경우는 이진 분류(Binary classification) 입니다. 위 그래프에서 클래스를 구분해주는 경계선인 결정 경계(Decision boundary) 또한 확인 할 수 있습니다.


손으로 쓴 숫자 이미지 데이터인 MNIST

이미지 출처: https://en.wikipedia.org/wiki/MNIST_database


다중 분류(Multiclass classification) 의 대표적인 예는 손글씨 인식입니다. 손으로 쓴 숫자 이미지 샘플을 모아서 모델을 충분히 학습 시킨 뒤 새로운 글자가 입력되면 이 글자가 어떤 글자인지 예측하는 것입니다.


회귀(Regression)


연속적인 출력 값을 예측하는 것이 회귀(Regression) 입니다. 회귀는 예측 변수 혹은 설명 변수(Predictor variable or Explanatory variable) 을 입력으로 하여 연속적인 속성을 가진 반응 변수(Response variable, Target, Outcome, Output) 을 예측하는 것입니다. 


선형 회귀의 예

이미지 출처: https://en.wikipedia.org/wiki/Linear_regression


예를 들어 키가 입력되면 예상되는 몸무게를 출력하는 선형 회귀(Linear regression) 모델을 생각할 수 있습니다. 키가 크다고 무조건 몸무게가 높은 것도 아니고 반대의 경우도 마찬가지이지만, 일반적으로 키와 몸무게는 비례하는 경향이 있기 때문에 이를 선형 회귀로 생각해 볼 수 있습니다.



2. Unsupervised learning(비지도 학습)


비지도 학습은 클래스가 주어지지 않거나(혹은 할 수 없거나), 구조를 알 수 없는 데이터를 다룹니다. 군집과 차원 축소는 비지도 학습의 하위 분야이기도 합니다.


군집(Clustering)


 


이미지 출처: https://en.wikipedia.org/wiki/Cluster_analysis


군집은 사전 정보 없이 쌓여 있는 정보들을 유의미한 클러스터(Cluster or Subgroup) 으로 나누는 데이터 분석 기법입니다. 각 클러스터의 데이터들은 클러스터 내에서 유사성을 갖고 다른 클러스터와는 유사성을 공유하지 않습니다. 클러스터링 방법에 따라 위 그림처럼 일부 파란점의 클러스터가 다르게 분류될 수 있습니다. 데이터가 어떤 클러스터로 구분 되는지 사전 정보가 주어지지 않기 때문에 클러스터링은 비지도 학습이 됩니다.


차원 축소(Dimensionality Reduction)


차원 축소의 예

이미지 출처: DOI: 10.1007/978-3-319-92537-0_64


차원 축소의 또 다른 예

이미지 출처: https://hackernoon.com/a-laymans-introduction-to-principal-components-2fca55c19fa0


차원 축소(Dimension reduction) 의 의미는 위 이미지처럼 데이터의 차원을 줄여서 사용자가 해석하기 편하도록 하는 것이라고 직관적으로 이해할 수 있습니다. 더 나아가서 머신 러닝에서 다루는 데이터가 너무 고차원이면 데이터 용량이 커서 계산 성능과 저장 공간의 한계가 문제가 되기도 합니다. 여기서 데이터가 고차원이라는 얘기는 한개의 샘플이 가지고 있는 정보의 종류가 다양하다는 의미입니다. 


사람에 대한 데이터를 예로 들면 머리카락 색, 피부 색, 눈동자 색, 키 같은 표면적인 요소 외에도 연봉, 직업, 거주지 같은 정보처럼 한 사람에 대한 정보이더라도 무수히 많은 종류의 정보를 포함 할 수 있습니다. 이런 정보의 종류가 추가될 수록 데이터는 더 고차원이 됩니다. 거주지와 키의 상관 관계에 대한 분석을 한다면(아무 상관 없을 것 같지만) 눈동자 색 같은 정보는(특히 한국인은 더더욱) 무의미하니 차원을 축소해서 없애도 아무 문제 없을 것입니다.


차원 축소는 사용자(혹은 모델이)가 분석에 필요한 정보를 유지하면서 더 작은 차원의 부분 공간(Sub space) 으로 데이터를 압축합니다.



3. Reinforcement learning(강화 학습)


강화 학습(Reinforcement learning) 은 프로그램이 작성된 의도와 맞게 행동하면 득점하고 반대로 행동한다면 감점하는 식으로 주어진 환경과 상호작용하면서 자신의 행동을 개선해나가는 학습법입니다.


체스 게임을 위한 인공지능을 예로 들 수 있습니다. 이 인공지능은 상대방의 말을 잡을 때마다 득점하고 자신의 말을 잃을 때마다 감점할 것입니다. 이번 행동 때문에 상대방의 말을 잡아 득점할 수 있지만, 더 많은 말을 잃어 감점을 할 것을 예측한다면 그러한 행동을 하지 않겠죠. 강화 학습은 즉시 또는 지연된 피드백을 통해 보상을 최대화하는 방법을 학습합니다.



맺으며


이번 글에서는 머신 러닝이란 무엇인가? 그 하위 종류는 무엇이 있는가? 에 대해서 적어보았습니다. 이 글을 통해서 간단하게 개념 혹은 아이디어만 이해하고 넘어가는 것을 목표로 하고 다음에 이어서 쓸 글들을 통해 더 깊은 이해를 도울 수 있도록 하겠습니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading