순환 신경망

PyTorch로 배우는 Intermediate Deep Learning

Michal Oleszak

Machine Learning Engineer

순환 뉴런

  • 피드포워드 네트워크
  • RNN: 역방향 연결 존재
  • 순환 뉴런:
    • 입력 x
    • 출력 y
    • 은닉 상태 h
  • PyTorch에서: nn.RNN()

일반 RNN 뉴런 구조도: 가중치와 활성화 함수를 적용하는 뉴런이 입력 x를 받아 출력 y와 h를 생성하며, h는 다시 자신에게 피드백됩니다.

PyTorch로 배우는 Intermediate Deep Learning

시간에 따른 순환 뉴런 전개

순환 뉴런 구조도. 시간 단계 0에서 입력 h0과 x0을 받아 출력 y0과 h1을 생성합니다.

PyTorch로 배우는 Intermediate Deep Learning

시간에 따른 순환 뉴런 전개

순환 뉴런 구조도. 시간 단계 1에서 입력 h1과 x1을 받아 출력 y1을 생성합니다.

PyTorch로 배우는 Intermediate Deep Learning

시간에 따른 순환 뉴런 전개

순환 뉴런 구조도. 시간 단계 2에서 입력 h2와 x2를 받아 출력 y2와 h3을 생성합니다.

PyTorch로 배우는 Intermediate Deep Learning

심층 RNN

두 개의 순환 뉴런이 레이어를 구성하는 구조도. 각 시간 단계에서 출력 y가 다음 뉴런으로 전달됩니다.

PyTorch로 배우는 Intermediate Deep Learning

시퀀스-투-시퀀스 아키텍처

  • 시퀀스를 입력으로 전달하고 전체 출력 시퀀스를 사용
  • 예시: 실시간 음성 인식

구조도: 각 시간 단계마다 새로운 입력이 있으며, 각 시간 단계에서 생성된 모든 출력 y가 초록색으로 표시되어 사용됩니다.

PyTorch로 배우는 Intermediate Deep Learning

시퀀스-투-벡터 아키텍처

  • 시퀀스를 입력으로 전달하고 마지막 출력만 사용
  • 예시: 텍스트 주제 분류

구조도: 각 시간 단계마다 새로운 입력이 있으며, 마지막 시간 단계의 출력 y만 초록색으로 표시되어 사용됩니다.

PyTorch로 배우는 Intermediate Deep Learning

벡터-투-시퀀스 아키텍처

  • 단일 입력을 전달하고 전체 출력 시퀀스를 사용
  • 예시: 텍스트 생성

구조도: 첫 번째 시간 단계에만 입력이 있으며, 각 시간 단계에서 생성된 모든 출력 y가 초록색으로 표시되어 사용됩니다.

PyTorch로 배우는 Intermediate Deep Learning

인코더-디코더 아키텍처

  • 전체 입력 시퀀스를 전달한 후 출력 시퀀스를 사용
  • 예시: 기계 번역

구조도: 첫 번째 부분(인코더)에서는 각 시간 단계에 입력을 받지만 출력은 무시하고, 두 번째 부분(디코더)에서는 입력 없이 각 시간 단계의 출력을 모두 사용합니다.

PyTorch로 배우는 Intermediate Deep Learning

PyTorch에서의 RNN

class Net(nn.Module):
    def __init__(self):
        super().__init__()

self.rnn = nn.RNN( input_size=1, hidden_size=32, num_layers=2, batch_first=True, )
self.fc = nn.Linear(32, 1)
def forward(self, x): h0 = torch.zeros(2, x.size(0), 32)
out, _ = self.rnn(x, h0)
out = self.fc(out[:, -1, :]) return out
  • __init__ 메서드로 모델 클래스 정의
  • 순환 레이어 self.rnn 정의
  • 선형 레이어 fc 정의
  • forward()에서 첫 번째 은닉 상태를 0으로 초기화
  • 입력과 첫 번째 은닉 상태를 RNN 레이어에 전달
  • 마지막 RNN 출력을 선택하여 선형 레이어에 전달
PyTorch로 배우는 Intermediate Deep Learning

연습해 봅시다!

PyTorch로 배우는 Intermediate Deep Learning

Preparing Video For Download...