본문 바로가기

트렌드 한눈에 보기/학계 트렌드

[딥러닝 공부] 2일차: Transformer를 공부하기 전에 훑어보는 LSTM (이론편)

RNN (Recurrent Neural Network)이란, 아래 하나의 그림으로 표현이 가능하다.

recurrent 라는 말이 의미하듯 (재현하다, 재발하다), 연속적인 데이터가 들어올 때, 동일한 블록을 거쳐서 연속적인 Output을 내놓는 형태의 Neural Network라고 할 수 있겠다. 연속적인 Output의 대표적인 예시가 언어의 문장 구조이기에 번역 등의 업무에 많이 쓰이지만, 이미지 해석 등의 영역에도 충분히 쓰일 수 있다.

 

하지만 단순한 RNN 블록으로는 한계가 있었는데, 바로 문장이 길어질수록 초반에 들어온 정보를 잘 기억하지 못한다는 것이다. 이런 현상이 나타나는 이유는 Gradient Vanishing 문제와 연관이 있다고 하는데, 상세한 내용은 아래 논문(링크)을 참고하면 좋을 듯 하다(난 안할 거다).

LSTM이 이를 해결한 방법은, Gradient를 계산하는 방식을 다각화한 것이다. 구체적으로는 총 세 가지 방법을 적용해서 하나의 블록을 구성했고, 이를 통해 블록이 쌓일 수록 gradient가 희석되는 일을 방지했다고 한다. 쉽게 생각해보더라도, sequential한 데이터가 주어졌을 때, 하나의 데이터와 그 다음 데이터를 보며 1) 어떤 요소를 무시할 것인지 2) 어떤 요소를 중요하게 생각할 것인지를 고려할 것이다. 세 가지 방법 중 두 가지가 이에 해당하며, 마지막은 이 두 가지를 어떻게 취합할 것인지에 대한 내용이다.

1) 어떤 요소를 무시할 것인지: Forget Gate

2) 어떤 요소를 중요하게 생각할 것인지: Input Gate

3) 어떻게 위 두개를 취합할 것인지: Output Gate

 

위 내용이 끝이다. 1997년 정도에 발표한 논문이라면 이 이상 복잡한 네트워크를 구성할 여력도 없을 것이다. LSTM을 제안한 첫 번째 논문을 확인해본다면 좋겠지만, 아쉽게도 위 그림만큼 친절하지 않다. 아래 그림은 원본 논문에 참고된 그림이다. 이런 그림을 가지고 위 같이 깔끔한 블록을 만들어냈다는 것이 신기할 따름이다.

LSTM을 pytorch로 구현해보는 정도로 LSTM 공부를 마치고, 바로 Transformer 로 넘어가도 되지 않을까 싶다. 그 이후에는 ChatGPT 등 보다 신기술을 공부해보는 시간을 처음으로 가져봐도 재밌지 않을까... 지금으로서는 기대해본다.