RNN,,, 전에 배우고 다 잊고있었는데 간만에 수업들으면서 다시 복습했다!
RNN이란 Recurrent Neural Network로 순환 신경망이라는 뜻이다
기존 feed forward모델은 시계열 데이터를 잘 다룰 수 없다.
즉, 시계열 데이터의 패턴을 파악할 수 없다는 얘기다
RNN에서는 위 문제를 순환구조를 통해 해결한다.
hidden node가 방향을 가진 edge로 연결되어 순환구조를 이루고있다.
RNN은 음성, 텍스트 등 순차적으로 등장하는 데이터 처리에 적합하다
Image/Video Captioning, Sentiment Classification, Machine Translation, POS Tagging, Language Modeling, Image/Music generation, Conversation Modeling, Speecg Recognition 등
RNN은 위의 그림처럼 이전 노드의 output값을 사용해 과거 정보를 기억하고, 새로운 input x를 통해 업데이트를 진행한다.
input값으로 이전 노드의 결과값, x 두 가지가 들어오는데
이 두가지에 각각 다른 가중치를 곱하여 활성화 함수 tanh를 적용한 값이 이 노드의 output이 된다
RNN은 텍스트 데이터의 긍부정 평가 등 분류 문제에 활용될 수 있다
hidden layer의 계산 수식은 다음과 같다.
새로운 입력 Xt는 단어벡터고, d는 단어벡터의 차원을 나타낸다.
Dh는 hidden state의 크기이다
하이퍼볼릭 탄젠트 함수는 시그모이드와 달리 출력값이 (-1, 1)사이다.
임의의 실수 입력값을 절대값 1 미만으로 변환하여 값의 범위를 제한하는 블로킹 효과가 있다.
시그모이드 함수보다 출력값의 범위가 넓기 때문에 변화폭이 커서 기울기 소멸(Graidient Vanishing)현상이 더 적게 일어나고 빠르게 수렴한다
Pos Tagging 이란 문장이 주어졌을 때 각 단어의 품사를 예측하는것이다.
같은 단어라도 문장 내 순서에 따라 품사가 달라질 수 있기 때문에 단어간의 순서 가 중요하다
위 그림은 문장의 품사를 예측하는 모델이다.
문장을 끊어서 RNN모델의 output이 softmax함수를 통해 각 품사별 확률값을 도출한다
위의 모델을 일반화시킨 그림이다
target이 예측 대상, pred가 예측값인데 이 둘의 오차를 줄이는 방향으로 학습을 진행여 최적의 Whh , Wxh , b값을 찾는다
각 단어가 hidden state의 input으로 들어가고, 이전 hidden node에서 넘어온 가중치와 input을 h로 만드는 가중치를 모두 고려한다.
이전 hidden node의 output*가중치hh + 새로운 input x*가중치xh + b
값을 계산하여 tanh 함수를 거친 output을 softmax함수를 거쳐 각 품사의 확률값을 예측한다.
RNN을 감성분석에 적용할 경우, 각 x값에 문장을 구성하는 단어가 주어지고, 이전의 정보를 기억하고 있는 마지막 hidden node의 output 값을 통해 긍부정의 확률값을 계산한다.
RNN은 위 그림처럼 back propagation을 통해 가중치와 bias값을 변경하며 오차를 최소화하는 방식으로 학습한다.
오차 역전파를 적용하는 동안 깊이가 너무 깊어지면 계속 미분을 하기 때문에 기울기가 0에 가까워지는 문제가 발행한다. (Vanishing Gradient Problem)