본문 바로가기
Machine Learning/Basic Machine Learning

[ML/DL] 선형 회귀 분석 및 비용 최소화 방법

by Sin_ 2021. 10. 19.
728x90

안녕하세요 뚜디 입니다 :)


선형 회귀 분석 및 비용 최소화 방법


이번 포스팅에서는 cost를 최소화하는

구체적인 방법과 알고리즘을 조금 더 깊이 있게 알아봅시다.

 

1. 가설(Hypothesis)함수와 비용(cost)함수 

가설 함수를 바탕으로 비용 함수를 정희했었습니다.
비용 함수는 가설 함수의 결과 와 실제 데이터의 차이를 제곱을 한 값을 모두 더해서 데이터 전체 갯수m으로 나눈 평균값을 비용함수로 정의했습니다.
이때, cost는 w와 b에 대한 함수이며, w와 b에 따라 결과가 달라지게 됩니다. cost값이 작을수록 가설이 실제와 일치하다는 뜻 입니다.
따럿, 데이터를 통해 cost가 최소화가 되는 w와 b를 찾는것이 목표라고 할 수 있습니다.

계산을 쉽게 하기 위해 가설 함수의 수식을 간략하게 만들어줍니다.
이렇게 되면 비용 함수 또한, b 가 생략됩니다.

 

2. 비용(Cost) 함수에 대해 자세히 알아보도록 하자
Cost 함수가 실제로 어떤 모습을 하고 있는지, 어떻게 생겼는지를 알아보도록 합니다.
Cost가 어떻게 생겼는지 알아보려면 w값을 변경하면서 Cost의 모양 변화를 살펴보겠습니다.

계산하기 쉽도록 x, y값이 주어지고, w는 0부터 3까지 cost(w)에 대입하여 계산을 해보도록 합니다.

계산된 결과를 그래프로 표현해보면, 위 그래프와 같이 나타나게 됩니다.
이 결과로 cost 함수의 그래프의 형태를 알수 있습니다.

최종적으로 cost 함수의 그래프는 위와 같은 그래프 형태가 될 것이며, 러닝의 목표 즉, cost가 최소화가 되는 w 값을 알아내는 것이므로 w 가 1인 경우 cost가 최저점이 됩니다.

이렇게 cost 최저점을 컴퓨터가 찾게 하려면 기계적으로 찾는 방법 또는 알고리즘이 필요합니다.
컴퓨터가 최저점을 찾는 방법으로 많이 알려진 것이 바로 Gredient descent Algorithm 입니다.

 

3. Gradient descent Algorithm (경사(기울기) 하강)
1. 비용 함수의 최소화
2. 경사 하강법은 경사를 따라 내려가면서 최저점을 찾도록 설계된 알고리즘으로 많은 cost 최소화 문제에 사용한다.
3. cost(w, b)의 경우 cost를 최소화 하기 위해 w, b를 찾는다.
4. 변수가 하나나 두 개일 때 뿐(w, b)만 아니라 cost(w1, w2, ... wn) 변수가 여러개일때도 사용 가능하다.

< 동작 원리 >
1. 최초의 추정을 통해서 w와 b 값을 정한다. (initialize)
  - 초기값이 0이든, 랜덤 값이든 상관없음
  - cost(w, b) : w와 b값을 cost가 줄어들 수 있는 방향으로 조금씩 줄어들도록 지속적으로 변경
2. w, b값을 지속적으로 업데이트 할 때 기울기(Gradient) 값을 구해 cost가 최소화 되는 방향으로 업데이트
  - Gradient는 미분을 통해 구한다.
3. cost,값이 최소점에 도달했다고 판단될 때까지 반복 진행
  - w = 1, b = 0에 수렴한다.

cost 함수 1/m으로 error를 제곱한 값의 합을 나누어주었던것을 1/2m으로 변경합니다.
이때, 1/m -> 1/2m으로 변한다 하더라도 cost에 미치는 영향은 엄청 미미합니다.
(경사 하강법으로 변경시 미분을 진행해야하므로, 수식의 간단화를 해주기 위함 : 제곱이 있어요)
마찬가지로 1/3m, 1/4m 등으로 변경해도 cost에 미치는 영향은 엄청 미미합니다.

※ TensorFlow에서 자동 미분 엔진을 제공하여 미분 계산을 별도로 진행하지 않아도됨
 - Derivative Calculator 혹은 WolframAlpha 사이트에서 미분 계산을 진행해도됨

Gradient Descent 알고리즘에 자세히 알아보면, w 값을 지속적으로 수정해가며 업데이트 하는 알고리즘입니다.
이전의 w값에서 cost 함수(비용 함수), 비용을 미분한 값을 특정 상수 α 곱한값을 빼주고 그 값을 다시 w에 업데이트 하는 알고리즘 입니다.
이때, α 값은 기울기 값을 얼마만큼 w에서 빼줄지를 결정하기 때문에 학습을 얼마만큼 할지 즉, w값을 얼마만큼 변경할지를 결정하는 파라미터가 됩니다.

※ α = learing rate(학습률)

 

728x90