본문 바로가기
데이터 사이언스/딥러닝

LSTM 구조 쉽게 이해하기

by 끙정 2021. 5. 26.
728x90

안녕하세요, 끙정입니다.

 

오늘은 시퀀셜한 데이터를 학습하고 예측하는데 아주 강력한 딥러닝 아키텍쳐인 LSTM을 복습해보겠습니다. 처음에 LSTM을 접했을 때는 너무 수식도 많고, 파라미터도 많고, 이해가 하나도 가질 않았습니다. 그러나 막상 하나하나 찬찬히 뜯어보면 어려울 것이 하나도 없습니다. 굉장히 직관적으로 설계를 해두었습니다. 그럼 시작해 보겠습니다.

 

RNN의 한계점.

대부분의 최신 알고리즘이 기존의 알고리즘들이 가지고 있는 한계점을 해결하기 위해 나오는 것처럼, LSTM도 RNN이 가지는 한계점을 해결하기 위해서 탄생했습니다. RNN이 가지고 있던 한계점은 크게 두 가지였습니다.

1) Vanishing Gradient

2) Long-term Dependency

입니다. 배니싱 그라디언트, 즉 기울기 소실은 고전적인 아키텍쳐들이 모두 가지고 있던 문제점입니다. LSTM은 이러한 기울기 소실을 최대한 해결하여 학습이 잘 되도록 했습니다. 또한 RNN은 Long-term Dependency 즉, 시퀀스 길이가 길어질수록 과거의 정보를 전달하지 못하는 한계점을 가지고 있었습니다. LSTM은 이 또한 해결했습니다.

 

LSTM의 특징.

LSTM에서 기억할 것은 딱 아래의 2가지 입니다. 바로

1) 컨베이어 벨트에 정보를 올려서 다음 셀로 정보를 계속 전달한다.

2) 컨베이어 벨트 위로 지나가는 정보를 3개의 문을 통해 무엇을 지우고, 무엇을 전달하고, 무엇을 내보낼지를 결정한다.

끝.

수식은 구조를 이해하면 자연스럽게 외워집니다.

 

 

Cell State, LSTM의 코어.

LSTM에서 가장 중요한 부분은 바로 Cell State입니다. 위에서 말했듯이 Cell State는 정보를 전달하는 컨베이어 벨트 역할을 하는 파트입니다. 이 Cell State는 이전 셀의 정보를 그대로 가져와서 현재 셀에서 지지고 볶은 결과를 가지고 다음 셀로 전달합니다. LSTM은 바로 이 Cell State를 통해 RNN의 한계점이었던 Vanishing Gradient와 Long-term Dependency를 해결했습니다.

 

Cell State는 셀에 들어와서 나갈 때까지 3개의 문을 지납니다. 바로 Forget Gate, Input Gate, Output Gate 입니다. 

 

위의 그림은 Cell State의 루트만을 강조한 그림입니다. 이전 시점(t-1)의 셀에서 넘어온 Cell State인 C(t-1)은 빨간색 동그라미로 그려져 있는 3개의 문을 지납니다.

1) 가장 먼저 Forget Gate를 거치며 이전 셀에서 넘어온 정보 중에 중요하지 않은 정보를 지우게 됩니다.

2) 그리고 다음 Input Gate에서 현재 셀에 Input된 정보 [h(t-1), x(t)] 에서 다음 셀에 전달하여야 할 중요한 정보를 담습니다.

3) 이렇게 이전 시점에서 넘어온 Cell State에 중요하지 않은 정보를 지우고, 중요한 정보를 담은 새로운 Cell State, C(t)를 다음 셀(시점)로 전달합니다.

4) 추가로 Output Gate를 지나면서 y_hat 값을 내뱉고, 동시에 다음 셀로 hidden state인 h(t)를 전달합니다. (output gate 전에 있는 빨간 동그라미는 tanh 활성화 함수입니다.)

 

Forget Gate.

앞서 Cell State에서 설명드렸다시피 Forget Gate는 현재 셀에 입력된 hidden state와 input 값을 통해서 Cell State에서 어떤 정보가 중요하지 않은지를 결정합니다. 이때 sigmoid 함수를 지나가는데, 이는 gate mechanism의 원리를 보여줍니다. sigmoid는 값이 0~1 사이의 값을 내뱉습니다. 중요하지 않은 정보는 0에 수렴하고, 중요한 정보는 1에 수렴합니다. 0이면 문을 닫고, 1이면 문을 여는 개념이라고 보시면 됩니다. 여기서는 Forget Gate이기 때문에 0이면 문을 닫아 정보가 전달되지 않게 하고, 1이면 문을 열어서 전달이 되게 합니다.

빨간색 동그라미는 element wise 연산을 의미합니다. Forget Gate의 수식은 아래와 같습니다.

U, W는 trainable parameter

 

Input Gate.

Input Gate 또한 이름에서 알 수 있듯이, Cell State 에 새롭게 입력된 정보 중에 중요한 정보를 입력하는 파트입니다. 현재 셀이 입력된 [h(t-1), x(t)] 값을 각각 두 과정을 따로 거치며 하나로 만듭니다.

1) 먼저 Cell State 에 입력 될 후보 정보를 담고 있는 Candidate State를 tanh 함수를 통과시킵니다.

2) 그리고 Forget Gate와 마찬가지로 sigmoid를 통과시켜 어떤 데이터를 전달시키고, 어떤 데이터를 전달시키지 않을지를 0~1 사이의 값으로 출력합니다.

3) 그렇게 두 결과물을 element wise product를 통해 최종 결과 값을 출력하고,

4) 이를 Cell State에 element wise sum 을 시킵니다. 이를 통해 Cell State에는 현재 셀에 입력된 정보 중에서 다음 셀에도 전달시켜야 할 중요한 정보를 새로 담는 것입니다.

수식은 아래와 같습니다.

U, W 는 trainable parameter
candidate state

 

Output Gate.

자, 드디어 마지막 관문인 Output Gate입니다. 여기서는 이제 셀 밖으로 내보낼 결과물들을 최종적으로 출력해내는 역할을 합니다. Ct는 앞선 두 게이트를 거친 후에 바로 다음 시점의 셀로 전달되게 되고, Output Gate를 통해 출력되는 값은 ht 즉, hidden state 와 output 입니다. 앞서 Forget Gate와 Input Gate를 거쳐오면서 Cell State는 과거의 중요하지 않은 정보를 지우고, 현재의 중요한 정보를 입력한 상태입니다.

1) 이렇게 업데이트 된 Cell state를 역시 tanh 함수를 통과시킵니다.

2) Input 값으로 들어온 정보를 역시 sigmoid를 통과시켜 어떤 값을 hidden state로 전달하고, 또 output으로 내보낼지를 결정합니다.

3) 두 값을 element wise product를 통해 최종적인 결과값을 출력합니다.

4) 결과물은 output으로 나가고, hidden state로 다음 셀에 전달됩니다.

수식은 아래와 같습니다.

U, W 는 trainable parameter
Updated Cell State(t)
hidden state(t)

 

정리.

1) LSTM은 3개의 Gate와 1개의 Cell State가 존재한다.

2) Cell State는 3개의 Gate를 지나오며 보존할 정보와 삭제할 정보, 내보낼 정보를 업데이트한다.

3) 각 Gate는 0~1 사이의 값을 취하는 Sigmoid 함수를 통해 어떤 정보를 보존하고, 어떤 정보는 전달하지 않을지를 결정한다.

4) Forget Gate는 이전 셀에서 넘어온 Cell State에 담긴 정보 중에 어떤 것을 지울지 결정한다.

5) Input Gate는 이전 셀에서 넘어온 Cell State에 현재 셀에 들어온 Input 값 중 어떤 것을 입력하여 전달할지 결정한다.

6) Output Gate는 4)와 5)를 통해 업데이트 된 Cell State에 담긴 정보 중에 어떤 정보를 전달하고 내보낼지 결정한다.

7) 이러한 구조를 통해 LSTM은 Vanishing Gradient와 Long-term Dependency를 해결하였다.

 

출처는 수업.

 

 

 

728x90

'데이터 사이언스 > 딥러닝' 카테고리의 다른 글

GRU 구조 쉽게 이해하기  (0) 2021.05.28
RNN에는 들어가는 Data Input Shape  (0) 2021.05.24
RNN 구조 쉽게 이해하기  (0) 2021.04.28

댓글