본문 바로가기
필기 노트/자연어 처리 입문

[자연어 처리 입문] 순환 신경망 (Recurrent Neural Network)

by misconstructed 2021. 1. 7.
728x90

<딥 러닝을 이용한 자연어 처리 입문> 읽고 간단하게 정리한 내용이다.

Vanilla RNN에 대해서 알아보고, Vanilla RNN의 한계를 개선한 LSTM과 GRU에 대해서 간단하게 알아본다. 


기존의 신경망들은 입력의 크기가 정해져있다는 단점이 있었다. 하지만, 자연어 처리를 위해서는 다양한 길이의 입력을 처리할 수 있는 인공신경망이 필요했다. 

# RNN (Recurrent Neural Network)

RNN은 시퀸스 모델이다. 시퀸스 모델이란 입력과 출력을 시퀸스 단위로 처리한다는 뜻이다. RNN 은닉층의 셀에서는 셀의 값을 출력층 방량으로 보낼 수 도 있고, 재귀적으로 은닉층의 다음 입력의 계산을 위한 입력으로 사용되기도 한다. 은닉층의 셀은 이전 값을 기억하기 위해 값을 저장하는 역할을 수행하기 때문에, 메모리 셀이라고도 한다. 현재 시점에서 메모리 셀이 가지고 있는 값은 과거 메모리 셀들의 영향을 받는다. RNN에서는 입력 시퀸스와 출력 시퀸스의 길이가 다를 수 있다. 입력과 출력의 길이에 따라서 one-to-many, many-to-one, many-to-many 로 분류할 수 있다. 

[그림-1]

현재 은닉층 $ h_t $ 는 현재 입력값 $ x_t $ 와 바로 이전 시점의 은닉층 $ h_{t-1} $ 을 입력으로 받아서 생성된다. 은닉층을 구하는 한 가지 방법은 [식-1]과 같다.

[식-1]

이렇게 해서 구한 현재 시점의 은닉층 가지고, 비선형 활성화 함수를 이용해서 출력값 $ y_t $ 를 구할 수 있다. ([식-2])

[식-2]

은닉층의 크기가 $ D_h $ 라고 하면, [식-1]과 [식-2]를 구성하는 벡터들의 크기는 [식-3]과 같다. 

[식-3]

RNN의 변형으로는, 다수의 은닉층을 사용하는 Deep RNN, 과거 시점의 데이터만 고려하는 것이 아니라, 미래의 데이터도 함께 고려하기 위해 앞 시점의 은닉상태와 뒤 시점의 은닉 상태를 각가 계산해서 함께 사용하는 Bidirectional RNN 등이 있다. 

# Long Short-Term Memory (LSTM)

[그림-2]

Vanilla RNN은 비교적 짧은 시퀸스에 대해서만 성능을 제공하고, 입력 시퀸스의 길이가 길어지면 성능이 매우 떨어진다는 단점이 있었다. 시퀸스가 길어질수록 앞의 정보다 뒤로 잘단되지 못하는 Long-Term dependency에 대한 문제가 있었고, 이러한 문제를 해결하기 위해서 LSTM이라는 모델이 제안되었다. LSTM은 input/forget/output gate를 생성해서 불필요한 데이터는 잊어버리고, 필요한 정보만 기억하도록 구조를 구성했다. 기존의 은닉층을 포함해서 새로운 cell state를 추가해서 메모리의 역할을 수행하도록 했다. 

입력 게이트 (input gate) : 입력 게이트는 현재 정보를 기억하기 위한 게이트이다. 현재 시점의 입력값과 이전 시점의 은닉층을 이용해서 어떠한 값을 기억할지 정하게 된다. ([식-4])

[식-4]

삭제 게이트 (forget gate) : 삭제 게이트는 기억을 삭제하기 위한 게이트이다. 현재 시점의 입력과 과거 시점의 은닉층을 이용해서 어떠한 값을 기억하지 않고 삭제할 것인지 결정하게 된다 ([식-5])

[식-5]

출력 게이트 (output gate) : 출력 게이트는 현재 시점의 은닉 상태를 결정하는데 사용된다. 

[식-6]

cell state : 셀 상태는 메모리와 같은 역할을 수행하게 된다. 우선 이전 셀 상태를 기반으로 forget gate 의 결과를 이용해 일정 데이터를 삭제하게 된다. 그리고 입력값을 기반으로 input gate를 적용해서 어떠한 값들을 셀 상태에 기록할지 결정한다. 최종적으로 삭제하지 않고 남은 데이터와 새로 기록하는 데이터를 합쳐서 현재 셀 상태를 구성하게 된다. ([식-7])

[식-7]

GRU (Gated Recurrent Unit) : LSTM과 유사한 성능을 제공하지만, 내부 구조를 간소화 시킨 모델이다. LSTM과는 다르게 cell state가 존재하지 않고, update/reset gate만 존재한다. 보통 데이터의 양이 많으면 LSTM을 사용하고, 데이터의 양이 적으면 GRU를 사용하는 것을 권장한다. 

728x90

댓글