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

2025. 1. 7. 07:30· DS Study/CS 229(Machine Learning)
목차
  1. 0. Introduction
  2. 1. Linear Regression
  3. 1.1. Supervised Learning
  4. 1.2. Designing a Learning Algorithms
  5. 1.3.  Parameters of the learning algorithms
  6. 1.4.  least square method(최소 자승법)
  7. 2. Gradient Descent
  8. 2.1. Batch Gradient Descent
  9. 2.2. SGD(Stochastic Gradient Descent)
  10. 3. Normal Equation
  11. 3.1. Matrix derivatives
  12. 3.2. Least Squares Revisited

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
  1. 0. Introduction
  2. 1. Linear Regression
  3. 1.1. Supervised Learning
  4. 1.2. Designing a Learning Algorithms
  5. 1.3.  Parameters of the learning algorithms
  6. 1.4.  least square method(최소 자승법)
  7. 2. Gradient Descent
  8. 2.1. Batch Gradient Descent
  9. 2.2. SGD(Stochastic Gradient Descent)
  10. 3. Normal Equation
  11. 3.1. Matrix derivatives
  12. 3.2. Least Squares Revisited
'DS Study/CS 229(Machine Learning)' 카테고리의 다른 글
  • [CS229] [5] Lecture 5 - GDA & Naive Bayes
  • [CS229] [4] Lecture 4 - Perceptron & Generalized Linear Model
  • [CS229][3] Lecture 3 - Locally Weighted & Logistic Regression
  • [CS229] [1] Lecture 1 - Introduction
23학번이수현
23학번이수현
23학번이수현
밑바닥부터 시작하는 AI보안전문가
23학번이수현
전체
오늘
어제
  • 분류 전체보기 (243)
    • Statistic Study (47)
      • Mathematical Statistics(수리통.. (47)
    • Mathematics Study (15)
      • Linear Algebra (선형대수학) (15)
    • CS Study (74)
      • CLRS (자료구조 | 알고리즘) (49)
      • Database(DB) (11)
      • C++ (11)
      • 컴퓨터 구조 (2)
      • MongoDB (1)
    • DS Study (56)
      • CS 229(Machine Learning) (19)
      • CS 224n(NLP) (5)
      • Web Scraping (7)
      • R4DS(R언어) (20)
      • 밑바닥부터 시작하는 딥러닝 1 (5)
    • Hacking Study (0)
      • Web Hacking (0)
    • 코딩테스트 (5)
      • 백준-Python (5)
    • Paper Review(논문 리뷰) (43)
      • Deep Learning (16)
      • TCGA 관련 논문 (4)
      • Computer Vision (18)
      • NLP (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 수리통계학
  • introduction to algoritmhs
  • 선형대수학
  • LSTM
  • 데이터분석
  • 백준
  • 알고리즘
  • 자료구조
  • NLP
  • graph
  • Data Structure
  • R언어
  • 시간복잡도
  • web scraping
  • R4DS
  • deep learning
  • cs 224n
  • 논문 리뷰
  • AI
  • db
  • 딥러닝
  • clrs
  • C++
  • 정렬
  • Introduction to Algorithms
  • 파이썬
  • Linear Algebra
  • cs229
  • Algorithms
  • Machine Learning

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
23학번이수현
[CS229] [2] Lecture 2 - Linear Regression and Gradient Descent
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.