본문 바로가기
Study/강의 <모두를 위한 딥러닝>

[딥러닝의 기본] 머신러닝의 개념과 용어

by 코드포휴먼 2020. 5. 20.

책 『밑바닥부터 시작하는 딥러닝』을 공부하면서 김성훈 교수님의 강의 <모두를 위한 딥러닝>를 듣게 되었다. 

따라서 정리를 하고자 포스팅 한다.

 

 

Lec 00 - Machine/Deep learning 수업의 개요와 일정

김성훈 교수님의 <모두를 위한 딥러닝> 강의

 

강의 대상은 아래와 같다.

강의 대상

머신러닝을 블랙박스처럼 사용하고 싶은 사람은 본 강의를 들으면 좋다고 한다. 

즉, 우리는 머신러닝 원리 안에 무엇이 들어있는지 모르는 채로 입력값으로 도출된 출력값으로 무언갈 할 수 있다.

만약 머신러닝을 이해한다면 블랙박스를 효율적으로 이용하여 출력값을 만들어낼 수 있을 것이다.

 

강의 목표는 아래와 같다.

강의 목표

 

김성훈 교수님이 강의를 만드는 데는 아래의 링크들을 참고하셨다고 한다.

Andrew Ng 교수님의 ML 강의 

강의를 요약한 노트 사이트

CNN 강의

TensorFlow 공식 웹사이트

TensorFlow 예제 소스들

 

 

ML lec 01 - 기본적인 Machine Learning 의 용어와 개념 설명

이번 강의에선 자주 나오는 용어를 정리할 수 있다.

 

머신러닝이란 일종의 소프트웨어 프로그램이다. 

입력을 기반으로 데이터를 읽어서 보여주는 앱과 같은 프로그램을 explicit programming이라고 한다. 

개발자가 특정 환경에서는 특정 결과와 반응을 내게끔 프로그래밍 했기 때문이다. 

그러나 어떤 프로그램에서는 explicit 하게 programming 하기 어려운 경우가 있다.

이메일 같은 스팸 필터가 그렇다. 구글의 자동화 주행 같은 경우도 너무나 많은 규칙이 있어서 지시하기 어렵다.  

 

그래서 1959년에 Arthur라는 사람이 일일이 프로그래밍하지 않고 프로그램 자체가 자동적으로 학습하게끔 하는 것을 생각해냈고, 이것이 머신러닝이다. 

 

머신러닝에서 프로그램은 학습을 해야하는데, 학습 방법에 따라 Supervised/Unsupervised learning로 나뉜다.

정해진 데이터, 레이블 붙은 예제(training set)로 학습하는 것을 supervised learning이라 한다.

label은 한국어로 '라벨'이라고 말하지만 영어발음 '레이블'로 표기하겠다.

 

예시는 아래와 같다. 

이미지를 주면 고양이일지, 개일지 등을 자동으로 알아내는 프로그램들도 머신러닝을 이용해 만들어진 것이다. 

사람들이 'cat'이라 label 달린 고양이 그림을 학습시킨다.  

 

그러나 일일이 label을 줄 수 없는 경우도 있다. 

구글 뉴스는 자동적으로 유사한 뉴스를 그루핑하는 경우다. 

비슷한 단어들을 모으는 경우도 그렇다. 

label을 만드는 것이 아니라 데이터를 보고 스스로 학습한다. 그래서 비지도학습이라고 한다.

 

여기선 지도학습을 주로 다룬다.
일반적인 문제는 Image labeling, Email spam filter, Predicting exam score다. 

Email spam filter의 경우는 스팸인 이메일(spam), 스팸이 아닌 이메일(ham)이라는 label을 가지고 학습한다.

Predicting exam score는 이전의 시험친 사람들의 점수와 시간 데이터을 가지고 학습해서 점수를 예측한다.

 

지도학습에는 Training data set이 반드시 필요하다.

Supervised learning에 사용되는 머신러닝은 위와 같다. 

머신러닝이라는 모델이 있고, 그 모델은 이미 답이 정해진(labeled) 값(보통 Y라고 함)으로 학습을 한다. 
머신러닝 모델은 값의 특징(feature)인 X을 가지고 도출된 레이블 Y로 학습을 한다.
학습을 통해 모델이 만들어진다.
만약 모델에 모르는 값인 Xtest = [9, 3, 6]를 입력하면 모델은 정답 Y를 출력한다. 
X와 Y를 Training data set이라고 부른다.

 

알파고에도 같은 요소가 있다.

알파고가 기존에 사람들이 바둑판에 둔 원리를 학습한다.
이때 사용된 데이터가 Training data set이다. 
이세돌 선수가 바둑을 두면 그 데이터를 입력 받아서 어디에 바둑을 두면 좋을지 답을 놓는다.

 

Supervised learning도 결과에 따라 세 가지로 나눠볼 수 있다.

시험 성적을 예측하는 시스템이 있다면,

성적(0~100)이라는 넓은 범위로 예측한다면 regression에 속한다. 
그러나 점수로 매기지 않고 pass/non-pass 두 가지로 분류하여 예측할 경우는 binary classification에 속한다. 
학점(A, B, C, D ...)으로 예측하는 경우는 레이블이 많기 때문에 multi-label classification이라 한다. 

 

Supervised learning엔 학습용 데이터(training data set)가 필요하다. 
성적을 예측하는 경우에는 아래와 같은 형식의 데이터가 필요할 것이다. 

10시간(x)을 공부했더니 90점(y)이 나온다는 학습용 데이터다.
이 경우 머신러닝의 모델은 Regression 모델이고, 학습 데이터를 바탕으로 training을 하게 된다.
학습 후엔 "7시간(x)을 공부했을 때 성적(y)이 얼마일까"라고 질문이 들어오면 75점 쯤이라고 답할 것이다.

 

아래처럼 pass/non-pass를 분류하는 경우엔 binary classification 모델이다.

 

아래처럼 학점 형태로 분류하는 경우엔 multi-label classification 모델이다.

 

 


출처

김성훈 교수님의 강의 <모두를 위한 딥러닝>

시즌 1 - 딥러닝의 기본 (TF 1.X lab 완료!)

https://hunkim.github.io/ml/

댓글