Hello Computer Vision

RNN(Recurrent Neural Network)에 대한 이해해보기 본문

딥러닝

RNN(Recurrent Neural Network)에 대한 이해해보기

지웅쓰 2023. 1. 2. 15:29

Attention, Transformer을 이해하기 위해 RNN기초부터 공부해보려고 한다.

참고 자료 : 위키독스 허민석님 영상  ratsgo님 블로그

RNN과 기존의 DNN 구조간의 차이를 비교했을 때 그림으로 확인한다면 더 잘 느낄 수있다.

단방향으로 이루어진 DNN과 달리 RNN의 경우 그 전의 과정이 다음의 결과에 영향을 미치는 것을 확인할 수 있다.

그전 까지의 결과를 반영해서 다음 출력 값을 고려할 수 있다는 점에서 자연어 처리 부문 machine translation에서 탁월한 성능을 보인다(many to many)

RNN을 이루는 각 요소들을 한번 알아보자.

$x_{t}$  : 입력벡터

$cell$ : 메모리셀(은닉상태)

$y_{t}$ :  출력벡터

$W_{xh}$ : 입력벡터에서 은닉상태로 갈 때의 가중치

$W_{hh}$ : 이전 은닉상태에서 다음 은닉상태로 넘어갈 때의 가중치

$W_{hy}$ : 은닉상태에서 출력벡터를 뽑아내기 위한 가중치

 

위 이미지와 같이 만약 입력 벡터가 4개일 경우 $W_{xh}$도 4개지만 이러한 가중치는 다르지 않고 같은 것이다.($W_{hh}, W_{hy}$마찬가지)

 

초기 은닉상태를 $h_{0}$이라 할 때 $h_{1} = tanh(W_{hh} * h_{0} + b_{h}$ 이렇게 나타낼 수 있다.

이것을 일반화 해보자면 $h_{t} = tanh(W_{hh} * h_{t-1} + b_{h}$ 이렇게 나타낼 수 있다.

여기서 활성화 함수는 주로 tanh를 쓰지만 비선형함수인 ReLU를 쓸 수도 있습니다.

 

출력상태 역시 일반화 해서 나타내보자면 $y_{t} = W_{hy} * h_{t} + b_{y}$

 

위 RNN 구조를 보면 알 수 있다시피 입력sequence에 대해 길이 제한 없이 받을 수 없다는 것이 가장 큰 장점 중 하나이다.

RNN은 machine translation 분야 뿐만 아니라 sentiment 분석에서 또한 활발하게 쓰이고 있는 기본 구조입니다.

 

이 또한 딥하게 들어가면 한없이 딥하게 들어갈 수 있으니 다음에 또 궁금한 내용을 발견하게 되면 추가 하겠습니다.