안 쓰던 블로그
Linear Regression 선형 회귀 본문
회귀 문제
연속된 값을 예측하는 문제
선형 회귀
주어진 데이터(실제 값) x로 타겟 y를 예측하는 과제
독립 변수 x와 y의 선형 관계를 모델링한다
1) 단순 선형 회귀
$y=Wx+b$
독립 변수 x가 1개면 단순 선형 회귀라고 하며, 위의 식을 따른다
$W$는 가중치, $b$를 편향(bias)라고 한다 (직선 방정식이라면 기울기와 절편을 말한다)
2) 다중 선형 회귀
$y=W_1x_1+W_2x_2+...+W_nx_n+b$
$y$는 1개지만, $x$가 여러 개인 선형 회귀이다. 고려해야 하는 실제 값이 여러 개일 때 사용한다
가설 세우기((Linear) Hypothesis)
데이터로부터 x와 y의 관계를 유추하고 어떤 결과를 예측하기 위한 수학적인 식이 필요하고, 그 식을 가설이라고 한다
선형 회귀의 가설은 아래와 같다
$$H(x)=W_x+b$$
데이터를 좌표 평면에 그린 뒤, $W$와 $b$값을 랜덤으로 넣어서 선을 그린다
$W$와 $b$에 따라 천차만별로 선이 그려진 와중, 실제 데이터와 가장 유사하게 지나간 선이 있을 수 있다
바로 그 선이 $y$와 $x$의 관계를 가장 잘 나타내므로, 적절한 $W$와 $b$값이라고 할 수 있다
Cost function(비용 함수, 또는 Loss function 손실 함수)
주어진 데이터에서 $x$와 $y$의 관계를 $W$와 $b$를 이용하여 식을 세우고, 가장 적절한 $W$와 $b$를 찾아내는 일을 하기 위해서는, 실제값과 예측값의 오차를 구할 수 있어야 한다. 그래야지 오차가 가장 적은 값들의 선이 적절한 $W$와 $b$이다 라고 할 수 있기 때문이다
이 때 실제값과 예측값의 오차를 구하는 식을 실제 데이터와 다른 점, 즉 오차(또는 손실)를 구한다고 하여 비용 함수 또는 손실 함수라고 한다
예측 데이터는 실제 데이터 직선의 위에 있을 수도, 아래에 있을 수도 있다. 그러므로 양수, 음수 관계 없이 동일하게 반영되도록 모든 손실에 제곱을 한다. 이런 방식으로 손실을 구하는 걸 평균 제곱 오차(mean squared error, MSE)라고 한다
각 예측 데이터 $H(x^{(i)})$에서 실제 데이터 $y^{(i)}$를 빼고, 그 값들의 전체 합에서 전체 값의 개수로 나눈다. 이를 일반화하면 아래 식이 된다
$$cost(W,b)=\frac{1}{m}\sum_{i=1}^{m}(H(x^{(i)})-y^{(i)})^2$$
$$H(x)=W_x+b$$
$m$은 데이터 개수, 1부터 $m$까지 각 데이터마다 예측 값과 실제 값의 제곱의 합을 구한 뒤 $m$으로 나눠서 평균을 구한다는 의미이다
Linear Regression의 학습이라 함은 이 값이 가장 작은 직선의 $W$와 $b$를 구하는 것이다 = $minimize cost(W,B)$
경사하강법(Gradient Descent)
손실을 최소화하는 $W$와 $b$를 찾기 위해서 사용되는 알고리즘을 최적화 알고리즘 또는 옵티마이저(Optimizer)라고 한다. 이 최적화 알고리즘을 통해 적절한 $W$와 $b$를 찾아내는 과정이 바로 학습(training)이다
그리고 가장 기본적인 최적화 알고리즘으로 경사 하강법이 있다
$cost(W,b)=\frac{1}{m}\sum_{i=1}^{m}(H(x^{(i)})-y^{(i)})^2$ 를 그래프로 표현하면 이차함수 그래프 형태가 된다
cost가 가장 작을 때의 값을 찾아야 하므로 볼록한 부분인 맨 아래 부분의 $W$값을 찾아야 한다. 찾는 과정은 다음과 같다
1. 임의의 랜덤값 $W$을 정한 뒤, 맨 아래 볼록한 부분으로 향해 $W$의 값을 수정해나간다
2. 값을 수정하는 기준은 접선의 기울기가 된다. 맨 아래 볼록한 부분으로 갈 수록(양수 기준) 접선의 기울기는 점점 작아진다. 맨 아래 볼록한 부분에 도달하면 접선의 기울기는 0이 된다. 기울기가 0, 즉 수평이 되는 지점이자 미분값이 0이 되는 지점이 cost가 최소가 되는 지점이다
3. 2번의 목표(접선의 기울기가 0이 되는 지점)를 찾을 때까지 현재 $W$에서의 접선의 기울기를 구하고, 접선의 기울기가 낮은 방향으로 $W$의 값을 변경하고 다시 미분하는 과정을 반복한다
$W$를 업데이트하는 식은 다음과 같다
$$W := W-\alpha \frac{\partial }{\partial W}cost(W)$$
$\alpha$는 일단은 상수라고 둔다. $\alpha$에다가 $cost(W)$를 미분한 값(기울기)을 곱한다
$\alpha\frac{\partial}{\partial W}cost(W)$가 양수면 $W$에서 기울기만큼 빠지게 되므로 $W$값은 현재보다 더 작은 값으로 조정된다. 반대로 음수면 $W$에서 기울기만큼 더해지므로 $W$값은 현재보다 더 큰 값이 된다
$\alpha$에 대해 더 자세히 알아본다. $\alpha$는 학습률(learning rate)이라고 한다. 학습률 $\alpha$는 $W$의 값을 변경할 때 얼마나 크게 변경할지를 결정한다. 다르게 말하면 접선의 기울기가 0이 될 때까지 경사를 따라 하강할 때 얼마나 큰 폭으로 이동할지를 결정한다.
$\alpha$가 너무 높은 값을 가지면 $W$를 찾지 못 하고 그래프를 나가버리는 발산 상태가 되고, $\alpha$가 너무 낮은 값을 가지면 학습 속도가 느려지므로 최적의 $W$를 찾아내는 것이 중요하다
'머신러닝 > 머신러닝' 카테고리의 다른 글
평가(Evaluation)_2 (0) | 2021.01.24 |
---|---|
평가(Evaluation)_1 (0) | 2021.01.24 |
RPN (0) | 2021.01.20 |
Faster RCNN (0) | 2021.01.20 |
RCNN, SPM, SPP, SPPNet (0) | 2021.01.17 |