RNN은 다른 NN들과 다르게 은닉층의 노드에서 활성화 함수(activation function)을 통해 나온 결과값을 출력층 방향으로도 보내면서, 다시 은닉층 노드의 다음 계산의 입력으로 보내는 특징을 가짐.
은닉 층에서 활성화 함수를 통해 결과를 내보내는 역할을 하는 노드를 셀(cell)이라고 하는데, 이 셀은 이전의 값을 기억하려고 하는 일종의 메모리 역할을 수행함으로 이를 메모리 셀 또는 RNN 셀이라고 표현함.
메모리 셀이 출력층 방향 또는 다음 시점인 T+1의 자신에게 보내는 값을 **은닉 상태(hidden state)**라 칭함.
입력 벡터의 차원이 4, hidden state의 크기가 2, 출력 벡터 차원이 2인 RNN의 모습.
수식 정의
현재 시점 t에서의 은닉 상태값을 h(t)라고 하면, 은닉층의 메모리 셀은 h(t)를 계산하기 위해 두 개의 가중치를 가짐. 하나는 입력층을 위한 가중치이고, 하나는 이전 시점의 은닉 상태값은 h(t-1)을 위한 가중치 W(h)
은닉층의 은닉 상태값 계산에는 tanh function을 이용하고(참고 _ Tanh 함수 sigmoid가 갖고 있던 최적화 과정에서 느려지는 문제를 해결 ), 출력층 함수에는 비선형 함수인 sigmoid function(binomial classification)이나 softmax fucntion(multinomial classification)을 이용.
RNN의 은닉층 벡터와 행렬 연산
배치 크기가 1이고, d와 D(h)값 모두를 4로 가정하였을 때의 그림
h(t)를 계산하기 위한 활성화 함수로는 주로 하이퍼볼릭탄젠트(tanh)함수 사용.
RNN의 입력층 벡터 구성 인자
hidden_units
은닉 상태의 크기를 정의. 메모리 셀이 다음 시점의 메모리 셀과 출력층으로 보내는 값의 크기(output_dim)와도 동일. RNN의 용량(capacity)을 늘린다고 보면 되며, 중소형 모델의 경우 보통 128, 256, 512, 1024 등의 값을 가진다.
timesteps
입력 시퀀스의 길이(input_length)라고 표현하기도 함. 시점의 수.
input_dim
입력의 크기(NLP의 경우에는 한 문장이 가지는 단어의 수)
https://medium.com/humanscape-tech/rnn-recurrent-neural-network-순환신경망-을-이해해보자-1697a5472af2
바닐라 RNN(일반 RNN)의 경우, 출력 결과가 이전 계산 결과에 의존함. 바닐라 RNN의 시점(단어 벡터의 길이) 이 길어질 수록 앞의 정보가 충분히 전달되지 않는 현상이 발생.
1시점의 정보가 가중치를 통하여 끝까지 전달되면서 계속해서 정보가 손실되는 현상이 발생함. 우리 데이터와 같이 텍스트 벡터의 최대 길이가 300이 넘는 경우 학습에 문제가 생겨 모델의 실효성이 떨어짐.
이를 장기 의존성 문제(the problem of Long-Term Dependencies)라고 함.