728x90
반응형

pytorch 20

[pytorch] LSTM(Long Short-Term Memory)이란? / LSTM을 Pytorch로 구현 실습 코드

RNN(순환신경망)의 한계점1. 장기 의존성 문제 (Long-term Dependency Problem)   - RNN은 이전 시점의 정보를 현재 시점에 반영하는 구조이기 때문에, 과거의 중요한 정보를 오랫동안 기억하는 데 어려움이 있습니다.   - 시간이 길어질수록 (시퀀스가 길어질수록), RNN은 초기 시점의 정보를 잊어버리기 쉬워집니다.   - 예를 들어, \( h_{100} \)는 \( h_1 \)부터 \( h_{99} \)까지의 은닉 상태에 의존하고 있지만, 시간이 길어질수록 \( h_1 \)의 정보는 거의 전달되지 않게 됩니다.2. 기울기 소실 문제 (Vanishing Gradient Problem)RNN에서 은닉 상태의 가중치 \( W_{hh} \)는 매 타임스텝의 은닉 상태를 업데이트하는 ..

pytorch 2024.09.26

[pytorch] 순환 신경망(Recurrent neural network, RNN) 이란? / RNN을 Pytorch로 구현 실습 코드

DNN과 RNN 비교딥러닝에서 데이터의 시간적 연속성을 처리하는 방법은 모델 선택에 중요한 영향을 미치는데요. 우선 DNN과 RNN을 비교하여 시간적 연속성의 중요성을 살펴보시죠.시간적 연속성을 고려하지 않은 경우- 왼쪽의 수식에서는 입력 데이터 \( x_t \)가 주어졌을 때, 은닉층 \( h_t \)가 가중치 \( W_{xh} \)와 활성화 함수 \( f(\cdot) \)을 통해 계산됩니다. 이 은닉층의 출력 \( h_t \)는 다시 가중치 \( W_{hx} \)와 활성화 함수 \( g(\cdot) \)를 거쳐 최종 출력값 \( y_t \)를 생성합니다.- 이 경우, 각 시점 \( t \)의 데이터는 독립적으로 처리됩니다. 이전 시점의 정보는 고려되지 않으므로, 모델은 시간적 연속성이나 데이터 간의 ..

pytorch 2024.09.24

[pytorch] 과적합 방지를 위한 가중치 규제(Weight Regularization)(feat. L1 라쏘 규제, L2 릿지 규제)

가중치 규제(weight regularization)는 과적합(overfitting)을 방지하기 위해 신경망 모델의 학습 과정에서 가중치 크기에 제약을 추가하는 기법입니다.과적합은 모델이 학습 데이터에는 매우 잘 맞지만, 새로운 데이터에 대해서는 일반화 성능이 떨어지는 현상을 말합니다. 가중치 규제를 사용하면 이런 문제를 어느 정도 해결할 수 있습니다.😆 가중치 규제에는 주로 두 가지 유형이 있습니다. L1 규제 (라쏘 규제) 란? ✅L1 규제는 모델의 손실 함수에 가중치의 절댓값의 합에 비례하는 항을 추가합니다. 수학적 표현은 다음과 같습니다.$$ L = L_0 + \lambda \sum_{i} |w_i| $$\( L \): 총 손실\( L_0 \): 모델의 원래 손실 함수 (예: MSE, 크로스 엔..

pytorch 2024.05.13

[pytorch] Learning Rate Scheduler (학습률 동적 변경)

학습률(Learning rate)은 모델 훈련 중 가중치를 업데이트하는 속도를 결정하는 중요한 하이퍼파라미터입니다. 적절한 학습률 설정은 모델 성능에 큰 영향을 미칠 수 있습니다.파이토치에서는 `torch.optim.lr_scheduler` 모듈을 사용하여 학습률을 동적으로 조정할 수 있습니다. 이 모듈에는 여러 가지 스케줄러가 포함되어 있어 다양한 전략으로 학습률을 조절할 수 있습니다.  1.Lambda LRLambdaLR는 사용자가 직접 학습률 조정 로직을 정의할 수 있는 스케줄러입니다. 이 스케줄러를 사용하면, 매 에폭마다 각 파라미터 그룹의 학습률을 사용자가 정의한 함수(`lambda` 함수)에 따라 조정할 수 있습니다. 이 함수는 현재 에폭을 입력으로 받고, 학습률을 조정할 스케일링 팩터를 반환..

pytorch 2024.05.03

[pytorch] RNN 계층 구현하기

RNN(Recurrent Neural Network, 순환 신경망)은 딥러닝 모델 중 하나로, 주로 시계열 데이터와 같이 순서가 있는 데이터를 처리하는 데 사용됩니다. RNN의 핵심 구조는 간단한 개념으로 시작합니다. 기본적인 신경망, 즉 인공 신경망(Artificial Neural Network, ANN)은 데이터를 입력받아 가중치를 조정하고, 활성화 함수와 같은 방법으로 출력 값을 생성하는데 사용됩니다. 그러나 ANN은 각 입력 간의 연관성이 없다고 가정하며, 이로 인해 순서가 있는 데이터 처리에 어려움이 있습니다. 이 문제를 해결하기 위해 RNN이 등장했습니다. RNN은 인공 신경망 구조를 사용하지만, 순환적으로 연결되어 있어 이전 입력의 정보를 저장하고 처리할 수 있습니다. 이를 통해 연속된 데이..

pytorch 2023.07.11

[pytorch] 이미지 분류를 위한 AlexNet 구현

AlexNet은 컴퓨터 비전 분야의 발전에 중요한 역할을 한 합성곱 신경망(CNN) 아키텍처입니다. 이는 Alex Krizhevsky, Ilya Sutskever, Geoffrey Hinton에 의해 개발되었으며, 2012년 ImageNet 대규모 시각 인식 챌린지(ILSVRC)에서 우승하였습니다. 이 대회는 딥러닝의 전환점을 표시하며, CNN이 이미지 분류 작업에서 강력한 성능을 보여준 것을 보여주었습니다. AlexNet 아키텍처는 총 여덟 개의 레이어로 구성되어 있으며, 다섯 개의 합성곱 레이어와 세 개의 완전 연결 레이어로 이루어져 있습니다. 입력 레이어: 입력 이미지를 받습니다. 일반적으로 픽셀 값의 행렬 형태로 제공됩니다. 합성곱 레이어 1: 첫 번째 합성곱 레이어는 입력 이미지에 학습된 필터를..

pytorch 2023.05.31

[pytorch] 이미지 분류를 위한 LeNet-5 구현

이미지 분류는 주어진 이미지를 다양한 클래스 또는 범주로 분류하는 것을 의미합니다. 이때, 분류의 목적은 이미지에 특정 대상이 존재하는지 여부를 판단하는 것입니다. 예를 들어, 고양이와 개를 분류하는 문제를 생각해 보면, 이미지 분류 모델은 입력된 이미지가 고양이인지 개인지를 판단합니다. 모델은 이미지에 대한 특징을 추출하고, 추출된 특징을 기반으로 해당 이미지가 고양이인지 개인지를 예측합니다. LeNet은 1990년대 후반 Yann LeCun 등이 개발한 초기 합성곱 신경망(CNN) 아키텍처로, 주로 필기체 숫자 인식에 사용되었으며 컴퓨터 비전 작업에서 심층 학습의 발전에 중요한 역할을 했습니다. 현대적인 아키텍처에 비해 레이어 수가 적지만, CNN의 발전을 이해하는 데 기초로 작용합니다. LeNet ..

pytorch 2023.05.15

[pytorch] 전이 학습 - 특성 추출 기법 (Feature Extraction)

전이 학습(transfer learning)이란? 하나의 문제를 해결하기 위해 학습된 모델의 지식을 다른 문제를 해결하는데 활용하는 기법입니다. 즉, 기존에 학습한 모델의 가중치와 편향값 등의 정보를 새로운 모델의 초기값으로 활용하여 학습을 진행하는 것을 의미합니다. 전이 학습은 대규모 데이터셋을 가지고 모델을 학습시키는데 필요한 시간과 비용을 줄일 수 있습니다. 또한, 새로운 데이터셋에 대한 모델의 정확도를 높일 수 있습니다. 이는 기존 모델에서 학습한 특성이 비슷한 문제에서도 유용하기 때문입니다. 전이 학습은 크게 두 가지 방법으로 나뉩니다. 특성 추출(Feature Extraction): 사전 학습된 모델을 사용하여 새로운 모델을 초기화하는 방법 → 전체 모델을 처음부터 학습시키는 것보다 효율적 미..

pytorch 2023.05.09

[pytorch] Convolutional Neural Network (CNN) 로 FashionMNIST 구현해보기

fashion_mnist 데이터셋을 사용하여 합성곱 신경망을 직접 구현해 보겠습니다. fashion_mnist 데이터셋은 토치비전에 내장된 예제 데이터로 운동화, 셔츠, 샌들 같은 작은 이미지의 모음이며, 기본 MNIST 데이터셋처럼 열 가지로 분류될 수 있는 28x28 픽셀의 이미지 7만 개로 구성되어 있다. 데이터셋을 자세히 살펴보면 훈련 데이터는 0-255 사이의 값을 갖는 28x28 크기의 넘파이 배열이고, 레이블(정답) 데이터는 0-9 사이 정수 값을 갖는 배열입니다. 이전 포스팅에서는 Deep Neural Network (DNN)로 FashionMNIST를 구현해 보았는데요! https://resultofeffort.tistory.com/95 [pytorch] Deep Neural Networ..

pytorch 2023.04.28

[pytorch] Deep Neural Network (DNN) 로 FashionMNIST 구현해보기

fashion_mnist 데이터셋을 사용하여 심층 신경망을 직접 구현해 보겠습니다. fashion_mnist 데이터셋은 토치비전에 내장된 예제 데이터로 운동화, 셔츠, 샌들 같은 작은 이미지의 모음이며, 기본 MNIST 데이터셋처럼 열 가지로 분류될 수 있는 28x28 픽셀의 이미지 7만 개로 구성되어 있다. 데이터셋을 자세히 살펴보면 훈련 데이터는 0-255 사이의 값을 갖는 28x28 크기의 넘파이 배열이고, 레이블(정답) 데이터는 0-9 사이 정수 값을 갖는 배열입니다. 1. 라이브러리 호출 import numpy as np import matplotlib.pyplot as plt import torch import torch.nn as nn from torch.autograd import Vari..

pytorch 2023.04.25
728x90
반응형