티스토리 뷰

딥러닝

RNN (Recurrent Neural Network)

up_one 2024. 7. 8. 13:17

RNN(Recurrent Neural Network)2024.06.27 - [딥러닝] - [3] LSTM(Long Short-Term Memory)에서 언급된 LSTM의 기반이 된 딥러닝 시계열 모델입니다. RNN의 구조와 동작원리, 어떤 문제가 존재하기에 LSTM으로 발전되었는지에 대해 포스트 하겠습니다.

 

RNN의 대상이 되는 시계열 데이터는 시간의 흐름에 의해 관측되며, 현재 상태가 과거 상태에 영향을 받습니다. 이 특징을 활용하여 RNN은 이전 시점의 정보와 현재 입력되는 정보를 반영하여 현재 상태를 갱신하는 구조입니다.

RNN 구조

 

이전 시점의 정보를 반영하는 방법은 은닉층에 이전 시점의 은닉층의 상태와 입력층의 상태를 연산하는 것입니다. 이때 각 layer에서 전달되는 상태를 표현하는 가중치가 필요합니다.

 

1. Why : 은닉층에서 출력층으로의 가중치

2. Wxh :  입력층에서 은닉층으로의 가중치

3. Whh : 이전 시점 은닉층에서 현재 시점 은닉층으로의 가중치

 

각 가중치는 여러 시점에서 동일한 값을 가지고 비용함수가 최소가 되는 값을 가집니다. 본격적으로 연산을 통해 RNN에서 어떻게 정보가 전달되는지 알아보겠습니다.

 

현재 시점의 은닉층은 입력층의 정보와 이전 시점 은닉층의 상태가 합성된 정보를 출력층으로 전달합니다. 펼쳐진 구조를 확인해 보면 이전 시점 은닉층의 상태가 누적되면서 현재 시점까지 전달되고 목표 시점의 출력층까지 반영되는 것을 알 수 있습니다. 현재 시점 은닉층에 이전 시점 은닉층의 상태를 합성하는 것은 이전 시점 은닉층에 가중치 Whh을 곱하는 것입니다.

 

은닉층의 정보 연산

 

가중치에 대한 업데이트는 다른 딥러닝 신경망 모델과 마찬가지로 경사하강법을 이용하여 Loss 값을 최소화하는 것입니다. 다만 언급된 3가지의 가중치는 어느 시점의 영향을 받는지를 고려해야 합니다. 첫 번째로 업데이트 과정을 알아볼 Why는 정보를 은닉층에서 출력층으로 전달할 때만 사용되므로 하나의 시점에만 영향을 받습니다. 

 

Why 파라미터에 대한 업데이트

 

Whh와 Wxh는 여러 시점에 포함되므로 각 시점마다 영향을 받는 Gradient 값을 포함해서 업데이트를 해줘야 합니다. 예를 들어, 시점 3까지의 영향을 받는 Gradient 값을 구하기 위해서는 시점 3의 영향, 시점 3,2의 영향, 시점 3과 2,1의 영향을 함께 고려해야 합니다.

 

Whh 파라미터에 대한 업데이트

 

Gradient 값을 구하는 과정에서 알 수 있듯이 RNN은 시점이 길어질수록 Gradient 값이 소실되는 문제가 발생합니다. 현재 시점의 은닉층에 대한 미분을 진행하면 tanh 함수를 미분한 값은 0~1의 값을 가지기 때문에 이 값을 여러 번 곱하면 0에 수렴하게 됩니다. 결국 오차역전파에 대한 학습을 더 이상 진행할 수 없는 상태가 됩니다. 이 문제를 해결하기 위해 전에 언급했던 LSTM을 통해 이전 시점의 정보를 기억할지 여부를 전하는 구조가 나타나는 것입니다.

'딥러닝' 카테고리의 다른 글

오차역전파법(Backpropagation)  (2) 2024.07.16
적대적 생성 신경망(GAN)  (0) 2024.07.11
[3] LSTM(Long Short-Term Memory)  (0) 2024.06.27
[2] 합성곱 신경망 (CNN) PART2  (0) 2024.06.24
[1] 합성곱 신경망 (CNN) PART 1  (0) 2024.06.23
TAG more
글 보관함
최근에 올라온 글