9. 순환 신경망(Recurrent Neural Networks, RNN)

김지우·2023년 8월 2일

NLP_Basic

목록 보기
9/9

해당 글은 자연어 처리 바이블 (임희석 저) 에서 참고하여 작성되었음을 알려 드립니다.

목차
1. 배경, 특징, 학습 과정
2. 응용 순환 신경망

1. 배경, 특징, 학습과정

배경

  • 시간 개념을 반영하는 인공신경망이 필요 해짐
  • 이를 해결하기 위해 노드간 연결이 시간 순서에 따라 방향 그래프를 형성하는 RNN을 제안

MLP와의 비교
MLP => 입력값 xx와 파라미터θ\theta를 통해 결과값 y^\hat{y}를 반환

RNN => 출력값 y^\hat{y}를 다음 연산을 위해 은닉 상태(hidden state)로써 hth_{t}를 다음 셀로 전달

  • 입력값xx와 은닉 상태 ht1h_{t-1}을 입력 받아 파라미터 θ\theta를 통해 결과값 yy와 은닉상태 hth_{t}를 반환

특징
1. 노드는 일반적으로 하나의 인공신경망 셀(cell)을 의미, 시간 순서상 이전 셀에서 다음 셀로 정보가 전달되는 연결이 존재

  1. 적은 파라미터 수와 순환적인 구조에 의해 제한 없이 정보를 처리할 수 있음

  2. 과거의 정보를 기억한 채로 현재 입력값에 대한 처리를 진행하기 때문에 문맥 정보를 반영할 수 있다는 장점이 있다.

학습 과정

구조

기본적인 계산 방법


  • yt^=ht=f(ht1,xt;θ)=tanh(Whhht1+Wxhxt+bn)\hat{y_{t}}=h_{t}=f(h_{t-1},x_{t};\theta)=tanh(W_{hh}h_{t-1}+W_{xh}x_{t}+b_{n})
  • 각 스텝에 적용되는 기울기를 모두 계산해야 함.

back-propagation through time(BPTT)

  • 시간 스텝에 따라 펼쳐진 RNN을 학습시킨다고 해 붙여진 이름
  • RNN의 구조상 입력된 시간 스텝의 수는 피드포워드 인공신경망이 거치는 층의 수와 같기 떄문에 FNN과 동일한 방식으로 역전파 계산을 할 수 있음

단점

  • 여러층을 거치며 곱셈 연산을 반복할 경우 전달되는 값의 크기는 점차 작아지며, 이는 기울기 소실 문제로 이어진다.

2. 응용 순환 신경망

LSTM

  • 장기 의존성을 학습 할 수 있는 RNN의 특별한 종류

  • 구조

  • 표준 RNN의 단일셀과 다르게 LSTM 셀에서는 독특한 상호작용이 있다.

  • LSTM의 핵심은 은닉상태(hidden state)를 조절하는 셀 상태(cell state)의 존재다.

    • 셀 상태는 약간의 선형 연산만으로 망각 게이트(forget gate)에서 정보를 망각하거나 인풋 게이트(Input gate)에서 정보를 추가해가며 기억할 정보를 조절한다.
    • LSTM 은 주로 두 종류의 활성 함수가 사용되는데, 주된 정보는 tanh를 통하고, 주된 정보를 조정하기 위한 값은 sigmoid를 통한다.
    • 0~1의 값을 반환하고, sigmoid 함수에 의해 결정
    • 0에 근사하면 어떤 값도 통과하지 못함. 1에 근사하면 모든 값이 통과
  • LSTM의 망각 게이트(forget gate)는 전달 받은 정보를 셀 상태로부터 제거할 것인지 결정

    • 0~1 사이의 값을 반환하고 sigmoid 함수에 의해 결정
    • 0은 완전히 버리는 것 1은 완전히 유지하는 것
  • LSTM의 입력 게이트(Input gate)는 셀 상태에 어떤 정보를 새롭게 추가할지를 결정

    • 우선 sigmoid 층을 통해 어떤 값을 업데이트 할지 결정.
    • tanh층으로 새로운 후보 값들의 벡터인 Ctˉ\bar{C_{t}}를 만들어 낸다.
    • 위에 언급된 두부분에 대한 곱 연산을 수행하면 상태에 대한 업데이트가 만들어진다.
  • 출력 게이트는 sigmoid 층을 통해 셀 상태의 어떤 부분을 출력할지 결정한다.

GRU

  • LSTM과 달리 별도의 셀상태가 존재하지 않고 2개의 게이트만을 갖는다.

profile
프로그래밍 기록 + 공부 기록

0개의 댓글