안녕하세요, 오늘은 머신러닝이란 무엇인지, 그리고 머신러닝에는 어떠한 종류의 task들이 있는지를 알아보려고 합니다.
머신러닝에서 다뤄지는 문제들은, 그 목적함수와 output 또는 parameter에 따라 관점을 다르게 할 수 있는데요, 간략하게 개괄적으로 정리해보도록 하겠습니다.
머신러닝의 정의
위키피디아에서 머신러닝의 정의를 찾아보면, "경험을 통해 자동으로 개선하는 컴퓨터 알고리즘의 연구이다." 라고 적혀있습니다. 또한 아래의 이미지와 같이 많은 정의들을 보신 적이 있을 것입니다.
형식적으로 간단하게 정의를 말씀드리면,
데이터를 학습하여 예측, 분석 등을 행하는 것입니다.
하지만 실제로는, 조금 더 엄밀하게 정의를 한다면 다음과 같을 것입니다.
" 관측한 데이터를 바탕으로, 각각의 task에 대한 최적화 문제를 설계하고 푸는 것 "
입니다. 이게 가장 정확한 정의라고 할 수 있을 것 같습니다.
머신러닝이 푸는 대표적인 문제들
머신러닝은 크게 두 가지 문제를 푸는 것으로 볼 수 있습니다. 이는 각각 추론(Inference)과 학습(Learning)입니다.
추론(Inference)
추론은 output을 찾는 것입니다. Data로 부터 infer 하여 output을 내는 것이죠. 예를 들면, 어떤 함수가 최소화되거나 최대화되는 output을 찾는 것입니다.
학습(Learning)
학습은 모델 속 파라미터를 찾는 것입니다. 마찬가지로 어떤 함수를 최소화하거나 최대화시켜주는 parameter 값을 찾아내는 것입니다.
최적화 문제를 디자인 하는 방법
이것은 우리의 함수와 output, 또는 파라미터를 어떻게 설정할 것인가에 따라 경우가 나뉘는 문제입니다. 이 경우에 따라 머신러닝의 문제들은 다음과 같은 시각들의 관점으로 나누어 볼 수 있습니다.
- Supervised / Unsupervised / Reinforcement Learning
- Classification / Regression
- Probabilistic / Non-Probabilistic
- Generative / Discriminative
- Multiway / Structured