ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [기계학습] 선형회귀(Linear Regression) (Part 1/2)
    코딩(Coding)/기계학습 2022. 1. 11. 18:44
    728x90

    선형회귀

    선형회귀는 머신러닝 뿐만 아니라 딥러닝까지의 개념을 모두 관통하는 가장 기초적인 개념이다.
    이제 부터 하나씩 천천히 내용을 살펴보자

    가정

    아래 그림처럼 임의 점들이 좌표계에 찍혀있다고 하자

    image

    우리의 목표는 해당 좌표들을 가장 잘 대변하는 직선의 방정식을 찾는 것이다.

    가설 정의

    우리는 주어진 점들을 가장 잘 표현하는 가설직선(H(x))를 정의하는 것이다.

    가설 직선 H(x)는 아래와 같이 표현 할 수 있겠다.**

    $$
    H(x) = Wx + b
    $$

    image

    직선의 모양은 기울기(W)와 절편(b)로 결정되기때문에 우리가 결국에 구해야하는 것은 W와 b이다.

    오차(Cost, Loss, Error)

    우리가 정의한 가설직선의 오차를 구해보자
    간단한 아이디어로 가설직선의 값(H(x))과 실제 점(Y)의 차이를 구하는 것이다.

    image

    점과 점사이의 거리로 구할 수 있겠지만, x좌표가 같기때문에 단순히 H(x) - Y가 될것이다.
    다만, Cost의 값이 음수가 될수 있기때문에, 그 값에 제곱을 취한다. 따라서,

    $$
    Cost = Loss = (H(x) - Y) ^ 2
    $$

    오차 함수(Loss Function)

    오차 함수를 정의해보자
    오차 함수는 가설 직선의 값(H(x))과 실제 값(Y)의 차이에 대한 값을 수치로 표현하도록 하는 함수이다.
    $$
    MSE(W,b) = \frac{1}{m}(\sum (H(𝒙_𝒊)−Y_𝒊)^𝟐)
    $$
    선형회귀에서 사용하는 오차함수는 Mean Square Error라는 의미로 "평균 오차 제곱" 함수이다.

    image

    오차 최소화(Minimize Loss)

    우리의 가설직선이 실제값과 같아지기 위해서는 오차를 최소화 해야한다.
    오차를 최소화 하는 방법으로는 "경사하강법" 알고리즘이 있다.
    간단히 말하면, Cost 함수가 최소가 되는 변수 W,b를 찾는 것이다.

    image

    위 그림을 살펴보면, Y축은 Cost이다 즉 오차값이고 X축은 W이다.
    우리는 Cost가 최소가 되는 W를 찾는 과정을 보면, 그림에서 주황색 점이 Cost가 최소인 점으로 공을 굴리듯이 W를 흘려보내는 것이다.

    그렇다면 어떤 원리로 W와 b를 최적화를 하는 걸까?

    경사하강법

    함수 값을 증가시키고 싶다면 미분값을 더하고, 감소시키고 싶으면 미분 값을 뺀다.

    미분값이 양수이면, 증가하는 기울기에 있으므로 미분값을 더했을 때 x + f'(x) > x, 오른쪽으로 이동하여 함수값이 증가하게 된다.

    미분값이 음수이면, 감소하는 기울기에 있으므로 미분값을 더했을 때 x + f'(x) < x, 왼쪽으로 이동하여 함수값이 증가하게 된다.

    미분값이 양수이면, 증가하는 기울기에 있으므로 기존 값에서 미분값을 뺐을 때 x - f'(x) < x, 왼쪽으로 이동하여 함수값이 감소하게 된다.

    미분값이 음수이면, 감소하는 기울기에 있으므로 기존 값에서 미분값을 뺐을 때 x - f'(x) > x, 오른쪽으로 이동하여 함수값이 감소하게 된다.

    image

    함수값을 감소 시키고 싶다면, 미분값을 뺀다.

    • 접선의 기울기라는 개념이 나오게 되는데,
    • 해당 함수 F(x)를 미분한 값 f'(x)의 값이 양수라면, 증가하는 기울기이다.
      • 따라서 기존 X 값에서 미분값을 빼서 왼쪽으로 이동한다면 함수값은 감소하게 된다.
    • 반대로, 함수 F(x)를 미분한 값 f'(x)의 값이 음수라면, 감소하는 기울기이다.
      • 따라서 기존 X 값에서 미분값을 더해서 오른쪽으로 이동한다면 함수값은 감소하게 된다.
    • 그림과 함께보면 이해가 될것이다.

    그렇다면 우리는 Cost함수에서 W와 b에 대한 미분값이 필요하게 된다.
    수학적인 관점에서는 2개의 변수를 가진 함수를 각각의 변수에 대해 편미분하여 구할 수 있다.

    하지만 딥러닝의 관점에서 획기적인 역전파 알고리즘을 통해 미분값을 구할 수 있다. 이는 추후에 다뤄야겠다.

    편미분을 이용해서 Cost함수를 각각 W와 b에 대해 미분해보자

    image)image

    우리는 어느 시점의 W와 b에 대해서 오차를 구하고 그 오차가 최소가 되도록 W와 b를 갱신할 수 있다.

    이 과정을 여러번 반복하여 최적의 W,b를 찾는 것이 머신러닝의 기본 선형회귀이다.

    image

    기계학습을 처음 공부할때, 이 내용이 너무 어려웠다. 아리까리한 상태에서 코드 구현을 보면, 조금 도움이 될것이다.
    그래서 다음 포스팅은 Pytorch를 통한 선형회귀 구현이다.

    추가적으로, 포스팅에 사용한 PPT는 pdf파일로 아래 링크에서 다운받을 수 있다.
    https://github.com/JoSangYeon/Machine_Learning_Project/blob/master/PPT/01.%20Machine%20Learning.pdf

    728x90

    댓글

Designed by black7375.