본문 바로가기

Study with me

[Machine Learning #3] Linear Regression with univariable(단일 변수 선형 회귀)

* 이 글은 Andrew Ng 교수님의 Coursera 무료 온라인 강의인 'Machine Learning' 강의를 정리하였습니다.

 

1주차 - (2) 퀴즈 답 !

1. 다음은 Regression Problems(회귀 문제)일까요? Classification Problem(분류 문제)일까요?

 

Problem 1 : You have a large inventory of identical items. You wannt to predict how many of these will sell over the next 3 months 

-> 하고 싶은 것 : 아이템 판매량 예측  -> 판매량은 연속적인 값(=어떤 불연속적인 값들 중에 고르는 것 아님) -> Regression Problem 

 

Problem 2 : You'd like software to examine individual customer accounts, and for each account decide if it has been hacked/compromised

-> 하고 싶은 것 : hacked 또는 compromised 둘 중에 뭔지 -> 불연속적인 두 값(hacked이면 1, compromised 면 0) 중 하나로 분류 -> Classfication Problem

 

2.  다음 중 Unsupervised Learning(비지도 학습)을 적용하기 적합한 것은 무엇일까요? ( 맞는 답을 모두 고르세요! & 힌트 : 밑줄)

a) Given email labeled as spam/not spam, learn a spam filter

    -> 하고 싶은 것: 메일이 스팸인지 아닌지 구분 ->  스팸인지 아닌지 라벨링 된 데이터 제공 -> 즉 데이터에서 정답 제공 -> 지도 학습 ( + 스팸(1)/정상(0) 불연속적인 값 예측이므로 Classfication Problem)

b) Given a set of news articles found on the web, group them into set of articles about the same story

    -> 같은 이야기의 기사끼리 묶기 -> 데이터의 구조 파악(어떤 데이터가 어떤 데이터랑 더 가까운지=더 비슷한지) -> 비지도 학습

c) Given a database of customer data, automatically discover market segments and group customers into different market segments

    -> market segments를 자동으로 나누고, 고객들을 서로 다른 market segments에 구분 -> 정답 없이 자동적으로 grouping -> 데이터 구조 파악 -> 비지도 학습

d) Given a dataset of patients diagnosed as either having diabetes or not, learn to classify new patients as having diabetes or not

    -> 하고 싶은 것 : 환자가 당뇨인지 아닌지 구분 -> 당뇨(diabetes)인지 아닌지에 대한 데이터 제공 -> 데이터에서 정답 제공 -> 지도 학습(+ 당뇨(1) /정상(0) 불연속적인 값 예측이므로 Classfication Problem)

 


1주차 - (3) Linear Regression(선형 회귀)

Linear Regression(선형 회귀)는 Supervised Learning 중에서도 Regression Problem을 푸는 알고리즘 중 하나입니다. 

 

Linear(선형) : 선형 함수는 그래프를 그렸을 때 직선의 형태를 갖는 것을 말합니다. 선형 함수는 함수값을 예측하기 쉽다는 장점이 있습니다. Non-Linear (비선형) 함수는 그래프를 그렸을 때 직선의 형태를 갖지 않는 함수를 말합니다. 비선형 함수는 함수값을 예측하기 어렵습니다.나중에 Non-linear Regression(비선형 회귀)도 배우게 됩니다.  

Regression(회귀) : 통계학에서, 회귀 분석은 관찰된 연속형 변수들에 대해 두 변수 사이의 모형을 구한뒤 적합도를 측정해 내는 분석 방법입니다. 

 

따라서 Linear Regression(선형 회귀)는 정답이 연속형 값을 가지는 변수들의 경향성을 선형 함수로 표현하여,

이를 바탕으로 새로운 데이터가 들어왔을 때 정답을 예측하는 알고리즘입니다. 

 

예를 들어, 아래처럼 '집의 크기'에 따른 '집 값' 데이터들이 표시되어 있을 때 이 데이터 점들의 경향성을 직선으로 나타내어,

정답을 모르는 새로운 데이터인 '집의 크기' = 1250 feet2 인 '집의 가격'은 얼마일지를 예측하는 과정이 선형회귀입니다. 

1. Model Representation

그러면 선형회귀에서 가장 중요한 부분이 무엇일까요? 바로 직선 함수의 식을 구하는 것입니다!

직선 함수의 식만 알 수 있다면 새로 들어오는 데이터의 값을 함수식에만 넣으면 예측 정답을 구할 수 있으니까요.

 

함수식을 구하기 위해 '집의 크기'를 x, '집의 가격'을 y로 두고, y를 x에 대한 식으로 나타내면 새로운 x 값이 들어올 때 y를 구할 수 있습니다.

 

함수식을 추정하고 검증하기 위해 몇가지 notation을 정의하자면,

m은 Training Examples의 수(우리가 가진 데이터의 수, 위의 그래프에서 데이터 점의 수)이고, x는 input variable/feature이며, y는 output/target variable을 의미합니다. 

또 x(1) 과 같이 괄호 속 숫자는 데이터 중에 몇 번째 데이터인지를 알려주는 것으로 x(i)는 i 번째 데이터의 x값을 의미합니다.  

그러면 우리가 이제 구하고자 하는 함수식에 대한 이야기를 해보려 합니다.

Training Set을 바탕으로 x와 y의 관계를 표현할 수 있는 함수식을 구하는 것이 저희의 목표이고, 그 함수식을 저희는 hypothesis(h)라고 표현합니다. 가설이라는 뜻으로 해석되지만 그냥 x에서 y로 매핑을 해주는 함수로 생각하시면 됩니다. 

 

h는 x에 대한 식이므로 hΘ(x) 로 표현되고, 선형 함수이므로 다음과 같이 식이 작성됩니다. ->  hΘ(x) = Θ0 + Θ1 * x

여기서  Θ0 , Θ1 은 각각 직선(선형 함수)의 y절편(직선 위의 한 점)과 기울기를 의미합니다. 

 

고등학교 때 직선의 결정 조건은 '기울기'와 '한 점'이라는 것을 배웠을 것입니다.

그렇기에 Θ0, Θ1,을 어떻게 정하냐에 따라 직선의 모양, 즉 회귀 함수가 바뀌고, 이에 따라 실제 정답과의 오차값(=비용함수 값)이 변하므로 가장 오차가 작은 직선을 만들어내는 Θ0 , Θ1 을 정하는 것이 저희의 목표입니다!

또한 함수 hΘ(x) = Θ0 + Θ1 * x 는 변수가 x 하나인데요, 이는 하나의 feature input(예를 들면, '집의 크기')과 output 값(예를 들면, '집의 가격')의 관계를 보겠다는 의미입니다.

이렇게 하나의 변수를 사용한 선형 회귀를 영어로 Univariate Linear Regression이라고 표현합니다. 

(참고로 여러 개의 feature input( '집의 크기', '방의 개수', '집의 위치' 등 두 가지 이상의 특징)과 ouput값('집의 가격')의 관계를 보는 것은 Multivariate Regression이라고 하며, 이는 다음에 배우게 됩니다. )


2. Cost Function

가장 오차가 작은 직선을 만들어내는 Θ0 , Θ1 을 정하는 것이 저희의 목표라고 하였는데, 이 때 이 Θ(theta, 세타) 값들을 parameter(파라미터)라고 합니다. 또 위에서 말씀드린 것과 같이, 파라미터 Θ0, Θ1는 각각 직선의 y절편과 기울기를 의미하므로 Θ0, Θ1를 바꿀때마다 아래 그림과 같이 직선이 다르게 결정됩니다. 

따라서 저희는 선형회귀에서 입력 값(x)에 대해 실제 정답 값(y)에 최대한 가까운 결과를 도출하는 직선 hΘ(x)를 만들어내는 파라미터를 골라야 하는 것입니다. 

그렇다면 데이터 (x, y) 에 대해서 hΘ(x) 와 y값을 어떻게 비슷하게 만들 수 있을까요?

두 값(hΘ(x) 와 y)이 얼마나 차이나는지를 계산해서, 이 값을 줄이는 방향으로 파라미터(Θ) 값을 바꾸면 결국에는 두 값을 최대한 비슷하게 만들 수 있을 것입니다.

 

두 값의 차이를 계산하는 방법은 여러가지가 있지만, 이 강의에서는 Squared Error Function(오차 제곱 함수)을 사용합니다. 오차 제곱 함수는 말 그대로 값의 차이에 제곱을 한 값을 대부분의 회귀 프로그램 문제에서 잘 작동하며 가장 통상적으로 회귀문제에서 사용되는 방법입니다. 

 

따라서 데이터 (x,y)가 있을 때 오차 제곱 값은 (hΘ(x) - y)2 입니다. 

그런데 데이터가 하나만 있는 것이 아니라 m개 있기 때문에 i 번째 데이터를 (x(i), y(i))라고 하면, 오차 제곱 값은  (hΘ(x(i)) - y(i))2입니다. 따라서 이들의 평균값은

$\frac{1}{m}$$\sum_{i=1}^m$(hΘ(x(i)) - y(i))2

이렇게 표현됩니다.  여기에 $\frac{1}{m}$ 대신에 $\frac{1}{2m}$을 넣어서 $\frac{1}{2m}$$\sum_{i=1}^m$ (hΘ(x(i)) - y(i))2 이렇게 표현하게 되는데, 이는 나중에 미분한 식을 좀 더 단순하게 만들기 위한 과정입니다.

 

이렇게 1/2을 그냥 곱해도 되는 이유는 저희는 이 값이 최소가 되게 하는 파라미터를 구하는 것이 목적인데, 전체 값에 양의 상수를 곱해도 전체 값을 최소로 만드는 파라미터의 값은 변하지 않기 때문입니다. 

예를 들어 식 (x-3)2+5을 최소로 만드는 실수 x 값을 찾게 되면 x=3이고, 이 때 최솟값은 5입니다. 그런데 이 식 전체에 1/2을 곱해서 식 1/2((x-3)2+5)을 최소로 만드는 실수 x 값을 찾더라도 x=3으로 변하지 않습니다. 물론 이 때의 최솟값은 2.5로 바뀌지만, 저희의 목표는 식을 최소로 만드는 파라미터를 찾는 것이기 때문에 양의 상수를 곱해도 괜찮습니다. 


3. Cost Function Intuition I

위에서 복잡하게 얘기한 것을 간단하게 만들어서 좀 더 이해해보겠습니다.

 

먼저 위의 내용을 정리하면, 저희는 Hypothesis라 불리는 선형 회귀식 hΘ(x) = Θ0 + Θ1 * x 를 정해야 하고, 

hΘ(x)를 결정하는 것은 파라미터 Θ0, Θ1입니다. 

파라미터를 바꿈으로서 결정된 hΘ(x)와 실제 정답 값인 y의 차이는 식 $\frac{1}{2m}$$\sum_{i=1}^m$ (hΘ(x(i)) - y(i))2 으로 표현되고, 저희는 앞으로 이것을 cost function으로 부를 것입니다.

 

cost function은 파라미터 Θ0, Θ1가 바뀜에 따라 그 값이 바뀌기 때문에 cost function의 정의역은 x가 아닌 파라미터 Θ0, Θ1이고, J(Θ0, Θ1)로 표현합니다.

저희의 목표는 cost function J(Θ0, Θ1)을 최소화하는 파라미터  Θ0, Θ1를 찾아서 결국 이를 통해 hΘ(x) 를 정하는 것입니다.

 

그럼 이 과정을 직접 해보겠습니다. 

우선 hΘ(x) = Θ0 + Θ1 * x 를 좀 더 단순하게 하기 위해 Θ0=0이라고 가정하고 Θ1만 결정해 보겠습니다.

그렇게 되면 hΘ(x) = Θ1 * x이 되고, J의 정의역은 Θ1 하나로 J(Θ1) = $\frac{1}{2m}$$\sum_{i=1}^m$ (hΘ(x(i)) - y(i))2 =$\frac{1}{2m}$$\sum_{i=1}^m$ (Θ1*(x(i)) - y(i))2 가 됩니다. 

저희의 목표는 cost function J(Θ1)을 최소화하는 Θ1을 찾는 것 즉 minimizeΘ1J(Θ1)을 하는 것입니다. 

 

그러면 이제 Θ1에 따라 hΘ(x)가 변할 때,  cost function J(Θ1)는 어떻게 되는지를 알아봅시다.

Θ1=1이면 hΘ(x) = x 이기 때문에 아래 그림과 같은 데이터가 있으면 모든 데이터가 직선 hΘ(x) = x 위에 있습니다. 

이 때 J(Θ1)=$\frac{1}{2m}$$\sum_{i=1}^m$ 1*(x(i)) - y(i))2을 계산하면 모든 오차 제곱의 합이 0이므로 J(Θ1=1)=J(1)=0이 됩니다. 

이번에는 Θ1=0.5라 하면, hΘ(x) = 0.5 * x가 되고, 실제 데이터의 y값(주어진 정답)과 함숫값 hΘ(x)와의 차이가 생기게 됩니다. 이번에도 cost function J(Θ1)를 계산해보면 J(Θ1=0.5) = J(0.5) = $\frac{1}{2*3}$\((0.5-1)2+(1-2)2+(1.5-3)2) = 약 0.58이 됩니다. 이런식으로 Θ1=0일 때, Θ1=2일 때도 cost function J(Θ1) 값을 구할 수 있습니다. 

 

모든 실수가 Θ1값이 될 수 있으므로 이에 따라 J(Θ1) 그래프를 그려보면 아래 두 번째 그림과 같이 이차함수의 개형이 나타나고, J(Θ1)의 최솟값은 Θ1=1일 때 J(Θ1)=0이므로 저희가 찾고자 하는 파라미터 Θ1의 값은 1이 됩니다. 


4. Cost Function Intuition II

그러면 이제  Θ0=0으로 고정하고 무시했던 Θ0를 다시 살려서 Θ0, Θ1에 따른 cost function J(Θ0,Θ1)의 변화를 살펴보겠습니다.

 

그 전에 아래 그림을 보면서 한 번 더 개념 정리를 하고 가자면,

저희의 목표는  정답 y값과 함숫값 hΘ(x)가 유사한 함수 hΘ(x)를 구하는 것이고, hΘ(x)는 파라미터 Θ0, Θ1에 따라 결정됩니다. 그래서 저희는 파라미터 Θ0, Θ1를 바꿔가면서 정답 y값과 hΘ(x)의 함숫값의 오차 제곱 값을 이용해 cost function J(Θ0,Θ1)를 계산하고, 이  cost function을 최소화하는 파라미터 Θ0, Θ1를 고르면 성공입니다. 

파라미터 Θ0, Θ1가 둘 다 변할 때, 하나의 예시를 보이면 아래와 같은 그림이 있을 수 있습니다. 이렇게 파라미터 Θ0, Θ1가 둘 다 변할 때 cost function J(Θ0, Θ1)는 어떻게 변할까요?

 

위의 글에서는 Θ0=0으로 고정하였기 때문에  J(Θ0, Θ1)가 Θ1에 대해서만 변하였지만 이제는 Θ0, Θ1에 따른 변화를 모두 고려해야 합니다. 그래서 cost function J(Θ0, Θ1)는 정의역이 두 가지이고, J(Θ0, Θ1)을 식으로 쓰면 J(Θ0, Θ1)= $\frac{1}{2m}$$\sum_{i=1}^m$ ((Θ0+Θ1(x(i)) - y(i))2 이므로 각 파라미터에 대해 이차함수의 개형이 나타납니다. 이를 3차원 plot으로 그리면 아래 두 번째와 같은 그래프가 그려지고, 이러한 그래프를 contour plots, contour figure이라고 합니다.

하지만 이러한 3차원 그래프에서는 파라미터 Θ0, Θ1에 따른 그래프 변화를 눈으로 보기가 쉽지 않기 때문에 보통은 contour map을 그려서 이해하게 됩니다. contour map은 실제 지도에서 볼 수 있는 등고선 같은 것으로, 3차원 그래프를 평면으로 시각화하기 위해 사용됩니다. 따라서 파라미터 Θ0, Θ1를 바꿔 hΘ(x)가 변함에 따른 J(Θ0, Θ1)의 값을 대략적으로 contour map에 'x' 표시하면 아래 그림들과 같이 변화하는 것을 알 수 있습니다.

 

- 처음에는 hΘ(x)가 데이터의 분포 경향성과 완전 다르게 그려져서 J(Θ0, Θ1)의 최소 지점에서 멀리 떨어져 있습니다.

- hΘ(x) = 360 + 0 * x 인 경우, 앞선 경우보다는 데이터 분포 경향에 더 유사해져서 최소 지점에 좀 더 가까워진 것을 알 수 있습니다.

- 파라미터 Θ0, Θ1가 게속 업데이트 되면서 데이터의 경향성을 잘 표현하는 hΘ(x)의 파라미터를 찾게 되면,  이 때 J(Θ0, Θ1)의 값은 거의 최소값에 근사하게 됩니다.


5. Gradient Descent Algorithm

위에서  hΘ(x)가 데이터 경향성을 잘 표현하는 방향, 즉 J(Θ0Θ1)의 값이 줄어드는 방향으로 파라미터 Θ0Θ1가 계속 업데이트 되는 것을 볼 수 있었습니다. 그렇다면  어떻게 파라미터 Θ0Θ1를 우리가 원하는, 즉 J(Θ0Θ1)의 값이 줄어드는 방향으로 업데이트를 할 수 있을까요?

 

그 방법으로 사용되는 것이 바로 Gradient Descent라는 개념입니다.

파라미터 Θ0Θ1(일반화를 하면 Θ0Θ1, ..., Θn 이지만, 단일 변수 선형회귀를 다루고 있기 때문에 Θ0Θ1만 사용하겠습니다)를 업데이트하는 방식의 큰 틀은 다음과 같습니다.

 

1) 먼저 처음에는 랜덤하게 파라미터 Θ0Θ1의 값을 세팅합니다. Θ0=0, Θ1=0으로 둘 수도 있습니다.

2) 그 뒤  J(Θ0Θ1)가 줄어드는 방향으로 계속 파라미터 Θ0Θ1를 업데이트를 해서 J(Θ0Θ1)의 최솟값에 도달하는 것이 최종 목표입니다.

이 중 2)번에서 J(Θ0Θ1)가 줄어드는 방향으로 파라미터를 업데이트 할 수 있게 하는 것이 gradient descent algorithm입니다. 여기서 gradient는 '기울기', descent는 '하강'을 의미하므로 gradient descent는 J(Θ0Θ1)의 기울기가 하강하는, 즉 아래로 내려가는(줄어드는!)방향을 의미합니다.  이렇게 현 위치에서 계속해서 기울기가 하강하는, 즉 그래프가 내려가는 방향으로 이동하다 보면 이상적인 최솟값을 찾을 수 있다는 것이 gradient descent algorithm의 원리입니다.

참고로 gradient descent는 현 상태에서 다음 상태로 계속 업데이트를 하기 때문에,  처음 시작하는 위치에 따라 최종적으로 도달하는 지점이 다를 수 있습니다.

 

그래프에는 local minimum(자신의 주변 함숫값들 중에 최소인 지점, 전체를 보았을 땐 최소가 아닐 수 있음)과

global minimum(그래프 전체, 즉 그래프의 함수식의 정의역 전체에 있어서 함숫값이 최소인 지점=local minimum들 중 최소인 지점)이 존재하는데,  gradient descent는 local minimum에 도달하여도 더 이상 업데이트를 하지 않기 때문에 global minimum이 아닌 local minimum에서 학습을 마칠 가능성도 있습니다.

 

물론 global minimum에 도달하는 것이 가장 J(Θ0Θ1)의 값이 작기 때문에 가장 이상적이지만, local minimum에 도달하더라도 이전과 비교해서 J(Θ0Θ1)의 값이 줄어드는 효과가 있습니다. 

그러면 이제 Gradient Descent Algorithm에 대해 좀 더 자세히 설명해보겠습니다. 

 

그 전에 먼저 표기법을 정리하고 가자면 이 강의에서는 일반 등호(=)를 Truth assortion으로 봅니다. 즉 a=b이면 a와 b가 동일(equl)함을 의미하고, a에 b값을 대입하는 개념이 아닙니다. 값을 할당하는 수식 기호는 ':=' 이렇게 표현을 하고 있습니다. 그렇다면 a를 a+1(본인 값에 1을 더함)로 업데이트 하려면 어떻게 써야 할까요? a=a+1이 맞을까요, 아니면 a:=a+1일까요?

 

답은 a:=a+1이 맞습니다. 일반 등호는 '같다'를 의미하는데 실수 a에 대해 a=a+1는 있을 수 없는 일입니다. a+1은 한상 a보다 1큰 수이기 때문에 두 값이 같을 수가 없기 때문입니다. 

 

표기법도 정리했으니 정말 본격적으로 파라미터를 업데이트 해보겠습니다. 

저희는 파라미터 Θ0Θ1가 어느 값에 수렴할 때까지, 즉 더이상 업데이트가 되지 않을 때까지 다음과 같은 식을 이용해서 파라미터를 업데이트 할 것입니다. 

Θj := Θj - α$\frac{\partial }{\partial \Theta j}$J(Θ0Θ1)

여기서 중요한 점은 J(Θ0Θ1)값에 영향을 주는 파라미터가 여러 개(이 경우 Θ0Θ1 2개)이기 때문에,

파라미터를 업데이트 할 때 모든 파라미터들을 업데이트하기 전까지는

위 식의 우변인 Θj - α\frac{\partial }{\partial \Theta j}J(Θ0Θ1)에 업데이트 전의 파라미터 값들을 대입해야 한다는 것입니다. 

 

무슨 말이냐면, 업데이트 전 파라미터 값이 Θ0=2, Θ1=3이라고 하면,

식에 의해 Θ0가 먼저 Θ0=4로 업데이트가 되더라도 Θ1을 업데이트를 할 때에는 Θ0=4, Θ1=3가 아닌 Θ0=2, Θ1=3을 $\frac{\partial }{\partial \Theta j}$J(Θ0Θ1)에 대입해서 계산해야 한다는 것입니다. 

 

이렇게 하는 이유는 앞서 업데이트된 파라미터 값을 식에 대입하게 되면 현재 위치(업데이트 전 위치)에서의 기울기를 정확히 구하지 못하게 되기 때문입니다. 

따라서 Gradient Descent Algorithm에서는 이 규칙을 지켜서 모든 파라미터들이 더이상 업데이트가 되지 않을 때까지 업데이트를 반복합니다.


6. Gradient Descent Intuition

이제 저 식이 어떻게  J(Θ0Θ1)을 감소하는 방향으로 파라미터 Θ0Θ1를 업데이트하는지 설명하겠습니다. 

식을 보면, 파라미터의 기존 값에서 learning rate과 derivative를 곱한 것을 뺀 값으로 파라미터를 업데이트 하는 것을 볼 수 있습니다. 여기서 learning rate은 바로 다음에 설명할 개념인데, 지금은 우선 learning rate(α)이 양의 상수라는 것만 알고 계시면 될 것 같습니다. 또 derivative는 J(Θ0Θ1)를 업데이트하고자 하는 파라미터에 관해 미분한 값(편미분 값)을 말합니다. 그래프를 보면서 이 derivative가 어떻게 바뀌는지 보도록 하겠습니다. 

Θ0를 고정하고 Θ1를 업데이트 한다고 할 때, hΘ(x) = Θ0 + Θ1 * x 이기 때문에 J(Θ0, Θ1) 는 이차함수 개형으로 그려집니다. 

 

현재 Θ1값이 J(Θ0, Θ1)가 최소가 되는 값보다 클 때(=오른쪽에 있을 때), 

$\frac{\partial }{\partial \Theta 1}$J(Θ0Θ1), 즉 Θ1에 대한 J(Θ0Θ1)의 접선의 기울기는 양수입니다. learning rate(α)이 양수이므로 Θ1은 현재 값에서 양수를 뺀 값으로 업데이트가 되고, 그렇기 때문에 값이 줄어듭니다. 값이 알맞게 줄어들면 왼쪽으로 이동해서 J(Θ0, Θ1)가 최소가 되는 값에 가까워지게 됩니다. 

 

반대로 현재 Θ1값이 J(Θ0, Θ1)가 최소가 되는 값보다 작을 때(=왼쪽에 있을 때), 

$\frac{\partial }{\partial \Theta 1}$J(Θ0Θ1), 즉 Θ1에 대한 J(Θ0Θ1)의 접선의 기울기는 음수입니다. learning rate(α)이 양수이므로 Θ1은 현재 값에서 음수를 뺀 값, 즉 양수를 더한 값으로 업데이트가 되고, 그렇기 때문에 값이 커집니나. 값이 알맞게 커진다면 오른쪽으로 이동해서 J(Θ0, Θ1)가 최소가 되는 값에 가까워지게 됩니다. 

 

또 여기서 값을 '알맞게' 키우고 줄이는 것에 대한 권한은 바로 learning rate(α)에 있습니다.

learning rate α에 따른 graident descent

learning rate(α)$\frac{\partial }{\partial \Theta 1}$J(Θ0Θ1) 앞에 붙는 양의 상수 값입니다.

learning rate(α)이 매우 작으면 기존 값에서 빼거나 더하는 값이 줄어들기 때문에 값의 변화가 작습니다. 즉 업데이트가 조금씩 되기 때문에 gradient descent 속도가 느릴 수 있습니다.

반대로 learning rate(α)이 매우 크면 기존 값에서 한 번에 많이씩 빼거나 더하기 때문에 값의 변동이 크고, 그래서  J(Θ0, Θ1)가 최소가 되는 Θ1값을 지나쳐 버릴 수도 있기 때문에 수렴에 실패하거나, 잘못하면 발산할 수 있습니다.

따라서 learning rate(α)에 여러가지 값을 넣어 보면서 적당한 learning rate(α)을 찾는 것이 중요합니다. 

 

이 설명을 듣고, '그러면 Θ1 J(Θ0, Θ1)가 최소가 되는 값에 가까워질수록 값을 한 번에 조금씩(천천히) 바꿔야 하기 때문에 learning rate(α)을 업데이트 때마다 줄여야겠다'는 생각이 드셨다면 설명을 정말 완벽히 이해하신 겁니다..ㅎㅎ

하지만 다행히도 일단 적당한 learning rate(α)을 찾고나면 , 업데이트 때마다 learning rate(α)를 바꾸지 않아도 Θ1값이 천천히 업데이트 될 수 있습니다. 

이는 learning rate(α)과 함께 곱해지는 $\frac{\partial }{\partial \Theta 1}$J(Θ0Θ1) 값도 업데이트마다 변하기 때문입니다. local minimum 또는 global minimum은 $\frac{\partial }{\partial \Theta 1}$J(Θ0Θ1) 값이 0이고, 이 지점에 가까워질수록 $\frac{\partial }{\partial \Theta 1}$J(Θ0Θ1) 값은 줄어듭니다.

 

그래서 정상적으로 학습을 하고 있다면 learning rate(α)이 상수여도 기존 값에서 빼거나 더하는 양수값( |α *$\frac{\partial }{\partial \Theta 1}$J(Θ0Θ1) | ) 이 줄어들게 되고, 따라서 J(Θ0, Θ1)가 최소가 되는 Θ1값에 가까워질수록 Θ1 값이 조금씩(소심하게) 바뀌게 됩니다.


7. Gradient Descent for Linear Regression

이제 Univariate Linear Regression(단변수 선형 회귀) 내용의 마지막입니다..!

지금까지 설명한 gradient descent에 linear regression 모델의 식을 직접 대입해볼 건데, 사실 위에서 한 것을 한 번 더 정리한다고 생각하시면 됩니다. 

 

아래 그림과 같이  gradient descent 알고리즘은 J(Θ0Θ1)가 줄어드는 방향으로 파라미터 Θ0Θ1를 업데이트하는 알고리즘입니다. Linear Regression 모델에서 회귀 함수식은 hΘ(x) = Θ0 +Θ1*x 이고, cost function(비용함수)은 J(Θ0Θ1) = $\frac{1}{2m}$$\sum_{i=1}^m$ (hΘ(x(i)) - y(i))2 이므로, 이 식을 gradient descent에 대입하면 됩니다.

식을 대입해서 계산하면 $\frac{\partial }{\partial \Theta 1}$J(Θ0Θ1) = $\frac{\partial }{\partial \Theta 1}$$\frac{1}{2m}$$\sum_{i=1}^m$ (hΘ(x(i)) - y(i))2 이고, 파라미터는 Θ0, Θ1 두 개 이므로,

 

j = 0 : $\frac{\partial }{\partial \Theta 0}$J(Θ0Θ1) = $\frac{1}{m}$$\sum_{i=1}^m$ (hΘ(x(i)) - y(i))

j = 1 : $\frac{\partial }{\partial \Theta 1}$J(Θ0Θ1) = $\frac{1}{m}$$\sum_{i=1}^m$(hΘ(x(i)) - y(i)) * x(i)

이렇게 계산을 할 수 있습니다.

따라서 선형회귀(Linear Regression)에 대한 Gradient Descent Algorithm은 아래와 같이 구성되며, 반드시 파라미터를 동시에(simultaneously) 업데이트를 해야합니다. ( = 업데이트 할 때 업데이트 하기 전 Θ0, Θ1값을 이용해야 함)

이렇게 Gradient Descent Algorithm을 반복하면 파라미터 Θ0, Θ1가 업데이트 되면서 hΘ(x)는 점점 데이터 분포의 경향에 맞춰지고 J(Θ0Θ1)의 값도 작아져서 Global minimum 또는 local minimum에 도달했을 때 학습을 완료하게 됩니다.

 + ) 마지막으로 이렇게 매 스텝(한 번 업데이트하는 과정)마다 모든 training examples(m개)를 사용하는 것을 batch graident descent라고 합니다. 

 

[Quiz]

local minimum에 도달했을 때에 학습을 종료하는 이유는?