순환 신경망


Recurrent Neural Network

순환신경망

  • 은닉층의 노드에서 활성화 함수를 통해 나온 결과값을 출력층으로도 보내면서 은닉층의 다음 계산의 입력으로 보냄 rnn_image1_ver2

  • 메모리 셀(셀, RNN셀) : 은닉층에서 활성화 함수를 통해 결과를 내보내는 역할을 하는 노드

    • 재귀적 활동
      • 각각의 시점에서 바로 이전 시점에서의 은닉층의 메모리 셀에서 나온 값을 자신의 입력으로 사용
    • 은닉 상태 : t+1의 자신에게 보내는 값
      • t시점의 메모리 셀은 t-1 시점의 메모리 셀이 보낸 은닉 상태를 t시점의 은닉 상태 계산을 위한 입력값으로 사용

rnn_image2_ver3

  • 위의 그림과 같은 그림. 풀어서 그린 버전

RNN 특징

  • 뉴런이라는 표현을 잘 사용안함
  • 입력 벡터, 출력 벡터, 은닉 상태라는 표현을 주로 사용

rnn_image2 5

  • RNN을 뉴런 단위로 표현한 그림
    • 입력 벡터의 차원 : 4
    • 은닉 상태의 크기 : 2
    • 출력 벡터의 차원 : 2

RNN 형태

  • 입력과 출력의 길이를 다르게 설계 가능
  • 메모리 셀의 각 시점의 입, 출력의 단위 : 보편적인 단위는 단어 벡터
  • 예시
    • 일 대 다(one-to-many) 구조
      • 하나의 입력에 대한 시퀀스 출력
    • 다 대 일(many-to-one) 구조
      • 단어 시퀀스로 부터 하나의 출력
    • 다 대 다(many-to-many) 구조
      • 문장 입력, 문장 출력

RNN 수식

rnn_image4_ver2

  • t시점에서의 은닉상태 값 \(h_t\)
  • 입력층을 위한 가중치
    • \[W_x\]
  • t-1의 은닉 상태값을 위한 가중치
    • \[W_h\]

\(은닉층:h_t = tanh(W_xx_t+W_hh_{t-1} + b)\) \(출력층:y_t = f(W_yh_t+b)\)

  • f는 비선형 활성화 함수 중 하나
    • 경우에 따라 다르게 사용
      • 이진 분류 : 로지스틱 회귀 -> 시그모이드 함수
      • 다중 클래스 분류 : 소프트맥스 회귀 -> 소프트맥스 함수

RNN의 은닉층 연산

  • 입력
    • \[x_t\]
  • 단어 벡터의 차원
    • \[d\]
  • 은닉 상태의 크기
    • \[D_h\]
  • 각 벡터와 행렬의 크기
    • \[x_t : (d \times 1) \\ W_x : (D_h \times d) \\ W_h : (D_h \times D_h) \\ h_{t-1} : (D_h \times 1) \\ b : (D_h \times 1)\]

rnn_images4-5

  • 은닉층 연산 \(tanh((D_h \times D_h) \times (D_h \times 1) + (D_h \times d) \times (d \times 1) + (D_h \times 1)) = D_h \times 1\)