주니어 개발자의 대나무숲

[머신러닝/개념] 머신러닝 기본 개념 및 용어 본문

머신러닝

[머신러닝/개념] 머신러닝 기본 개념 및 용어

공대사람 2017. 7. 29. 22:44

1. 머신러닝이란?


머신러닝은 explicit programming[각주:1]의 한계 때문에 고안된 학문입니다. 가령, 어떤 메일이 스팸메일 인지 가려내는 spam filter나 자율주행 자동차 같은 경우에는 발생할 수 있는 경우의 수가 너무 많기 때문에 explicit programming으로 문제를 해결하는 데 어려움이 발생할 수 있기 때문입니다.



Machine learning is the science of getting computers to act without being explicitly programmed.[각주:2] "




cf) 딥러닝, 머신러닝, 인공지능의 차이점

개념이 포괄하고 있는 범위로 보았을 때는 인공지능이 가장 넓은 의미의 개념입니다. 인공지능의 궁극적인 지향점은 인간의 지능을 기계로 구현하는 것이기 때문입니다. 그리고, 머신러닝은 이러한 인공지능을 구현하는 구체적인 접근 방식입니다. 이러한 머신러닝에 대해, 딥러닝은 완전한 머신러닝을 실현하는 기술이라고 할 수 있습니다.


 

cf) 머신러닝, 데이터마이닝의 차이점

머신러닝은 해결하고자 하는 문제(예측하고자 하는 값)를 training data를 통해 학습된 프로그램을 이용해 풀어내는 '예측과 판단'에 초점을 두고 있는 반면 데이터 마이닝은 데이터의 미처 몰랐던 속성을 발견하는 것에 집중합니다.


2. 학습 (Learning)


머신러닝을 이용해 프로그램이 이러한 능력(해결하고자 하는 문제에 대한 답을 예측하거나 주어진 문제에 대한 판단을 할 수 있는 능력)을 갖도록 하는 것을 training data를 이용해 학습 시킨다고 합니다. 프로그램을 학습시키는 방법에는 Supervised Learning과 Unsupervised Learning이 있습니다.


1) Supervised Learning (지도 학습)


① 개념 

labeled data(training data)를 이용해 학습하는 방식입니다. 

여기서 이 label이 우리가 프로그램에게 예측해주길 바라는 값이라고 할 수 있습니다. 예를 들어, 어떤 사진이 개의 사진인지 고양이의 사진인지를 프로그램이 맞추도록 하고 싶다고 합시다. 이 때, 프로그램을 학습시키기 위한 training set의 각 사진마다 '개', '고양이' 이런식으로 label을 달아주고, 이러한 training data로 학습된 프로그램에 어떤 사진을 input으로 줬을 때, 그 사진의 label은 무엇이 되어야 할지(이 문제의 경우엔, '고양이'가 되어야 할지 아니면 '개'가 되어야 할지)를 맞추도록 하는 방식이 Supervised Learning이라고 할 수 있습니다.


② 예시

- regression

예측하고자 하는 값이 넓은 범위의 값인 경우

ex) 위의 개념도에서와 같이 공부한 시간에 따른 시험 점수를 예측하는 경우(시험 점수는 0~100점으로 넓은 범위의 값이 가능)

- binary classification

예측하고자 하는 값이 딱 두 가지 중 하나인 경우

ex) 공부한 시간에 따라 pass / fail 과목의 성적을 예측하는 경우

- multi-label classification

예측하고자 하는 값이 한정된 개수의 그룹인 경우

ex) 공부한 시간에 따라 Letter Grade(A, B, ..., F)를 예측하는 경우

 

 



2) Unsupervised Learning (자율 학습)


① 개념

처음에 label을 미리 알기 힘들기 때문에, 스스로 학습해 데이터의 주요 특징을 요약하고 설명할 수 있도록 학습하는 방식입니다.


② 예시

Google news grouping, Word clustering과 같이 비슷한 특징을 가지고 있는 데이터끼리 clustering하는 데 사용됩니다.


* 이 외에도 Semi-supervised Learning(준지도 학습), Reinforcement Learning(강화 학습) 등이 있습니다.


<참고>

1. 위키피디아 (https://ko.wikipedia.org/wiki/기계_학습)

2. 모두를 위한 딥러닝 강좌 시즌1 (https://www.youtube.com/playlist?list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm)

3. 엔비디아 블로그 (http://blogs.nvidia.co.kr/2016/08/03/difference_ai_learning_machinelearning/)






  1. input에 대해 프로그램이 어떻게 동작할 것인지에 대한 로직을 프로그래머가 미리 (직접) 정해놓은 것 [본문으로]
  2. Coursera의 Machine learning course 소개에서 발췌 [본문으로]
Comments