Introduction to Machine Learning

해주·2020년 7월 1일
0

(예전 블로그에 있었던 글로 2018년에 썼던 글입니다 😉)

Intro

알파고의 등장 이후 머신러닝(Machine Learning) 은 꽤 많이 쓰이는 용어가 되었다. 알파고의 이세돌의 대국이 이제는 나름 옛날의 일이 되어버리긴 했지만.. 그 때 내가 컴퓨터공학과는 많이 동떨어진 삶을 살았음에도 인공지능이 이만한 고차원의 사고를 할 수 있구나, SF영화에서 봤던 내용들이 곧 현실이 될 수 있겠구나, 같은 생각을 했던 기억이 난다.

깃 블로그의 첫 포스팅인 이번 포스팅에서는, 간단한 머신러닝의 정의와 종류에 대해서 정리해보려고 한다. 머신러닝에는 Linear Regression, Logistic Regression과 같이 한번쯤은 들어봤을 만한 초기의 머신러닝 기법에서, Deep Learning처럼 요즘 뜨겁게 인기를 끌고 있는 기법들에 이르기까지 다양한 알고리즘들이 존재한다. 이러한 다양한 알고리즘은 크게 4가지로 분류된다. (3가지로 분류하기도 한다.) 자세히 알아보자.

About Machine Learning

컴퓨터 공학을 전공하면서 굉장히 많이 듣는 분야가 머신러닝이다. 처음에 머신러닝에 대해서 아무것도 몰랐을 때는 Machine LearningDeep Learning, Neural Network가 크게 다르지 않은 것들이라고 생각하기도 했었다. 그래서 나와 같은 생각을 하는 사람이 없도록 머신러닝에 대해서 알아보기 전, 먼저 Machine LearningDeep Learning 이 어떤 관계에 있는지 확인할 필요가 있을 듯 같다. Machine Learning 의 정의는 다음과 같다.

The field of study that gives computers the ability to learn without being explicitly programmed - Arthur Samuel

아서 사무엘은 명시적으로 프로그래밍하지 않고도, 컴퓨터가 알아서 학습하도록 하는 알고리즘을 머신러닝이라고 정의했다. 사실 일반적으로 프로그래밍이라고 하면 어떤 데이터를 input으로 넣어서, 어떤 알고리즘의 과정을 거쳐서, 결과적으로 도출될 'output'을 얻는 과정을 의미하고, 이때 바람직한 사람의 역할은 바람직한 결과가 나오기 위해서 적절한 알고리즘을 선택하고 구현하는 것이다. 하지만 머신러닝에서의 프로그래머의 역할은 조금 다르다. 하단의 사진을 보자.

image

사진에서 알 수 있듯이 머신러닝에서 관심 있는 것은 모델 그 자체이다. Input과 Output을 동시에 주고, 모델이 적절한 Output을 도출할 수 있도록 모델을 학습시킨다. 아니, 모델이 스스로 학습하도록 만든다.

Supervised Learning

Supervised Learning은 지도 학습, 또는 교사 학습으로 번역하고는 한다. 하지만 대부분 지도학습이라는 말로 supervised learning을 표현하기에 앞으로의 포스팅에서는 '지도학습'이라는 표현을 사용하겠다. 지도학습은 데이터에 레이블(label)이 포함되어 있는 경우를 의미한다. 레이블이라는 말이 생소하면 정답이라고 생각해도 된다. 예시를 생각해보면 더 이해가 쉽다.

종양이 악성인지 양성인지 분류하는 모델을 생각해보자. 이 경우에 모델을 학습시킬 데이터는 환자의 기본적인 개인정보와 의료정보, 그리고 암이 악성인지 양성인지의 여부가 될 것이다. 해당 데이터가 악성인지, 양성인지의 여부를 알아야 다른 데이터에 근거해 분류모델을 도출해낼 수 있지 않을까? 이해를 돕기위해 내가 임의로 만든 간단한 데이터를 확인해보자. 물론 실제로 데이터 분석에 쓰이는 데이터는 훨씬 더 양도 많고 복잡할 것이다.

이름나이흡연 여부종양의 크기악성/양성
김별25178O4cm악성
이네모31181X1.9cm양성
박동글47165X2.4cm악성
정마름모19159X3.8cm양성
최세모72174O3.1cm악성
A56171O2.6cm

상단의 테이블은 5개의 observation과 6개의 feature로 이루어져 있는 데이터 셋이다. 이 중 정답 label이 악성인 데이터는 3개, 양성인 데이터는 2개이다.

여기에서 만일 악성/양성 여부를 모르는 A의 종양이 악성인지 양성인지를 어떻게 예측할 수 있을까?

물론 수많은 방법이 존재한다. 데이터들을 좌표상에 찍어서 분류를 할 수도 있고, 담배피는 사람이 모두 악성 종양이므로 A도 악성 종양일 것이라고 판단할 수도 있고, 각각의 데이터가 악성일 확률이 얼마나 되는지 계산하고 그 확률에 기반해 판단할 수도 있을 것이다. 이렇게 데이터에 정답이 되는 label이 있어 Supervised learning으로 해결할 수 있는 문제들과, 이러한 문제를 풀기 위한 다양한 기법들이 있다. 다음 포스팅에서 차례차례 알아보도록 하자. 이렇게 모든 데이터에 label이 달려있고, 그 label에 기반해서 판단내릴 수 있으면 좋겠지만 세상에 존재하는 상당수의 데이터에는 label이 달려있지 않다. 정답이 존재하지 않는 문제들은 unsupervised learning 으로 모델을 학습시켜 문제를 해결한다.

Unsupervised Learning

앞서 설명했던 Supervised Learning과는 다르게 Unsupervised Learning, 다시 말해 비지도학습에는 정답(레이블)이 존재하지 않는다. 군집화(clustering)가 비지도 학습의 대표적인 예시인데, 데이터들이 가지고 있는 속성들을 이용해 비슷한 특징을 가지는 그룹으로 나누는 것을 의미한다.

image

위의 사진을 보면, 왼쪽의 데이터는 레이블이 없이 가지고 있는 속성에 따라 산재되어 있다. 이러한 데이터에 클러스터링을 적용하면 오른쪽의 데이터처럼 유사한 속성을 가지는 데이터들끼리 그룹화된다. 이 경우에는 그룹을 3개로 나누겠다고 설정했지 때문에 오른쪽의 그림처럼 분류되지만, 그룹의 개수를 다르게 설정하면 오른쪽의 그룹화와는 다르게 클러스터링 된다. 이때 클러스팅을 하는 방법론으로는 K-means Clustering 등이 있다.

Reinforcement Learning

Reinforcement Learning(강화학습)이란 어떠한 환경을 정의하고, 그 환경에서 정의된 에이전트가 행동을 선택하면 그 행동에 맞는 보상이나 벌을 줘서 바람직한 행동(보상을 많이 받는 방향으로)을 하게끔 학습하는 방식이다. 우리가 많이 알고 있는 알파고가 강화학습을 통해 생성된 모델 중 하나라고 할 수 있다.

이러한 강화학습은 자율주행을 비롯해 로봇, 게임산업 등과 같이 다양한 분야에서 사용되고 있다.

Reference

  1. https://www.cisco.com/c/m/en_us/network-intelligence/service-provider/digital-transformation/get-to-know-machine-learning.html
profile
해주의 벨로그

0개의 댓글