일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- object detection
- TensorFlow
- matlab 영상처리
- MFC 프로그래밍
- c언어
- c언어 정리
- 컴퓨터 비전
- pytorch zero to all
- 딥러닝 공부
- 가우시안 필터링
- 딥러닝
- 케라스 정리
- tensorflow 예제
- 골빈해커
- 해리스 코너 검출
- 영상처리
- 미디언 필터링
- 파이토치
- Pytorch Lecture
- 김성훈 교수님 PyTorch
- 딥러닝 스터디
- 팀프로젝트
- 파이토치 김성훈 교수님 강의 정리
- pytorch
- c++공부
- c++
- 모두의 딥러닝 예제
- 파이토치 강의 정리
- 모두의 딥러닝
- C언어 공부
- Today
- Total
ComputerVision Jack
PyTorch Lecture 02 : Linear Model 본문
김성훈 교수님의 모두의 딥러닝 수업에 이어 PyTorch ZeroToAll (in English) 강의를 듣고 스스로 정리해보는 시간을
가져보려고 합니다. 영문 버전이지만 교수님께서 쉽운 영어로 편안하게 가르쳐 주셨습니다.
강의 링크
www.youtube.com/playlist?list=PLlMkM4tgfjnJ3I-dbhO9JTw7gNty6o_2m
Lecture 01 은 기본적인 딥러닝에 관한 개요를 설명해주시는 부분이기 때문에 강의를 듣고 따로 정리하진 않았습니다. 강의 정리는 Lecture02 : Linear Model 부터 정리를 시작했습니다.
Linear Model
모두의 딥러닝 수업처럼 처음은 Linear Model(선형 모델)로 시작하셨습니다. 선형 모델은 말 그대로 입력 데이터셋에 대해 선형으로 출력 데이터를 예측할 수 있는 모델을 뜻합니다.
보통은 y = x * w + b 의 식의 형태로 나타낼 수 있습니다. 여기서 w는 weight(가중치)를 뜻하고 b는 bias(편향)을 나타냅니다. 하지만 b에 대해선 나중에 언급하겠다 하시고 간단한 y = x * w 모델에 대해서 살펴보았습니다.
x_data | y_data |
1 | 2 |
2 | 4 |
3 | 6 |
4 | ? |
양의 상관 관계가 존재하는 데이터 셋이 존재한다고 생각해봅니다. 1시간 공부하면 2 points를 얻고 2시간 공부하면 4 points를 얻게 됩니다. 그랬을 경우 4에대한 points를 예측하는 것입니다.
우선 우린 규칙성을 토대로 4에대한 결과 값을 생각할 수 있습니다.
y_data는 x_data에 대해 2배씩 증가함을 알 수 있습니다. 따라서 x_data가 4인 경우 y_data는 8이 결과로 출력됩니다.
다음은 이러한 규칙성에 대해 수식으로 접근해보겠습니다.
y_data = x_data * w 로 생각해봅니다. 네 쉽게 w의 값은 2라고 예측이 가능하게됩니다. 그럼 이러한 w의 값을 오차를 통해서 접근해보겠습니다.
기본적으로 오차 = 예측값 - 실제값 으로 오차를 표기할 수 있습니다. 하지만 실제값이 예측값 보다 큰 경우 음수가 발생할 수 있기 때문에 (예측값 - 실제값)^2 제곱을 취합니다. 그럼 간단하게 예제를 통해서 MSE 오차를 알아보겠습니다.
실습 - w 값이 1인 경우
x_data | y_data | (y_pred - y_data)^2 |
1 | 2 | 1 |
2 | 4 | 4 |
3 | 6 | 9 |
따라서 해당 x_data에 대한 MSE 오차의 값은 (y_pred - y_data) ^2 를 전체 경우의 갯수 3으로 나눠주면 됩니다.
MSE = (1 + 4 + 9) / 3 = 4.66666 이됩니다.
따라서 우린 MSE를 최소화 하는 값의 w를 찾아야합니다.
[01.basic.py]
import numpy as np
import matplotlib.pyplot as plt
# 수치해석 라이브러리 numpy와 그래프 시각화에 필요한 matplotlib 라이브러리를 import합니다.
x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]
#해당 실습에 필요한 데이터셋을 정의합니다.
def forward(x):
return x * w
# forward라는 이름의 선형 함수를 정의합니다. x_data와 w(weight)을 곱하는 함수입니다.
def loss(x, y):
y_pred = forward(x)
return (y_pred - y) * (y_pred - y)
# 다음은 오차를 계산하는 함수를 정의합니다. y_pred 변수를 통해 w값에 대한 예측 값을 알수 있습니다.
w_list = [ ]
mse_list = [ ]
#나중에 그래프를 그리기 위해 특정 w값에 매칭되는 mse값을 알수 있도록 서로 공백리스트를 만들고
해당 값을 append함수를 이용하여 append합니다.
for w in np.arange(0.0, 4.1, 0.1):
print("w = ", w)
l_sum = 0
for x_val, y_val in zip(x_data, y_data):
y_pred_val = forward(x_val)
l = loss(x_val, y_val)
l_sum += 1
print("\t", x_val, y_val, y_pred_val, l);
print("MSE = ", l_sum / 3)
w_list.append(w)
mse_list.append(l_sum / 3)
# w의 값을 0부터 4까지 0.1 씩 증가하면해 해당 w에 대한 MSE값을 구하고 각각 리스트에 해당 값을 추가합니다. MSE경우 오차의 합을 경우의 수로 나누기 때문에 l_sum에 대해 경우의 수 3으로 나눠줍니다.
실행 결과를 보면 w = 2.0 인 경우 MSE 값이 0으로 이상적인 것을 알 수 있습니다.
plt.plot(w_list, mse_list)
plt.ylabel('Loss')
plt.xlabel('w')
plt.show()
# 해당 리스트를 그래프로 출력해도 w = 2.0인 경우 최소 값을 갖는 것을 확인할 수 있습니다.
'DeepLearning > Pytorch_ZeroToAll' 카테고리의 다른 글
PyTorch Lecture 07 : Wide and Deep (0) | 2020.10.20 |
---|---|
PyTorch Lecture 06 : Logistic Regression (0) | 2020.10.12 |
PyTorch Lecture 05 : Linear Regression in the PyTorch way (0) | 2020.10.07 |
PyTorch Lecture 04 : Back-propagation and Autograd (0) | 2020.10.06 |
PyTorch Lecture 03 : Gradient Descent (0) | 2020.09.16 |