본 글은 스스로 정리 겸, 머신러닝을 처음 배우는 사람들도 쉽게 머신러닝을 배울 수 있도록 쓴 글입니다.

수학적 지식이 부족하더라도, 머신러닝이 어떻게 돌아가는지 최대한 쉽게 이해할 수 있도록 적는 것을 목표로 하고 있습니다.

sung kim 님의 '모두를 위한 딥러닝'의 자료를 사용하여 설명합니다.

 

+ lec 0은 따로 작성하지 않겠습니다.

lec 1 - 머신러닝 기초

 

이번 Lecture 1에서는, 머신러닝이 무엇인지 간단하게 알아보고, supervised & unsupervised, regression, classification이 무엇인지 간략하게 알아보도록 하겠습니다.

머신러닝은 'explicit programming', 즉 '명시적 프로그래밍'의 한계에서 착안한 기술입니다.

 

가령, 우리가 스팸메일을 필터링하는 프로그램을 작성해야 한다고 해봅시다. 어떤 점들을 고려해야 할까요?

일단 메일 내용이 이상한 기호로 도배되어 있는지 확인하고, 특정 상표명으로 도배되어있는지 확인하는 등 굉장히 많은 점들을 고려해야 할 것입니다. 그런데 그렇게 고려한다 한들, 스팸메일이 완벽하게 막히긴 할까요?

 

스팸메일 예시..?

 

 

정말 어떻게 프로그래밍을 짠다 해도, 정말 오묘하게 글을 바꿔버린다던지, 정상적인 메일을 쓰는 척하면서 광고를 한다던지 등의 사례에 다 뚫려버리고 말겠죠? 위 사진처럼 스팸메일이 사진으로 온다면?? 더 필터링하기 힘들어질 것입니다.

 

머신 러닝은 이러한 explicit programming을 보완하기 위하여 만들어진 기술로, 인간이 직접 프로그래밍을 하지 않아도 컴퓨터가 알아서 학습하게 하여 explicit하게 programming을 하지 않아도 되게 만들어 줍니다. 가령, 우리가 명시적으로 어떤 어떤 글들을 막아라!라고 하지 않아도 알아서 글을 분석해서 막아준다는 것이죠.

그럼 이제부터 머신러닝의 종류 (학습 방법의 종류)에 대해서 알아보겠습니다.

첫 번째는 Supervised learning(지도 학습) 입니다. 

Supervised learning은 인간이 직접 컴퓨터에 답이 정해진 데이터들을 입력하여 컴퓨터를 학습시키는 방법입니다.

 

Supervised learning 예시

Supervised learning의 예시 중 하나는, 이미지들을 고양이, 개, 머그컵, 모자 등과 같은 것들로 분류하는 것입니다.

우리가 컴퓨터에게 고양이 사진들을 "이 사진은 고양이란다!" 라고 알려주며 데이터를 입력하면, 컴퓨터가 그 데이터를 바탕으로, 다른 이미지들을 입력받아도 "아! 이건 고양이구나!" 하고 분류할 수 있게 하는 것이죠.

Unsupervised learning

 

다음은 Unsupervised learning(비지도 학습)입니다.

이것도 Supervised learning과 마찬가지로 컴퓨터에게 데이터를 입력한다는 것은 동일하지만, 이번에는 답을 주지 않은 채로 컴퓨터에게 데이터를 입력합니다. 즉, 아까처럼 '이 사진은 고양이란다!' 하며 데이터를 던져주지는 않는다는 것이죠. 그리고, 그 상태로 컴퓨터가 알아서 데이터를 분류하도록 학습합니다.

 

가장 좋은 예시중 하나는 구글 뉴스입니다. 

 

구글 뉴스, 인공지능이 알아서 뉴스들을 분류해준다.

구글 뉴스는 위와 같이 여러가지 주제들을 바탕으로 뉴스를 제공합니다. 그중 사용자가 보고 싶어 하는 주제에 대해 "전체 콘텐츠 보기"를 선택하면, 그 주제에 대한 기사가 주르륵 나옵니다.

 

이런 인공지능은 어떻게 만들까요? 아까 전의 Supervised learning을 사용하기엔, 수많은 기사들이 엄청나게 쏟아져 나오고, 매일매일 새로운 주제로 기사들이 나오는데 이것들을 죄다 labeling 하기엔, 그러니까 "이게 어떤 주제다!" 하고 컴퓨터에게 알려주기엔 너무 힘들겠죠?

이럴 때 Unsupervised learning을 사용하면 됩니다. 컴퓨터에게 뉴스 기사 분류법을 학습시키고, 우리가 던져주는 뉴스들 중 같은 주제인 것들만을 분류해 주는 것이죠.

 

구글 뉴스 분류 예시. (글쓴이의 정치적 견해가 반영된 것이 아님을 알립니다.)

 

하지만, 우리들은 앞으로 Unsupervised learning에 대해서는 딱히 언급하지 않을 것입니다.

Unsupervised learning이 애초에 Supervised learning보다 학습하기 까다롭고, 조금 더 어려운 감이 있기 때문이죠. 게다가, 많은 문제들은 Supervised learning을 활용하여 해결될 수 있습니다.

Supervised learning - 흔한 머신 러닝의 문제 유형

Supervised learning을 사용하는 대표적인 예시들을 들어보겠습니다.

이미지 라벨링 : 이미지들을 각각의 태그로 분류하는 작업. 위의 개/고양이/머그컵/모자 예시에 해당한다.

이메일 스팸 필터링 : 스팸메일을 분류하는 작업. 위의 "히어로즈 오브 더 스톰" 예시에 해당한다.

시험 성적 예측 : 시험 성적 예측(...). 가령, 저번 시험의 성적들과 공부한 시간을 바탕으로 다음 시험에서 몇 점을 받을지 예측하는 것.

 

이러한 것들을 보면, 대부분 explicit하게 프로그래밍한 경우엔 해결하기 힘든 작업들이지만, 머신 러닝을 사용하면 explicit programming을 사용하는 것보다 훨씬 수월하게 위의 문제들을 해결할 수 있을 것입니다.

 

supervised learning의 유형

 

그리고, 이번에는 supervised learning의 종류에 대해서 알아봅시다.

이번에는 시험 성적을 예측하는 프로그램을 만든다고 가정해보죠.

 

"저번에 봤던 시험 성적들과 공부 시간을 종합했을 때, 내 다음 시험성적은 몇점일까?" 와 같은, 일련의 데이터를 통해서 어떠한 값 (내 공부시간)을 입력했을 때 특정한 값 (예측된 내 시험 성적)이 나오는 문제는, regression(회귀) 문제라고 합니다.

 

"내가 이만큼 공부했을 때 다음 시험을 pass할수 있을까?"와 같이, 어떠한 값 (내 공부시간)을 입력했을 때 PASS/FAIL과 같이 두 가지로 분류되는 문제의 경우, binary classification(이진 분류) 문제라고 합니다.

 

"내가 이만큼 공부했을 때 등급을 A,B,C,D,E,F 중 뭘 맞을까?"와 같이, 어떠한 값 (내 공부시간)을 입력했을 때 여러 가지 정답(A, B, C,...)중 하나를 예측하는 문제는, multi-label classification (멀티 라벨 분류) 문제라고 합니다.

 

크게 보자면, 내 데이터를 입력했을 때 특정한 값 (주로 숫자)가 나왔으면 좋겠다! 하는 것들은 regression을 사용하여 해결하면 되고, 특정한 태그들 (A,B,C, ... 또는 PASS/FAIL 등)가 나왔으면 좋겠다! 하는 것들은 classification (binary/multi-label)을 사용하여 해결하면 된다는 것입니다.

예시 1 - regression 문제
예시 2 - binary classification 문제
예시 3 - multi-label classification 문제

 

이렇게 우리는 머신러닝이 무엇인지, Supervised learning / Unsupervised learning이 무엇인지, 그리고 Supervised learning의 유형들 (regression, classification)에 대해서 알아봤습니다.

 

 

 

그럼 여기서 확인문제!

 

확인 문제 1. 머신러닝은 어떤 문제들을 해결하는데 주로 사용될까?

 

확인 문제 2. 어떤 사진들을 특정 태그로 분류하고 싶다고 할 때, Supervised learning 과 Unsupervised learning 중 어떤 방법을 사용해야 할까?

 

확인문제 3. 어떤 집의 위치, 크기 등을 바탕으로 그 집의 가격을 예측하는 프로그램을 작성하고자 할 때, regression과 classification 중 어떤 것을 사용해야 할까?

 

 

만약 이 문제 중 하나라도 풀리지 않는다면, 다시 한번 공부해서 확실히 내용을 익힐 수 있도록 하면 좋겠습니다.

 

 

다음 포스팅에서는 Linear regression이라는, regression 유형 중 가장 쉬운 모델 중 하나를 살펴보도록 하겠습니다.

+ Recent posts