우노
[ML] 회귀 분석 (Regression Analysis) 의 개념과 학습 흐름 본문
회귀 분석 (Regression Analysis)
-
데이터의 연속적인 흐름을 파악해 입력이 들어왔을 때 float 형태의 값을 예측하는 것이다.
- 예 : 공부 시간을 바탕으로 한 최종 시험 점수 예측
-
즉, 데이터의 분포가 하나의 선 또는 면 안에 표현될 수 있는 최적의 모델을 찾는 것이다.
-
모델(가설)을 정의 후 비용함수(Cost Function)로 실제 값와 예측값의 오차를 구한 뒤 이를 최적화하며 학습을 진행한다.
모델(가설)
-
선형 회귀 (Linear Regression)
- H(x) = Wx + b
- 특성(입력값)이 하나이다.
-
다중 선형 회귀 (Multiple Linear Regression)
- H(x) = W1x1 + W2x2 + W3x3 + b
- 여러 특성(입력값)을 사용하여 좀 더 정교한 모델을 제시
-
H(x)는 우리가 가정한 가설(Hypothesis) 을 의미하고
-
W(Weight)는 가중치, b(bias)를 편향값을 의미한다.
- W(Weight)와 b(bias)의 값에 따라 선 또는 면의 모양이 달라지게 된다.
비용함수(Cost Function)
-
모델의 예측값과 실제값의 오차를 H(x') - y 로 구한다면 H(x') 값 보다 y 값이 클 경우 오차를 표현 할 수 없게 된다.
-
따라서 비용 함수(Cost function)를 통해 예측값과 실제값의 오차를 계산한다.
- 목적함수, 비용함수, 손실함수는 혼용해서 사용된다.
-
비용함수(Cost Function)는 평균 제곱 오차(Mean Squared Error, M.S.E)를 사용해 구할 수 있다.
- m은 데이터의 개수이다.
- 각각의 예측 값 H(x')와 실제 데이터 값 Y의 차이를 제곱한 뒤
- 전체 데이터 개수만큼의 결과 값을 더하고
- 전체 데이터의 개수만큼 나누어 평균을 구하는 방식이다.
옵티마이저 : 경사하강법 (Gradient Descent)
-
비용 함수를 최소화하는 매개 변수인 W와 b를 찾기 위해 사용되는 알고리즘을 옵티마이저(Optimizer) 또는 최적화 알고리즘이라고 부릅니다.
-
그리고 이 옵티마이저를 통해 적절한 W와 b를 찾아내는 과정을 머신 러닝에서 학습(training)이라고 부릅니다.
-
여기서는 가장 기본적인 옵티마이저 알고리즘인 경사 하강법(Gradient Descent)에 대해서 설명하겠습니다.
-
경사 하강법을 이해하기 위해서 cost와 기울기 W와의 관계를 이해해보겠습니다.
-
W는 머신 러닝 용어로는 가중치라고 불리지만, 직선의 방정식 관점에서 보면 직선의 기울기를 의미하고 있습니다.
-
설명의 편의를 위해 bias가 없이 단순히 가중치 W만을 사용한 y=Wx라는 가설 H(x)를 가지고, 경사 하강법을 수행한다고 해보겠습니다.
-
비용 함수의 값 cost(W)는 cost라고 줄여서 표현해보겠습니다.
-
이에 따라 W와 cost의 관계를 그래프로 표현하면 다음과 같습니다.
-
기울기 W가 무한대로 커지면 커질 수록 cost의 값 또한 무한대로 커지고, 반대로 기울기 W가 무한대로 작아져도 cost의 값은 무한대로 커집니다.
-
위의 그래프에서 cost가 가장 작을 때는 볼록한 부분의 맨 아래 부분입니다.
-
기계가 해야할 일은 cost가 가장 최소값을 가지게 하는 W를 찾는 일이므로, 볼록한 부분의 맨 아래 부분의 W의 값을 찾아야 합니다.
-
기계는 임의의 랜덤값 W값을 정한 뒤에, 맨 아래의 볼록한 부분을 향해 점차 W의 값을 수정해나갑니다.
-
위의 그림은 W값이 점차 수정되는 과정을 보여줍니다.
-
그리고 이를 가능하게 하는 것이 경사 하강법(Gradient Descent)입니다.
-
이를 이해하기 위해서는 고등학교 수학 과정인 미분을 이해해야 합니다. 경사 하강법은 미분을 배우게 되면 가장 처음 배우게 되는 개념인 한 점에서의 순간 변화율 또는 다른 표현으로는 접선에서의 기울기의 개념을 사용합니다.
-
그림에서 초록색 선은 W가 임의의 값을 가지게 되는 네 가지의 경우에 대해서, 그래프 상으로 접선의 기울기를 보여줍니다.
-
주목할 것은 맨 아래의 볼록한 부분으로 갈수록 접선의 기울기가 점차 작아진다는 점입니다. 그리고 맨 아래의 볼록한 부분에서는 결국 접선의 기울기가 0이 됩니다.
-
그래프 상으로는 초록색 화살표가 수평이 되는 지점입니다.
-
즉, cost가 최소화가 되는 지점은 접선의 기울기가 0이 되는 지점이며, 또한 미분값이 0이 되는 지점입니다.
-
경사 하강법의 아이디어는 비용 함수(Cost function)를 미분하여 현재 W에서의 접선의 기울기를 구하고, 접선의 기울기가 낮은 방향으로 W의 값을 변경하고 다시 미분하고 이 과정을 접선의 기울기가 0인 곳을 향해 W의 값을 변경하는 작업을 반복하는 것에 있습니다.
-
-
이제 비용(cost)를 최소화하는 W를 구하기 위해 W를 업데이트하는 식은 다음과 같습니다.
-
이를 접선의 기울기가 0이 될 때까지 반복합니다.
-
위의 식은 현재 W에서의 α 와 접선의 기울기 곱한 값을 빼서 새로운 W의 값으로 한다는 것을 의미합니다.
-
α는 여기서 학습률(learning rate)이라고 하는데, 우선 α는 생각하지 않고 현재 W에서 현재 W에서의 접선의 기울기를 빼는 행위가 어떤 의미가 있는지 알아보겠습니다.
-
위의 그림은 접선의 기울기가 음수일 때, 0일때, 양수일 때의 경우를 보여줍니다.
-
접선의 기울기가 음수일 때는 위의 수식이 아래와 같이 표현할 수 있습니다.
-
즉, 기울기가 음수면 W의 값이 증가하게 되는데 이는 결과적으로 접선의 기울기가 0인 방향으로 W의 값이 조정됩니다.
-
만약, 접선의 기울기가 양수라면 위의 수식은 아래와 같이 표현할 수 있습니다.
-
기울기가 양수면 W의 값이 감소하게 되는데 이는 결과적으로 기울기가 0인 방향으로 W의 값이 조정됩니다.
-
결국, 아래의 수식은 접선의 기울기가 음수거나, 양수일 때 모두 접선의 기울기가 0인 방향으로 W의 값을 조정합니다.
-
그렇다면 여기서 학습률(learning rate)이라고 말하는 α는 어떤 의미를 가질까요?
-
학습률 α은 W의 값을 변경할 때, 얼마나 크게 변경할지를 결정합니다.
-
또는 W를 그래프의 한 점으로보고 접선의 기울기가 0일 때까지 경사를 따라 내려간다는 관점에서는 얼마나 큰 폭으로 이동할지를 결정합니다.
-
직관적으로 생각하기에 학습률 α의 값을 무작정 크게 하면 접선의 기울기가 최소값이 되는 W를 빠르게 찾을 수 있을 것같지만 그렇지 않습니다.
-
위의 그림은 학습률 α가 지나치게 높은 값을 가질 때, 접선의 기울기가 0이 되는 WW를 찾아가는 것이 아니라 W의 값이 발산하는 상황을 보여줍니다.
-
반대로 학습률 α가 지나치게 낮은 값을 가지면 학습 속도가 느려지므로 적당한 αα의 값을 찾아내는 것도 중요합니다.
-
지금까지는 b는 배제시키고 최적의 W를 찾아내는 것에만 초점을 맞추어 경사 하강법의 원리에 대해서 배웠는데, 실제 경사 하강법은 W와 b에 대해서 동시에 경사 하강법을 수행하면서 최적의 W와 b의 값을 찾아갑니다.
-
정리하자면 가설, 비용 함수, 옵티마이저는 머신 러닝 분야에서 사용되는 포괄적 개념입니다. 풀고자하는 각 문제에 따라 가설, 비용 함수, 옵티마이저는 전부 다를 수 있으며 선형 회귀에 가장 적합한 비용 함수와 옵티마이저가 알려져있는데 이번 챕터에서 언급된 MSE와 경사 하강법이 각각 이에 해당됩니다.
-
'AI > Machine Learning' 카테고리의 다른 글
[ML] 데이터 스케일링 (Data Scaling) 이란? (8) | 2020.08.03 |
---|---|
[ML] Epoch, Batch size, Iterations 용어 정리 (0) | 2020.07.30 |
[ML] K-최근접 이웃 (K-Nearest Neighbor)이란? (0) | 2020.07.28 |
[ML] 생성한 데이터셋으로 다중클래스 분류 (다층퍼셉트론 모델) (0) | 2020.07.26 |
[ML] 생성한 데이터셋으로 다중클래스 분류 (K-NN 모델) (0) | 2020.07.25 |