본문 바로가기

[모두를 위한 딥러닝/시즌2] Lab-02, 03 Linear regression

Lab-02, 03 Linear regression

 

다음은 모두를 위한 딥러닝 시즌 2의 Lab-02 Linear regressionLab-03 Deeper Look at GD를 학습하고 요약정리한 내용입니다. Lab-03가 Lab-02에서 배우는 Gradient descent의 심화이므로 두 강의를 Linear regression으로 통합하여 작성합니다. 강의 내용을 기반으로 요약하되, 보충 설명이 필요한 경우 부스트코스 위키독스를 참고했습니다.

학습 목표

선형 회귀(Linear Regression)에 대해 알아본다.

핵심 키워드

선형 회귀(Linear Regression), 가설 함수(Hypothesis Function),

평균 제곱 오차(Mean Squared Error), 경사 하강법(Gradient Descent)

1. 데이터에 대한 이해(Data Definition)


1)  훈련 데이터셋과 테스트 데이터셋

설명

 • 선형 회귀(Linear Regression), 단순 선형 회귀(Simple Linear Regression)

: x가 1개인 선형 회귀(x로부터 y를 예측하는 1차식)

 • Training dataset: model을 학습시킬 때 사용하는 data
 • Test dataset: 학습이 끝난 후, 이 모델이 얼마나 잘 작동하는지 판별하기 위한 data

2) 훈련 데이터셋의 구성

코드

 • 데이터는 파이토치 텐서의 형태(torch.tensor)를 가지고 있어야 함

 • 입력과 출력을 각기 다른 텐서에 저장

2. 가설(Hypothesis) 수립


설명

 • Hypothesis: 머신러닝에서 세운 식

 • 선형 회귀의 가설은 $y = H(x) = Wx + b$

코드


 • Weight와 Bias를 0으로 초기화
 • requires_grad=True를 해주어 학습을 통해 값이 변경되는 변수임을 명시

3. 손실 계산하기(Compute loss)


설명

 • 손실 함수(loss function)

비용 함수(cost function)목적 함수(objective function)오차 함수(error function)

 • 평균 제곱 오차(Mean Squared Error, MSE)

코드

4. 경사 하강법(Gradient Descent)


설명
설명

 • 최적화 알고리즘(optimizer algorithm): loss를 최소로 하는 W와 b를 찾는 방법 
 • 머신러닝에서 학습(training): 최적화 알고리즘을 통해 적절한 W와 b를 찾아내는 과정

 • 경사 하강법(Gradient Descent): 가장 기본적인 옵티마이저 알고리즘 
 • 풀고자 하는 각 문제에 따라 가설, 비용 함수, 옵티마이저는 전부 다를 수 있으며 선형 회귀에 가장 적합한 비용 함수는 평균 제곱 오차, 옵티마이저는 경사 하강법이다.

코드
코드

 • optimizer.zero_grad(): gradient를 0으로 초기화

 • cost.backward(): 비용 함수를 미분하여 gradient 계산

 • optimizer.step(): W와 b를 업데이트

5. 전체 코드


코드

 • 에폭(Epoch): 전체 훈련 데이터가 학습에 한 번 사용된 주기