본문 바로가기

데이터/NLP 공부

(-ing) [NLP] 쉽게 설명하는 RNN과 LSTM 그리고 Transformer 까지의 흐름

 

무언가를 새로 공부할 때 가장 큰 허들은 개념 및 용어와 친숙해지는 것이라고 생각한다. 

시중에 많은 블로그나 책에 설명이 잘 되어있고, 자료도 많지만 

대부분 그들이 친숙한 해당 분야의 언어로 작성되었기 때문에 (지식의 저주!)

새로 배우는 사람에겐 진입장벽이 크다. 

당연한 개념인데도 용어가 낯설면 엄청 어렵고 멀게 느껴지기 마련이다. 

 

난 NLP초보자니까 지식의 저주에 빠지지않게 조심하면서 

쉽게 쉽게 풀어 정리해보겠다!

 

이 글의 목적은, 

나와 비슷한 사람에게 도움을 주고, 

또 나중에 시간이 지나서 내가 배운 것들이 잘 기억 안 날 때 나 스스로 다시 복기하기 위한 목적이다.

 

"혹시 내용 중 틀린 게 있다면 알려주세요 :-)"


목차

1. 언어 데이터 = Sequential data

2. RNN (Recurrent Neural Network, 순환 신경망) 


1. 언어 데이터 = Sequential data

전통적으로 '언어'의 경우, sequential 한 데이터로 생각되었고

sequential data에서의 long-term dependency를 반영해 줄 수 있는 방법에 대해 연구자들이 노력해 왔다. 

 

언어는 이미지처럼 하나의 데이터가 동일한 time-stamp를 가지고 하나의 정보를 전달하는 것이 아니라,

언어의 경우 순서대로 말하는 것, 텍스트를 순서대로 읽는 것과 같이 잇따라 들어오는 데이터로 생각되었다는 뜻이다. 

 

언어의 경우, 이미지처럼 고정된 크기가 아니라 입력의 크기가 가변적인 데이터이다. 

또한 언어 데이터는, 최종적으로 읽어 들인 데이터가 바로 직전의 데이터와 관계있지 않을 수가 있고 

 series로 읽어 들인 데이터의 초반부의 정보가 후반부에서 활용될 때가 있어서, 긴 데이터의 흐름에서도 앞부분에 종속적이다. 

 

 

2. RNN (Recurrent Neural Network, 순환 신경망)

 

언어와 같이 sequential data를 다루기 위하여,

딥러닝의 가장 기본적인 sequence model로 RNN(Recurrent Neural Network, 순환 신경망)이 있다. 

RNN은 유닛 간의 연결이 순환적 연결 구조를 갖고 있고, 

Hidden state (기억)을 가지고 있어서, 매번 데이터가 들어올 때마다 hidden state에 조금씩 반영을 하며 정보를 수정하여 

현재까지 계산된 결과에 대한 정보를 보관하고 있으며, 

이를 활용하여 최종적으로 아웃풋을 내도록 되어있다. 

 

RNN은 recurrent(재귀적)으로 연결된 구조를 가지고 있다. 

아래 이미지가 RNN의 구조인데, 왼쪽처럼 표현된 RNN 네트워크를 펼치면 오른쪽 처럼 된다. 

오른쪽 이미지는 RNN네트워크를 전체 sequence에 대해 그려놓은 것이다. 

 

각 x는 각 time step에서의 입력값으로, 

예를 들어, I love you 를 입력하면, 

x_{t-1} = I, 

x_{t} = love

x_{t+1} = you  

가 된다. 

 

 

 

RNN의 recurrent한 연결 (출처: http://aikorea.org/blog/rnn-tutorial-1/)

 

 

 

 

RNN에서 앞의 정보를 뒤로 전달하는 방법은, BPTT (Backpropagation Through Time, 역전파) 알고리즘을 활용하는 것이다. 

 

RNN의 단점은 시점이 길어질수록 앞의 정보가 뒤로 충분히 전달되지 못한다는 것이다. 

 

 

 

 

 

 

 


계속 업데이트 중 입니다.


참고한 자료

RNN, LSTM 부분: 

https://casa-de-feel.tistory.com/39

http://aikorea.org/blog/rnn-tutorial-1/

https://wegonnamakeit.tistory.com/7

https://kh-kim.gitbooks.io/pytorch-natural-language-understanding/content/sequential-modeling/lstm.html

https://velog.io/@nkw011/lstm-gru

 

 

 

RNN의 BPTT 부분:

https://newsight.tistory.com/94

https://aikorea.org/blog/rnn-tutorial-3/

 

'데이터 > NLP 공부' 카테고리의 다른 글

[ML] Metrics  (0) 2023.04.09
[IR] Beam Search  (0) 2023.04.09
[Ranking] BM25 (=Best Matching 25)  (0) 2023.04.08