Skip to content
CatBus
Go back

모두를 위한 딥러닝 2 - Lab11-0: RNN intro

모두를 위한 딥러닝 Lab11-0: RNN intro 강의를 본 후 공부를 목적으로 작성한 게시물입니다.


RNN(Recurrent Neural Network)

RNN은 sequential data를 잘 학습하기 위해 고안된 모델이다. Sequential data란 단어, 문장이나 시게열 데이터와 같이 데이터의 순서도 데이터의 일부인 데이터들을 말한다. 이런 데이터는 이전 순서의 데이터들을 생각하여 학습을 하는 것이 더효과적일 것이다. 이렇게 학습하기 위해 RNN은 다음과 같은 구조로 구성되어 있다.

RNN의 구조

한 모델로 계속 학습하지만 이전의 output이 다음의 input과 함께 들어가는 구조이다. 이렇게 output을 다음 input으로 보낼 때 이 값을 hidden state라고 하며, 이런 식으로 모델을 구성하면 과거의 데이터를 반영하여 학습할 수 있게 된다.

이때 RNN 내부의 actiavtion은 tanh나 sigmoid function을 사용한다. 지금까지 봐왔던 network들은 기울기 소실 문제 때문에 ReLU를 사용해야 성능이 더 좋아진다고 했던 것 같은데 RNN의 내부에서는 왜 사용하지 않는 걸까. 그 이유는 RNN의 구조 때문인데, RNN은 같은 layer를 여러번 반복하여 학습하는 구조를 가진다. 이때 ReLU와 같은 activation을 사용하면 1보다 큰 수가 반복하여 곱해지기 때문에 기울기 폭발이 발생할 가능성이 매우 높다. 그래서 RNN의 내부에서 만큼은 절대값이 1을 넘지 않은 tanh나 sigmoid를 사용하는 것이다.

Activation을 표현하여 조금 더 자세히 모델을 나타내면 다음과 같은 구조를 확인할 수 있다.

RNN(Recurrent Neural Network) 설명 그림

일반화하여 수식으로 나타내면 다음과 같고

ht=f(ht−1,xt)h_t=f(h_{t-1}, x_t)

activation과 weight를 명시하여 표현하면 다음과 같다.

ht=tanh(Whht−1,Wxxt)h_t=tanh(W_h h_{t-1}, W_x x_t)

Usages of RNN

이런 RNN의 구조를 응용하여 다음과 같은 구조들로 사용할 수 있다.

Usages of RNN


Share this post:

비슷한 글

LAB 11-0이 글—

본문을 Xenova/multilingual-e5-small 로 임베딩하고, 그 벡터를 PCA 로 32축에 눌러 왼쪽 막대로 그렸습니다. 비슷한 글은 지문도 닮습니다 — 위아래를 견줘 보세요. 계산은 빌드 때 끝나고 벡터는 브라우저로 오지 않습니다.

Previous Post
모두를 위한 딥러닝 2 - Lab10-6: ResNet
Next Post
모두를 위한 딥러닝 2 - Lab11-1: RNN Basics