본문 바로가기
딥러닝

[딥러닝] RNN 알아보기

by 배써니 2024. 5. 6.

## 참고 사이트
https://ratsgo.github.io/natural%20language%20processing/2017/03/09/rnnlstm/
https://warm-uk.tistory.com/54

## 시퀀스(sequence)?

- 말 그대로 순서가 있는 data
  Text는 '문맥'이라는 순서가 있고, 시계열 데이터에는 '시간'이라는 순서가 있듯이, 영상이나 음성 등도 전부 순서와 함께 흘러가는 시퀀스 데이터이다.

- 이러한 시퀀스 데이터를 다루는 모델을 시퀀스 모델(Sequence model)이라고 한다.
  순서가 있는 Sequence data에서 특징들을 추출하여 여러가지 문제를 해결하고 예측하며, 대표적으로 RNN, GRU, LSTM등이 있다.

​- 그럼 일반적인 데이터와는 뭐가 다를까?
  기존에는 모든 Inputs들이 독립적이라고 가정했지만, 이전 정보가 의미가 있는 순서적 정보에는 순차적으로 과거 정보를 반영할 수 있는 모델이 필요하다. 
  그래서 나온 것이 Sequence model

- 시퀀스 모델의 종류
  1) one to many
  2) many to one
  3) many to many (encoder -> decoder)
  4) many to many

---

## RNN (Reccurent Neural Network)

1. RNN이란?

RNN은 Recurrent Neural Network의 약자로, 순환 신경망을 의미한다.
이는 시퀀스 데이터(이전의 정보가 이후에 영향을 미침)에 대해서 시간에 따라 누적된 데이터를 처리하도록 하는 신경망이다. 시퀀스라는 단어가 낯설 수 있는데, 단어들이 나열되어 문장을 구성하듯 여러 순차적 요소들이 나열된 형태를 시퀀스라고 이야기한다.

시퀀스 모델이란, 말그대로 순서가 있는 데이터를 의미한다. 처음에 이 단어를 접하면 정확한 의미를 파악하지 못할 수도 있는데, 가장 대표적인 시퀀스 데이터로는 '문장'이다.

쉬운 예시를 들어 생각해보자.
우리가 책을 읽을 때에는 이전 페이지의 내용을 기억하고 반영하여 현재의 내용과 전체 줄거리를 이해할 것이다.
순한 신경망 역시 과거의 데이터를 기억하고 반영하여 현재/미래의 입력값에 대한 성능을 개선한다.

그럼 지금부터 자연어 처리에서 가장 많이 쓰이는 시퀀스 모델인 RNN에 대해 차근차근 공부해보자.

2. RNN의 구조

메모리 셀이 있는 RNN은 시간에 따라 순차적으로 정보를 저장하고, 현재의 결과를 예측하거나 분류한다.
입력에서 출력 방향으로만 향하는 구조를 가진 피드 포워드 신경망과는 달리,
과거와 현재를 둘 다 반영한다는 점에서 가장 큰 특징을 갖는다.

그럼 어떠한 원리로 과거의 데이터를 저장하고 반영할 수 있는 것일까?
질문에 대한 대답은 신경망의 이름에서 찾아볼 수 있다. 바로 "순환하는 구조(recurrent structure)"를 갖기 때문이다.


3. RNN 진행과정

  1) input
     우선 시퀀스 데이터 즉 정보는 벡터로 표현되어 model에 input. 만약 데이터가 TEXT이다? 벡터로 표현하기 위해 Word embedding 진행
     word embedding: 

  3) State
     input인 벡터(가공된 정보)는 순서(Timestep)에 따라 순환신경망의 상태(State, 초록색 상자)에 저장됨. 이 상태(state)는 함수로 변형될 수 있으며, 함수(f)는 파라미터 W(가중치)와 이       전 상태(old state), input로 구성되어 있다.

  4) update
    그리고 W(가중치)가 튜닝되면서 계속 발전(Update)해나감.

  5) output
    모든 Time Step마다 새로운 인풋이 들어오면서 다른 반응 결과를 출력하는데, 이를 통해 다른 Timestep에서 다른 예측을 하는 것을 원하게 됨.


4. 특징
  1) 모든 time step마다 동일한 function과 동일한 parameter를 사용해야 한다.

 

[RNN 개념정리] RNN/LSTM 기본개념

LSTM(model)을 이해하기 전에 Sequence(data 특징)와 RNN(model)을 차례로 애해하는 것이 우선입니다. ​ 참고로 Sequence data를 다루는 model을 Sequence model이라고 합니다. 이 Sequence model에 대표적으로 RNN, GRU, LS

warm-uk.tistory.com