선형회귀(Linear Regression)의 비용을 최소화하는 방법

2022. 12. 4. 12:34텐서플로우로 보는 딥러닝 기초

 

 

 

▣ 문제

x = {1, 2, 3}

y = {1, 2, 3} 이고,

W = 0일때 cost(W)의 값은 ?

 

▣ 풀이

 

 

 

cost(W) = 4.67

 

 동일하게 

W = 1, W = 2, W = 3일때를 각각 계산 해 준다.

 

▣ W = 1, cost (W) = ?

 

 

 

cost(W) = 0

 

▣ W = 2, cost (W) = ?

 

 

 

cost(W) = 4.67

 

▣ W = 3, cost (W) = ?

 

 

 

cost(W) = 18.67

 

이를 그래프로 그려보면

 

 

 

 

 

 

 

 

 

 

 

 

 

W = 1 일때 cost의 값이 최저가 된다는걸 알 수 있다.

그런데 컴퓨터는 이를 직관적으로 판별 할 수 없으니 이를 판별하기 위해 쓰이는 방법이 바로

Gradient descent algorithm이다.

 

▣ Gradient descent algorithm의 동작 법

1. 최초의 W, b 값을 추정해서 정한다.

(그 값이 랜덤이든 0, 0 이든 상관 X)

2. W, b 값을 cost(W,b) 값이 줄어들도록 조금씩 지속적으로 바꿔준다.

3. 이렇게 지속적으로 업데이트 할 때의 기울기 값을 구해서 cost(W, b)가 최소화가 되도록 업데이트 해준다.

4. cost(W, b)의 값이 최소가 될 때 까지 앞의 과정을 무한 반복 해준다.

 

그림으로 한번 살펴보자

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. Initial Weight = 최초의 W, b값 (임의로 설정) W = 4, b = 40

2. Gradient = 그래프에서 지정한 점의 미분점 즉 기울기 값을 의미하고 그 값에 맞게 cost의 값이 최소가 되도록 Initial Weight의 값을 업데이트 한다.

3. Increment Step = 2번 과정을 거친 후의 다음 점을 의미 이 점에서의 기울기를 또 구해서 2번 과정을 반복한다.

4. Minimum cost = cost값이 최소인 점으로, 이 점에 도달할 때 까지 1~3번 과정을 무한 반복 하면 된다.

 

 

▣ 이때 알 수 있는 특징

1. 기울기가 클수록 업데이트과정에서 많이 변한다.

2. W 초기 값을 양수로 잡던 음수로 잡던 결국 기울기에 따라 업데이트를 하기 때문에 cost 값이 최소가 되도록 하는 Minimum cost에 똑같이 도달한다.

 

 

▣ 자세한 과정 

여기서 Gradient를 구하기위해 미분을 할 건데 

 

 

 

기존 cost 식에서 m 대신 2m을 사용할 예정

 

 
 

 

 

 

그 이유는 m대신 1m, 2m, 3m, 4m, ....., ~m 등
몇 m으로 바꾸든지 cost의 특성에는 큰 영향을 주지 않기 때문에 식을 조금 더 간략하게 만들기 위해서이다.

 

 

이를 계산하면
 

 

 
 

 

 

 

 

 

 

 

 

 

즉  Gradient descent의 값은

 

 

 

 

 

 

 

 

 

 

이렇게 표현할 수 있다.

 

Gradient descent를 사용할 수 없는 구조

 

 

 

 

 

 

 

 

 

 

 

 

이유

Local Minimum이 여러개이기 때문

 

Local Minimum : 주변에 비해 상대적으로 낮은 곳을 의미 (빨간색 동그라미)

 

 Gradient descent를 사용할 수 있는 구조

 

 

 

 

 

 

 

 

 

 

 

 

 이유

Local Minimum이 한개이기 때문