대략적인 이해를 위해서 여기를 읽어보자.
Machine Learning
machine learning 에서 결론은 어떤 input 들에 대한 model(방정식)을 구하는 것이라고 보면 될 듯 하다. 즉 어떤 input 이 어떤 방정식(모델)을 따른다면, 우리는 새로운 input 이 들어왔을 때 이 input 에 대한 output 이 어떻게 나올지 알 수 있다.
이 어떤 방정식(모델) 이 앞으로 이야기할 hypothesis function 이 된다.
- Supervised Learning[ref. 1] : data set 이 있고, 이 input 에 대해 어떤 output 이 나오는가 나와야 하는지를 알고 싶을때 사용할 수 있다.
이 알고리즘은 input 과 output 에 상관관계가 있다고 생각하는 것이다. labeled data 를 가지고 작업한다고 생각하면 된다.
문제는 다음 2가지로 나눌 수 있다. - regression problem : 결과값이 continuous 한 값으로 나오는 문제들, 예를 들어 "집크기와 가격에 대한 data 가 있을 때, 크기가 X 만한 집의 가격은?" 등의 문제가 regression problem 이 될 수 있다.
결과 값으로 정수처럼 딱 나눠지는(discrete) 한 결과를 찾기보다는 실수 값을 찾는 문제일 가능성이 크다. continuous 값을 찾아야 하니까. 물론 그렇다고 정수를 결과값을 찾는 문제라고 해서 모두다 classification problem 은 아니다. - classification problem : 결과값이 discrete 한 값일 때 쓴다. 예를 들어 "집크기가 X 만한 집이 있다면 이 집의 가격은 Y 보다 큰가, 작은가?" 라는 문제는 크다, 작다 의 2가지 결과값중 하나가 output 이 되기 때문에 이녀석은 classification problem 이 된다.
- Unsupervised Learning[ref. 2]
- clustering algorithm
어떤 dataset 에 대해서 grouping 을 알아서 해준다. - non-clustering algorithm : cocktail party alogorithm
여러개가 섞여서 혼란스러운 상황에서 어떤 구조를 찾아준다. 목소리 2개가 섞여 있는 파일에서, 음성을 분리해 내는 등의 일을 한다. - octave : machine learning prototype 을 만들기 좋은 tool / Download
Training set
m = training example 의 개수
x = input / feature 라고 부름
y = output / target variable 이라 부름
hypothesis function
우리가 training set 을 통해서 알아낸 "예측 모형(model)" 을 hypothesis function 이라고 부른다.- function h : X → Y (h maps from x's` to y's)
이것을 좀 더 직관적으로 생각해보면, 우리는 주어진 어떤 값들(traning set) 을 좌표안에 찍고, 이 점들을 대체로 만족하는 "식"(hypothesis function)을 구하는 것이다.(식은 결국 그 점들을 전부 아우르는 그래프를 그려낼 것이다.)
우리가 이 "식"을 구하면 우리는 training set 이외의 위치의 값도 알 수 있고, 이것으로 예측을 하는 것이다.
우리가 이 "식"을 구하면 우리는 training set 이외의 위치의 값도 알 수 있고, 이것으로 예측을 하는 것이다.
그리고 이 hypothesis function 에서 우리가 구해야 하는 것은 θ 이다. 즉 식이 성립하기 위한 '상수' 를 찾아야 한다.(ref. 9 에서 θ 를 '가중치' 라고 이야기한다. ref. 9의 설명이 필자는 이해하기 쉬웠다.)
일단 여기서는 꼭 1차 방정식만을 이야기하는 것이 아니다 x 가 x2 을 뜻할 수도 있다.
예를 들어 아파트값을 구하기 위해 우리가 사용하는 변수가 '평수', "단지크기" 라고 한다면, 과연 "평수"가 아파트값에 미치는 영향이 클지, "단지크기" 가 아파트값에 미치는 영향이 큰지에 따라 가중치를 달리 할 것이다.
예를 들어 아파트값을 구하기 위해 우리가 사용하는 변수가 '평수', "단지크기" 라고 한다면, 과연 "평수"가 아파트값에 미치는 영향이 클지, "단지크기" 가 아파트값에 미치는 영향이 큰지에 따라 가중치를 달리 할 것이다.
- 아파트 값 = ("평수"x θ1) x ("단지크기" x θ2)
Univariate linear regression
여기서 우리는 이 함수(hypothesis function)가 일차방정식이라고 하자.(즉 어떤 input 과 output 과의 관계가 '일차방정식' 의 모양과 비슷하다고 보면 된다.)그래서 우리는 y= θ0 + θ1x 라는 방정식에서 θ 의 값을 찾아 낼 것이다. 여기서 이 θ 값은 어떤 값이어야 하는가?
당연히 이 θ 값을 넣어서 만든 h(x) 의 y 값이 실제 값과 가장 잘 맞는 θ 값이어야 한다.
from: ref. 2 |
이렇게 x 가 한개인 hypothesis function 을 단일변량 선형회귀 (Linear regression with one variable / Univariate linear regression) 라고 한다.
- Linear regression model : hθ(x) = θ0 + θ1x
linear regression 의 목적은 cost function J(θ) 를 최소화 하는 것이다. 즉, 우리가 만든 hypothesis function 과 실제값과의 괴리를 최소화 하는 것이다.
Cost Function
이것을 이용해서 우리가 만든 hypothesis function 이 얼마나 실제값에 잘 맞는지 여부를 알아낼 수 있다.from: ref. 3 |
이 함수를 잘 보면 결국 "예측값 - 실제값" 의 평균을 구하는 것이다. 즉 "우리가 예측한 것이 실제 값들에서 얼마나 멀어져 있는가?" 에 대한 값을 구하는 것이다.
이 cost function 의 최소값이 "괴리"가 가장 적다는 뜻이되고, 결국 predict model 이 정교하다는 것을 이야기 하기에, 우리는 cost function 의 최소값을 찾아야 한다.
hθ(x) 방정식이 y= θ1x 처럼 변수가 1개라면 위의 cost function 은 변수가 2개(θ0, θ1)인 2차방정식(x2)이 된다. 그러면 그래프의 모양은 아래처럼 될 것이다. (J(θ1), θ1)
그리고 hθ(x) 방정식이 y= θ0 + θ1x처럼 변수가 2개(θ0, θ1)라면 위의 cost function 은 변수가 3개인 2차방정식이 된다. 그러면 아래와 같은 모양이 된다.(J(θ0 ,θ1), θ0 , θ1)
from: ref. 4 |
여기서 J(θ0 , θ1) 의 최소값을 선택하면, 우리는 training set 에 가장 가까운 hθ(x) 를 찾게 되는 것이다.
최소값을 찾는데에 도움을 주는 알고리즘
- Gradient Decent Alogorithm
- Normal Equation
Gradient Decent Algorithm
그럼 우리는 cost function 의 최소값을 찾아야 하는데, 이걸 찾게 도와주는 알고리즘중 하나가 Gradient Decent Algorithm 이다. 이 Gradient Decent Algorithm 이 Machine learning 알고리즘이다.Gradient Decent Algorithm 이 있는데, 이녀석의 공식은 아래와 같은 식을 수렴이 될때까지 반복하는 것이다.
위 공식을 수렴(convergence)이 될 때까지 반복 α(alpha): learning rate |
이 녀석의 계산은 아래처럼 해야 한다. 즉, θ0 를 계산한 후 그 값을 가지고 θ1 를 계산하는 것이 아니라, θ0 , θ1를 동시에 계산한 후에, 이 값을 update 한다.
이 공식을 풀어서 이야기 해보면, 현재 우리가 가진 hypothesis function, hθ(x) 가 있고, 이 녀석은 θ0 , θ1으로 이뤄져 있는데, 이 θ0 , θ1값을 바꿔가면서 가장 적합한 hθ(x) 를 찾아야 한다.
이 때 가장 적합한 hθ(x)를 찾는 것은 cost function 의 값이 가장 적은 값을 찾는 것이다. 그래서 Gradient Decent 알고리즘의 식은 θ값을 cost function 과 관계있게 만들어 준다.
특정 θ0 , θ1값에서의 cost value 가 있고, 이 cost value 에서의 기울기를 구한다. 이 기울기의 값도 중요하지만, 이 기울기로 방향을 정하게 된다. 이렇게 구한 기울기 방향으로 현재의 θ값을 움직여 나가는 것이다.(그것이 식에서는 현재 θ값에 값을 - 하는 것으로 표현된다.)
그래서 α(alpha) 가 learning rate 라 불린다. α(alpha) 가 크다면 최소값에 빠르게 접근할 수 있고, α(alpha) 가 작다면 느리게 접근하게 된다. 하지만 α(alpha) 가 너무 크면 움직이는 간격이 너무 커서 최소값을 지나쳐 버리고 다시 diverge 될 수 도 있다.
Multivariate Linear Regression
여러개의 변수 Multiple features
2개 이상의 변수가 있는 경우를 보자. 이것도 linear regression 이지만 변수가 여러개인 linear regression 이다. 그래서 multivariate linear regression (다변량 선형회귀)이라 부른다.이전의 h 함수는 1개의 변수 x 가 있었다.
hθ(x) = θ0 + θ1x
이 변수 하나가 대상의 특징(feature) 이라고 보면 된다.
hθ(x) = θ0 + θ1x1 + θ2x2 + θ3x3 ... + θnxn
hθ(x) = θ0x0 + θ1x1 + θ2x2 + θ3x3 ... + θnxn
Gradient Descent for multiple variables
아래 모습처럼 feature 수만큼(x1, x2..) 의 식이 있고, 이것이 하나의 iteration 이 된다.이 feature scaling 은 feature 즉 x0, x1, x2 .. 값들의 범위를(input value의 범위) 조절하는 것이다.(scaling) 이것은
Gradient Descent 를 좀 더 효율적으로 사용하기 위해 필요하다.
Gradient Descent 를 이용해서 우리는 hypothesis function 에 쓸 적절한 θ 값을 얻을 수 있다. 이 때 θ의 범위가 크면 descend 가 천천히 이루어진다. 그리고 x1, x2, ..(input value) 의 범위가 다르면 θ의 진동이 커진다. 그래서 최소값을 구하는데에 오랜 시간이 걸린다.
이때 θ의 범위를 줄이고, x1, x2 의 범위를 비슷하게 맞춰주면 적은 수의 연산으로 빠르게 최소값을 찾을 수 있다.(이부분에 대한 설명은 Gradient Descent in Practice I - Feature Scaling - Coursera 을 참고하자.)
standadization
이 θ의 범위를 줄이고, 변수 x1, x2, ... 의 범위를 비슷하게 하기 위해 x0, x1, x2 의 값들을 표준화, 정상화(normalization) 을 해준다. normalization 에 대한 이야기는 아래 경로를 참고하자.- KNN > distance 의 표준화, standardized distance
- 정규화(normalization)
Learning rate
gradient decent 에서 learning rate 값인 α를 구하는 법을 보자.
위 공식을 수렴(convergence)이 될 때까지 반복
α(alpha): learning rate
|
그래서 이 값을 정할 때는 대략적으로 값을 대입해서 아래처럼 그래프를 그려보면서 값이 제대로 수렴하는지를 확인해서 가장 적절한 α값을 선택한다.
from. ref. 6 |
Polynomial Regression
linear regression 의 그래프는 직선이다. 즉, input data 들이 대략적으로 한줄로 표현될 수 있다는 이야기다. 이때의 식이 다음과 같다.- hθ(x) = θ0x0 + θ1x1 + θ2x2 + θ3x3 ... + θnxn
하지만 data 속성이 꼭 linear 하지 않을 수 있다. 이때 polynomial regression 이 가능하다.
- hθ(x) = θ0 + θ1x1 + θ2x12 ----> θ0 + θ1x1 + θ2x2 (where x2 = x12 )
- hθ(x) = θ0 + θ1x1 + θ2x12 + θ3x13
Octave 에서 구현한 Gradient Descent
- Octave/computeCost.m at master · schneems/Octave
- Octave/gradientDescent.m at master · schneems/Octave · GitHub
Normal Equation[ref. 7]
Gradient Descent 알고리즘 처럼 J 값(cost function, 우리의 모델이 실제 data 와 얼마나 멀어져있나.) 을 최소화 하는 방법중 하나이다.우리가 2차방정식에서 최소값 또는 최대값을 구할때 미분을 이용하듯이, vector 에 대해서도 편미분을 통해 구할 수 있다. 그런데 이것을 선형대수를 이용하는 것이다.(?)[ref. 7]
- θ=(XTX)-1XTy
from : ref. 7 |
Gradient Descent | Normal Equation |
---|---|
Need to choose alpha(learning rate) | No need to choose alpha |
Needs many iterations | No need to iterate |
O (kn2) | O (n3), need to calculate inverse of XTX |
Works well when n is large | Slow if n is very large |
- n x n 행렬의 역행렬을 구하는데에는 대체로 O (n3) 이 소요된다.
- 대체로 feature 의 개수 n 이 10,000 이하라면, 요즘 컴퓨터에서 사용할 만 하다고 한다.
Gradient Descent 알고리즘과 차이점
Gradient Descent 알고리즘은 여러번 수행을 해서 J(θ) 의 최소값을 찾는 방법이라면, Normal Equation 은 계산을 통해 한번에 최소값을 찾는 방법이다.XTX 의 inverse matrix 가 없다면(not invertable)?
XTX is noninvertible 인 경우는 아래와 같은 이유일 수 있다.
- 일단 redundant 한 feature 가 없는지 살펴보고, 있다면, 지운다.
- 만약 집값의 feature 중에, "평수" 가 있고, "m2" 가 같이 있다면, 이것은 지운다.
- 너무 많은 feature 를 사용하는 경우 라면 (m <= n) (m: the number of example)
- feature 를 몇개 삭제하던지, regularization 이라는 방법을 이용한다.
References
- Supervised Learning | Coursera,
- Unsupervised Learning - Stanford University | Coursera
- Cost Function - Intuition I | Coursera
- Cost Function - Intuition II - Stanford University | Coursera
- Gradient Descent For Linear Regression - Stanford University | Coursera
- Gradient Descent in Practice I - Feature Scaling - Stanford University | Coursera
- Normal Equation | Coursera
- Machine Learning
- 기계 학습(Machine Learning, 머신 러닝)은 즐겁다! Part 1 – Jongdae Lim – Medium
댓글 없음:
댓글 쓰기