Artificial Intelligence/모두를 위한 딥러닝 (PyTorch)(13)
-
[PyTorch] Perceptron & Multi Layer Perceptron 실습 : 모두를 위한 딥러닝 시즌2
Perceptron & Multi Layer Perceptron 이론 요약 과거에는 단일 층 퍼셉트론으로는 XOR 데이터를 분류할 수 없었지만, 다층 퍼셉트론과 역전파(Backpropagation) 알고리즘이 등장하면서 XOR 분류 문제가 해결되었다.Perceptron & Multi Layer Perceptron 구현 코드라이브러리 임포트import torchimport torch.nn as nnimport torch.optim as optim XOR 단일 층 퍼셉트론 학습# Set devicedevice = 'cuda' if torch.cuda.is_available() else 'cpu'# XORX = torch.FloatTensor([[0, 0], [0, 1], [1, 0], [1, 1]]).to(..
2024.09.08 -
[PyTorch] MNIST Introduction 실습 : 모두를 위한 딥러닝 시즌2
MNIST Introduction 이론 요약 MNIST 데이터셋은 0~9의 숫자를 손으로 작성한 이미지이다. 우체국에서 편지 우편번호를 자동으로 인식하는 기술을 개발하면서 사용되었다. 훈련 데이터를 활용하여 모델을 학습시키고, 테스트 이미지에 어떤 숫자가 있는지 예측할 수 있다.MNIST 데이터셋, Torchvision 패키지 관련 사이트 MNIST 데이터셋은 lecun 사이트에서 다운받을 수 있다. Forbidden 에러가 나온다면, Kaggle에서 다운로드해서 사용하거나 구글 코랩에서 실행하는 방법이 있다.http://yann.lecun.com/exdb/mnist/Torchvision 패키지는 컴퓨터 비전 분야에서 널리 사용되는 데이터셋, 모델, 이미지 전처리 도구를 제공한다.https://pytor..
2024.09.08 -
[PyTorch] Train/Validation/Test & Overfitting 실습 : 모두를 위한 딥러닝 시즌2
Train/Validation/Test & Overfitting 이론 요약 압정을 던졌을 때 위로 떨어지는 경우를 클래스 1, 아래로 떨어지는 경우를 클래스 2로 설정한다. 총시행 횟수와 클래스 1이 나온 횟수, 1번 시행 시 일어날 확률을 사용하여 이항 분포로 모델링할 수 있다. Gradient Ascent를 통해 데이터를 가장 잘 설명하는 세타를 찾는 과정은 Likelihood를 최대화하여 Local Maxima를 찾는 과정이다. 데이터를 Training set, Validation set, Test set을 일정 비율로 나누어 모델을 훈련하고 평가할 수 있다. 훈련 데이터를 과도하게 학습하는 Overfitting이 일어나면, 새로운 검증 데이터에 대해 일반화 성능이 떨어져서 Train Loss는 ..
2024.09.08 -
[PyTorch] Softmax Classification 실습 : 모두를 위한 딥러닝 시즌2
Softmax 분류 이론 요약 이전 포스팅에서는 sigmoid 함수로 H(x)를 계산하고, binary_cross_entropy 함수를 활용하여 Cost를 계산했다. 이 방법은 이진 분류 문제에 적합하다. 이번에는 다중 클래스 분류 문제에 적합한 방법을 알아보았다. 간단하게 핵심을 정리하면 softmax 함수로 H(x)를 계산하고, cross_entropy 함수를 활용하여 Cost를 계산한다. softmax 함수는 여러 개의 실수로 이루어진 벡터를 확률 분포로 변환하며, cross_entropy 함수는 실제 레이블(one-hot 벡터)과 예측한 확률 분포의 차이를 구할 때 사용한다.Softmax 분류 구현 코드라이브러리 import & 시드값 고정# Library importimport torchimp..
2024.09.07 -
[PyTorch] Rogistic Regression 실습 : 모두를 위한 딥러닝 시즌2
Rogistic Regression 이론 요약Rogistic Regression 구현 코드라이브러리 import & 시드값 고정# Library importimport torchimport torch.nn as nnimport torch.nn.functional as Fimport torch.optim as optim# To ensure experiment reproducibilitytorch.manual_seed(1) 데이터 정의# Data definitionx_data = [[1, 2], [2, 3], [3, 1], [4, 3], [5, 3], [6, 2]]y_data = [[0], [0], [0], [1], [1], [1]]x_train = torch.FloatTensor(x_data) # (6,..
2024.09.05 -
[PyTorch] Loading Data 실습 : 모두를 위한 딥러닝 시즌2
Data Loading 이론 요약 너무 많은 양의 데이터를 한 번에 학습시키면 속도가 느리고, 하드웨어에도 부담이 될 수 있다. 이러한 문제를 해결하기 위해 전체 데이터를 균일하게 나눠서 학습시키는 Minibatch Gradient Descent를 사용한다. 데이터를 나눠서 사용하기 때문에 파라미터를 업데이트할 때마다 계산할 Cost의 양은 줄어들고 업데이트 주기가 빨라진다. 그러나 전체 데이터를 사용하지 않아서 잘못된 방향으로 업데이트가 될 수 있고, 일반적인 Gradient Descent에 비해 Cost가 거칠게 줄어든다.Data Loading 구현 코드라이브러리 import# Library importimport torchfrom torch.utils.data import Datasetfrom t..
2024.09.05 -
[PyTorch] Multivariable Linear Regression 실습 : 모두를 위한 딥러닝 시즌2
Multivariable Linear Regression 이론 요약 Linear regression과 Multivariable Linear Regression의 Hypothesis 식은 변수의 개수로 인해 차이가 있으나, Cost function 및 Gradient 계산식은 동일하게 적용된다.Multivariable Linear Regression 구현 코드 모델 생성과 Hypothesis 및 Cost 계산을 직접 수행하는 방식과 모듈 및 함수를 활용하는 방식 2가지로 구현을 했다. 방법 1. W, b로 모델 생성 & 직접 Cost 계산import torchimport torch.optim as optim# Data definitionx_train = torch.FloatTensor([[73, 80, 7..
2024.09.03 -
[PyTorch] Gradient Descent 심화 실습 : 모두를 위한 딥러닝 시즌2
Gradient Descent 이론 요약 Gradient Descent는 비용 함수의 최솟값을 찾기 위해, 기울기를 사용하며 파라미터를 업데이트하는 방법이다. 아래 그래프의 경우 W=1일 때 Cost는 0으로 최솟값을 갖는다. 현재 파라미터에서 이차 함수의 기울기를 구하고, 학습률을 적용하여 파라미터값을 업데이트한다. 함수의 기울기가 0에 가까워질 때까지 이 과정을 반복한다.Gradient Descent 구현 코드 지난 포스팅에서는 torch.optim과 zero_grad, backward, step 함수들을 이용해서 Gradient Descent를 진행했다. 이번에는 앞서 언급한 함수를 사용하지 않고, 직접 Gradient를 계산하고 업데이트하는 코드를 작성했다. # Data definitionx_t..
2024.08.31 -
[PyTorch] Linear Regression 실습 : 모두를 위한 딥러닝 시즌2
Linear regression 이론 요약 Cost의 정의 및 함수식에서 각 변수가 의미하는바, 일반 합 대신 제곱 합의 평균을 사용하는 이유가 중요하다. Cost는 평균 잔차 제곱(Mean Squared Error, MSE)으로도 불린다.Linear regression 구현 코드 입력은 x_train 변수에, 출력은 y_train 변수에 저장한다. Weight와 Bias를 모두 0으로 초기화함으로써, 항상 출력 0을 예측한다. requires_grad를 True로 설정하여, 학습하도록 명시한다. torch.mean을 사용하여 MSE를 간편하게 계산할 수 있다. Gradient descent는 다음과 같이 구현한다. torch.optim 라이브러리를 사용하여, [W, b] 텐서를 학습한다. lr은 L..
2024.08.30