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 이되는 시점을 찾아주면된다.
'DS Study > CS 229(Machine Learning)' 카테고리의 다른 글
[CS 229] [6] Lecture 6 - Support Vector Machines (1) | 2025.01.20 |
---|---|
[CS229] [5] Lecture 5 - GDA & Naive Bayes (0) | 2025.01.17 |
[CS229] [4] Lecture 4 - Perceptron & Generalized Linear Model (0) | 2025.01.14 |
[CS229][3] Lecture 3 - Locally Weighted & Logistic Regression (0) | 2025.01.12 |
[CS229] [1] Lecture 1 - Introduction (1) | 2025.01.04 |