이번 포스팅에서는 선형회귀와 경사하강법 이론에 대한 기본적인 과정을 알아보겠습니다.
선형회귀
Input_data와 Target_data가 아래와 같이 열벡터로 주어졌다고 가정해보겠습니다.
각각의 점이 (1, 4), (2, 7), (3, 11)로 순서쌍을 이루고 있습니다.
즉 Input_data와 Target_data가 1-1 correspondence를 이루고 있습니다.
그림1.의 Data를 좌표평면 위에 나타내면 다음 그림과 같습니다.
그림을 그려 확인해 봤을 때 주어진 세 점은 y = 3*x + 1 이라는 직선위의 점이라는 것을 시각적으로 확인할 수 있습니다.
그런데 Input_data와 Target_data의 realation이 {(1, 4), (2, 7), (3, 11)}이 아닌
그림3. 과 같은 순서쌍을 가진다면 어떻게 될까요?
아래 그림은 그림3. 을 좌표평면 위에 표현한 것입니다.
그림4. 를 봤을 때, 그림2. 에서 처럼 세 점을 지나는 직선의 방정식을 찾을 수 있을까요?
계산해 본다면 세 점을 지나는 직선의 방정식은 찾을 수 없다는 것을 쉽게 알 수 있습니다.
그러나 세 점을 동시에 지나는 직선의 방정식은 찾을 수가 없지만
세 점과 밀접하게 가까운 직선의 방정식 하나는 찾을 수 있다는 것을 직관적으로 파악 가능합니다.
그 때의 직선 그래프를 그림4. 와 같이 두겠습니다.
그리고 직선의 방정식을 아래와 같은 방정식으로 두겠습니다.
그렇다면 그림4.의 빨간색 직선이 세 점을 가장 잘 표현하는 직선이라는 것을 어떻게 알 수 있을까요?
컴퓨터는 세 점과 빨간 직선간의 오차를 계산해 오차가 가장 적은 직선을 최적값으로 선택합니다.
세 점이 실제값이 되며, 우리가 세 점을 가장 잘 표현할 것이라고 예측한 직선의 점들이 예측값이 됩니다.
그래서 오차를 구하는 식은 다음과 같습니다.
그림7. 은 오차의 정의를 토대로 오차값을 시각화한 것입니다.
선형회귀에서는 이 오차들을 잘 표현하기 위해 MSE(Mean suqared error)라는 식을 이용하는데
말 그대로 MSE는 오차제곱의 평균입니다.
이제 그림7.에 대한 MSE를 계산해보겠습니다.
결국 아래와 같이 일반화할 수 있습니다.
MSE의 값은 직선의 방정식에서 기울기인 w와 y절편인 b에 의해 결정됩니다.
w(기울기)와 b(y절편)이 독립변수인 셈입니다.
만약 w(기울기)가 MSE를 최소화하는 기울기라고 가정한다면
w의 값을 증가시켰을 때와 감소시켰을 때,
MSE의 값은 어떻게 변할까요?
기울기의 값이 작아지면 오차의 값이 더 커지고 거기서 제곱까지 더해버리기 때문에 MSE값의 급격한 상승이 일어납니다.
기울기 값이 커진 경우에도 마찬가지 이유로 MSE값이 급격한 상승을 이룹니다.
그림10.에서 보듯 애초에 식자체도 square을 해주기 때문에 w(기울기)와 MSE는 이차함수 관계를 이룬다는 것을 알 수 있습니다.
경사하강법
그림12.에서 최소값(MSE를 가장 작게하는 값)이 아닌 임의의 점을 택해보겠습니다.
그림13.을 보시면 임의의 점에서 MSE를 최소화 시키기 위해서 w(기울기)값을 증가시켜야 한다는 것을 알 수 있습니다.
그리고 우리가 선택한 임의의 점에서 접선의 기울기를 구하면 음수가 나오네요.
기울기가 음수라면 w(기울기)의 값을 증가시켜야합니다.
만약 임의의 점이 접선의 기울기가 양수인 쪽에서 존재한다면 어떨까요?
그림14.를 보면 접선의 기울기가 양수일 때는 w(기울기)값을 감소시켜야한다는 것을 알 수 있습니다.
그래서 우리는 w(기울기) 값의 변화를 아래와 같은 식으로 작성할 수 있을 겁니다.
접선의 기울기 값이 음수일 때는 w 값을 늘려주고
접선의 기울기 값이 양수일 때는 w 값을 줄여주기 때문에 그럼15.와 같이 식을 만들 수 있는 것입니다.
그런데 기울기 값이 너무 크거나 작아서 MSE를 최소화시키는데 문제가 발생할 수도 있겠죠.
그래서 도입된 값이 알파(학습률 = learning rate)입니다.
learning rate는 큰 값이 아닌 작은 값이어야 합니다. 그래야 w 값을 조밀하게 움직여 MSE를 최소화시키는데 용이합니다.
epoch는 Data_set 모두를 학습한 횟수를 말합니다. Data_set 전체를 1번 다 예측했다면 1epoch가 되겠죠.
1. Data를 읽습니다. Data를 읽는 범위에 따라 경사하강법의 종류가 구분됩니다. (배치, 미니배치, 확률적)
2. 경사하강법 종류에 따른 예측값을 계산합니다.
3. MSE를 계산하고 MSE가 '0'이 되면 중단하고 그렇지 않다면 예측값을 수정해 MSE를 최소화합니다.
'데이터 사이언스 > 따로 이론정리' 카테고리의 다른 글
<머신러닝 이론 02> 로지스틱 회귀 (0) | 2023.07.14 |
---|