PyTorch에서 LSTM 사용: 예제가 포함된 튜토리얼
코드 및 대화형 시각화를 통해 PyTorch에서 LSTM을 사용하는 방법을 설명하는 튜토리얼
Created on August 15|Last edited on August 17
Comment
우리가 함께 알아볼 내용
우리가 함께 알아볼 내용PyTorch에서 LSTM 사용하기PyTorch 모델에 LSTM 추가하기샘플 모델 코드여러분의 모델 트레이닝PyTorch를 사용한 LSTM 구현 관찰결론추천 읽기
PyTorch에서 LSTM 사용하기
이 보고서에서는 PyTorch에서 LSTM(Long Short-Term Memory)을 사용하는 방법을 소개하는 간단한 예를 살펴보겠습니다. 아래에는 관련 코드와 설명도 포함되어 있습니다.
LSTM 이전에 NLP 필드는nnn은 시리즈로 사용된 단어/문자의 수를 의미하는 언어 모델링을 위해 nnn-grams와 같은 개념을 주로 사용했습니다. 예를 들어, "안녕 내 친구"는 단어 트라이 그램입니다. 그러나 이러한 종류의 통계 모델은 단어 사이의 장기적인 상호작용을 포착해야 하는 경우에 사용할 수 없습니다. 4 또는 5보다 큰 단어는 당시 사용하던 컴퓨팅으로는 거의 불가능했습니다.
결국 이 문제를 해결한 순환 신경망(RNN: Recurrent Neural Networks)이 등장했습니다. 이러한 종류의 모델 아키텍처는 기본적으로 루프에 기반을 두고 있습니다. 이 루프는 포워드 패스 중에 새로운 정보를 통합하면서 이전 정보의 일부를 다시 순환시키고 유지할 수 있도록 합니다. LSTM(Long Short-Term Memory Unit)은 RNN과 GRU(Gate Recurrent Unit)에서 더욱 개선된 특수한 유형의 RNN입니다.

이미지 크레딧: 크리스토퍼 올라(Christopher Olah)의 블로그
LSTM의 작동 방식에 대한 이론적 이해를 위해 이 비디오를 확인해보세요.
LSTM에 이미 익숙하다면 여기로 이동하셔도 좋습니다.
이제 가볼까요!
아래 예제를 따라가고 싶다면, 제가 만든 편리한 코랩이 있습니다.
PyTorch 모델에 LSTM 추가하기
PyTorch의 nn Module을 사용하면torch.nn.LSTM 클래스를 사용하여 쉽게 레이어로서LSTM을 모델에 추가할 수 있습니다. 주의해야 할 두 가지 중요한 파라미터는 다음과 같습니다:
- input_size: 입력에 필요한 기능의 숫자
- hidden_size: 숨겨진 상태 기능의 숫자
샘플 모델 코드
import torch.nn as nnfrom torch.autograd import Variableclass MyModel(nn.Module):def __init__(self, ...):...self.lstm = nn.LSTM(embedding_length, hidden_size)self.label = nn.Linear(hidden_size, output_size)def forward(self):h_0 = Variable(torch.zeros(1, batch_size, self.hidden_size).cuda())c_0 = Variable(torch.zeros(1, batch_size, self.hidden_size).cuda())output, (final_hidden_state, final_cell_state) = self.lstm(input, (h_0, c_0))return self.label(final_hidden_state[-1])
여러분의 모델 트레이닝
wandb.watch(model)def train_model(model, train_iter, epoch):...model.train()for idx, batch in enumerate(train_iter):...prediction = model(text)loss = loss_fn(prediction, target)wandb.log({"Training Loss": loss.item()})num_corrects = (torch.max(prediction, 1)[1].view(target.size()).data == target.data).float().sum()acc = 100.0 * num_corrects/len(batch)wandb.log({"Training Accuracy": acc.item()})...
PyTorch를 사용한 LSTM 구현 관찰
위의 그래프는 IMDB 데이터 세트에 대해 훈련된 텍스트 분류 모델에 대한 교육 및 평가 손실 및 정확도를 보여줍니다. 이 모델은 사전 훈련된 GLoVE 임베딩을 사용했으며 고밀도 출력 헤드(Output Head)가 있는 단일 단일방향성 LSTM 레이어를 가지고 있었습니다. 이 모델은 단 10개의 에폭(Epoch)으로 트레이닝 되었음에도 불구하고 최대 90%의 트레이닝 정확도를 적절하게 달성했습니다.
결론
이상으로 PyTorch에서 LSTM을 사용하는 방법에 대한 짧은 튜토리얼을 마치겠습니다.
LSTM에 대해 자세한 설명을 담은 Fully Connected와 관련된 기타 보고서를 확인해보세요.
추천 읽기
Under the Hood of Long Short Term Memory (LSTM)
This article explores how LSTM works, including how to train them with NumPy, vanish/explode the gradient, and visualize their connectivity.
LSTM RNN in Keras: Examples of One-to-Many, Many-to-One & Many-to-Many
In this report, I explain long short-term memory (LSTM) recurrent neural networks (RNN) and how to build them with Keras. Covering One-to-Many, Many-to-One & Many-to-Many.
How to stack multiple LSTMs in keras?
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.