1 minute read

딥러닝 공부 24일차



RNN이 필요한 이유

우리는 기존에 배운 NN, CNN 으로 여러가지 일들을 해낼 수 있지만, Sequence Data 는 해결하지 못하는 문제점이 있습니다.

그래서 이러한 순차데이터(시계열데이터)를 잘 학습하기위한 도구로 등장한 것이 Recurrent Neural Network, RNN 입니다.

Sequential data
sequential data는 말그대로 시간의 관계성이 있는 데이터들을 의미하고 예를들어서 우리가 말을하는 문장, 단어들, 혹은 기상청 날씨 데이터 같은 것들을 말합니다.

추가로 RNN을 순환신경망(Recurrent) 또는 재귀신경망(Recursive) 라고 설명하면서 둘다 같은 모델이라고 설명하는 곳이 있는데, 순환신경망과 재귀신경망은 약간 다른 모델입니다.

우리가 앞으로 주로 사용할 RNN은 순환신경망입니다.

재귀신경망은 순환신경망을 조금 다른 방식으로 일반화시킨 버젼이라고 합니다.

순환신경망은 사슬형태의 계산 그래프를 사용하여 구현되는 모델이며, 재귀신경망은 트리형태의 계산 그래프를 사용하여 구현되는 모델이라고 합니다.

위 그림처럼 이전의 값이 다음 값에 영향을 줄 수 있는 방식이 바로 RNN이라고 볼 수 있습니다.

현재 state 값을 계산하는 방식을 나타낸 간단한 식입니다.

t가 현재 값이라고 하였을 때, 현재 state를 계산해줄 수 있는 어떠한 함수 $f_{W}$의 입력값으로 바로 이전값 $h_{t-1}$ 과 현재의 입력값 $x_{t}$ 이렇게 두가지가 현재 state를 계산하기위한 입력값으로 사용되는 모습입니다.

RNN에서는 연산함수 $f_{W}$는 모든 셀에서 동일합니다. 그래서 아래 그림에서 왼쪽에 모델그림처럼 표현하기도 합니다.

연산하는 방식은 우리가 선형회귀에서 $H(x)=Wx+b$ 한 것 처럼 편향만 빼놓고 입력값이 가중치와 곱해진 것과 비슷하게 볼 수 있습니다.

먼저 $tanh$ 은 여기저기 강의에서 탄젠트에이치 내지는 탠에이치 요지랄을 하는데 정확히는 하이퍼블릭 탄젠트 라고 읽습니다. ReLU나 Sigmoid 처럼 비선형함수로 유명한 함수이고, RNN에서 자주 쓰입니다.

추가로 표기법은 왜 저렇게 쓸까를 고민해보았습니다,

가중치 $W_{hh}$ 는 입력값중 이전 hidden state를 곱해서 구해야하는 hidden state라서 표기방법이 저런 것 같고

가중치 $W_{xh}$ 는 입력값 x가 들어가서 연산해야하는 hidden state 라서 그런 것 같습니다.

그렇게 계산되어서 나온 $h_{t}$와 (y값을 계산하기위해 hiddenstate와 곱해지는) 가중치 $W_{hy}$와 곱해져서 $y_{t}$ 값을 구하게 되는 것입니다.

RNN도 위 그림처럼 다양한 구조로 사용이 가능하고, 위에서 배운 기본적인 구조는 Vanilla RNN 이였습니다.

LSTM, GRU 등 다양한 모델들은 향후 글에서 공부해보도록 하겠습니다.

끝!

참고문헌 : 모모딥시즌1

Leave a comment