DS Study/CS 229(Machine Learning)

[CS229] [2] Lecture 2 - Linear Regression and Gradient Descent

23학번이수현 2025. 1. 7. 07:30

0. Introduction

- 해당 챕터에선 Linear Regression, Gradient Descent, Normal Equation에 대해서 다룬다.

 

1. Linear Regression

- 가장 간단한 학습 알고리즘(Supervised Learning 중에서의 Regression) 중 하나라고 말하고 있다.

- 우선 학습 알고리즘을 구축할 때 가장 먼저 해야할 일은 데이터 셋을 수집하는 것부터 시작 된다.

- 다음과 같은 키와 몸무게에 대한 데이터가 셋이 주어져 있다고 생각해보자.

 

- 이를 x축을 키, y축을 몸무게로 두어 scatter graph를 그려주면 다음과 같을 것이다.

- 우리의 목표는 다음과 같다. "이 데이터를 가장 잘 나타내는 직선의 방정식 찾기"

1.1. Supervised Learning

- 이걸 Supervised Learning입장에서 바라보면 다음과 같은 과정을 거치게 된다.

- 다음과 같은 데이터셋(Training set)을 Learning algorithms에 학습시킨다.

- 그리고 그 Learning algorithms의 역할은 "이 데이터를 가장 잘 나타내는 직선의 방정식"을 찾는 것이다.

- 그 직선의 방정식은 함수로 반환이 되는데 이를 "Hypothesis" 즉, 가설이라고 할 수 있다.

- 이 Hypothesis는 결국엔 새로운 키를 입력받으면 추정된 몸무게를 반환해주는역할을 하게 된다.

 

 

1.2. Designing a Learning Algorithms

- 이러한 Learning Algorithms은 어떻게 설계를 할 수 있을까?

- 가장 먼저 설계해야 하는 것은 Hypothesis를 어떻게 표현할 것인가이다.

- 현재 우리가 가장 먼저 알아볼 Learning Algorithm은 Linear Regression이기 때문에, 

- Hypothesis를 다음과 같이 설계 가능하다.

- 해당 형태를 잘 보면, 딥러닝에 익숙한 사람들은 Affine Transformation과 같은 수식이라는 것을 알 수 있다.

- 여기서 우리는 h(x)를 몸무게, x를 키라고 생각을 할 수 있다.

- 만일, 나이를 더 추가적으로 몸무게를 맞추기 위한 단서로 추가하고 싶다면 어떻게 해야할까?

- 다시말해 데이터셋이 다음과 같다고 생각해보자.

 

- 이럴 때 가설은 다음과 같이 설계가 가능하다.(x1 : 키, x2: age)

 

1.3.  Parameters of the learning algorithms

- 우리는 앞서서 가설을 다음과 같이 설계를 하였다.

 

- 우리가 해야 할 일은 해당 h(x)의 정확도를 높이기 위해서 theta를 설정해줘야 한다는 것이다.

- 그래서, 여기서 x들은 우리가 예측에 사용하게 될 feature라고 불리고,

- theta는 학습하게 될 parameter라고 불린다.(Learning Algorithms의 역할은 이러한 parameter를 업데이트를 해주는 것이다.)

- h(x) 혹은 y는 target이라고 불린다.

 

1.4.  least square method(최소 자승법)

- 우리는 우리의 가설이 적합한지 판단하기 위해 least-square method를 이용하여 검증 할 것이다.

- 이 least-square method가 무엇인지 간단하게 설명하자면,

- 예측값인 h(x)와 실제 값인 y값의 차이를 최소화하는 기법이다.(즉 다음 수식을 minimization하는 것과 같다.)

 

- 여기서 좀 더 테크닉을 첨가해서 1/2 을 곱해준다. (미분을 할때 더 편리하게 하기 위함)

 

2. Gradient Descent

- 그러면 minimize하는 방식에 대해서 한번 알아보자.

- Gradient Descent에 대해서 알아볼건데, 간단하게 함수 하나를 정의하고 넘어가보자.

- 다음과 같이 minimize할 함수를 J(theta)라고 정의하자.

- Gradient Descent는 Loss Function을 최소로 만드는 적당한 parameter를 찾는 방법론중 하나이다.

- 반복적으로 parameter를 update하면서 Loss Function을 줄여나가는 것이다.

 

- 최종적으로 J(theta)가 최소가 되도록 하는 theta_0 , theta_1을 찾아야 된다는 것이다.

- Gradient Descent를 의인화하면 다음과 같이 설명이 가능하다.

"눈을 감고 한바퀴 돌았을때 가장 가파르게 내려가는 방향으로 아주 작게 한걸음 내려간다."

- 그래서 이 작업이 계속 되었을 때 다음과 같이 최소값에 도달하게 되는 것이다.

 

- 하지만, 시작지점이 어디냐에 따라 Local min에 빠져버릴 가능성도 존재한다.

 

- 이런 Gradient Descent를 공식화 하면 다음과 같다. := 는 업데이트를 한다는 의미이다.

- 이 수식에서 eta는 Learning Rate를 의미한다.(즉, 얼마나 내려갈지의 간격을 결정해준다.)

 

- 한번 편미분 값이 어떤식으로 나오는지 계산을 통해 확인해보자.

- 편미분한 결과를 그대로 대입해서 식을 다시한번 확인해보면 다음과 같다.

 

- 이걸 contour(등고선)상에서 gradient descent의 과정을 확인해보면 다음과 같다.

- 여기서 알 수 있는 점은 항상 gradient는 등고선의 접선방향과 수직이라는 점이다.

2.1. Batch Gradient Descent

- 해당 과정을 우리는 Batch Gradient Descent라고 불린다.

- 이걸 알고리즘으로 나타내면 다음과 같다.

 

2.2. SGD(Stochastic Gradient Descent)

- 기존에 Batch Gradient Descent는 전체 데이터를 보고 계산하지만

- SGD는 한번에 1개이 데이터만 보고 theta를 업데이트 하는 방식이다.

- SGD를 그림으로 나타내면 다음과 같다.

 

- SGD는 매우 많이 진동한다. 그리고 GD(Gradient Descent)처럼 수렴하지 않는다.

- 이러한 SGD는 GD보다 더 빠르게 global min에 도착하게된다. 

- 실무에서 Dataset의 크기가 크기에 SGD를 사용한다고 한다.

 

3. Normal Equation

- Linear regression에서 해를 한번에 구할 수 있는 방법이 Normal Equation을 푸는 것이다.

- 이를 알기 전에 여러 표현법에 대해서 알고 넘어가보자.

3.1. Matrix derivatives

- 즉 행렬 A의 각 원소들마다 편미분을 진행하고 그 값들을 A와 같은 크기의 행렬로 재배열하는 것을 의미한다.

- 예를 들어 다음가 같은 함수가 있다고 생각해보자. 그러면 결과는 다음과 같이 나올 것이다.

3.2. Least Squares Revisited

- 앞서 Matrix Derivatives을 알아보았으니, Loss Function이 가장 최소가 되도록 하는 parameter를 찾아보자.

- 우선 X는 다음과 같이 표현이 가능하다.

 

- 그리고 실제 정답 레이블을 나타내는 y벡터를 다음과 같이 나타낸다.

- 실제 예측 함수는 다음과 같이 표현이 가능하다.

 

- 그러면 우리가 구하고자 하는 Loss Function은 다음과 같이 표기가 가능하다.

 

- 해당 Loss Function의 최솟값을 찾기위해 편미분을 구해 0 이되는 시점을 찾아주면된다.