[DL] 순환 신경망 (RNN)

juyeon lee·2023년 7월 21일

Deep Learning

목록 보기
3/5
post-thumbnail

1. RNN (Recurrent Neural Network)


RNN : 입력과 출력을 시퀀스 단위로 처리하는 딥러닝 시퀀스 모델으로, 은닉층에서 활성화 함수를 지난 값이 출력층 방향으로 향하는 피드 포워드 신경망과는 다르다.

= 기준으로 왼쪽은 사이클을 그려 재귀 형태로 표현하였고, 오른쪽은 여러 시점으로 펼쳐서 표현하여 흐름에 따라 표현하였다. 두 그림 모두 RNN을 표현한다.


2. RNN의 구성



▲ 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층 방향으로 보내면서 다시 은닉층 노드의 다음 계산의 입력으로 보낸다

x : 입력벡터
y : 출력벡터
cell : 은닉층에서 활성화 함수를 통해 결과를 내보내는 노드 (=메모리 셀)

  • 피드 포워드 신경망에서는 뉴런이라는 단위 사용
  • But, RNN에서는 입력벡터, 출력벡터, 은닉상태 라는 표현 사용

2-1 메모리 셀

  • 재귀적 활동
    : 각각의 시점에서 바로 이전 시점에서의 은닉층 메모리 셀에서 나온 값을 자신의 입력으로 사용

2-2 은닉 상태(hidden state)

  • 메모리 셀이 두 방향으로 내보내는 결과
  • 메모리 셀이 출력층 방향으로 또는 다음 시점 t+1의 자신에게 보내는 값
  • t 시점의 메모리 셀은 t-1 시점의 메모리 셀이 보낸 은닉 상태값을 사용

3. RNN의 형태


일대다 (one-to-many)

  • 하나의 이미지 입력에 대해서 사진의 제목을 출력하는 이미지 캡셔닝(Image Captioning) 작업
  • 사진의 제목은 단어들의 나열 = 시퀀스 출력

다대일 (many-to-one)

  • 입력 문서가 긍정적인지 부정적인지를 판별하는 감성 분류
  • 스팸 메일 분류

다 대 다(many-to-many)

  • 입력 문장으로 부터 대답 문장을 출력하는 챗봇
  • 입력 문장으로부터 번역된 문장을 출력하는 번역기
  • 개체명 인식이나 품사 태깅

위키독스 PyTorch로 시작하는 딥 러닝 입문를 기반으로 작성함.

1개의 댓글

comment-user-thumbnail
2023년 7월 21일

정말 유익한 글이었습니다.

답글 달기