📢 RNN 개념에 대한 페이지입니다.
개념
- 기본 수치데이터:
MLP
- 이미지 데이터:
CNN
- 시계열 데이터(텍스트 데이터):
RNN
텍스트 모델의 근간
- 앞 단에 따라 뒷 단어 예측!
- 다음 단어를 쓰기 위해서는 이전 단어를 기억하고 있어야 한다! → RNN 원리
탄생 이유
- 문장을 듣고 무엇을 의미하는지 알아야 서비스 제공이 가능
- 문장을 듣고 이해한다는 것은 많은 문장을 이미 학습해 놓았다는 것
- 문장의 의미를 전달하려면 각 단어가 정해진 순서대로 입력되어야 함
- 과거에 입력된 데이터와 나중에 입력된 데이터 사이의 관계를 고려해야 하는 문제가 생김
- 시간적 개념이 들어간 데이터들을 해결하기 위해 순환신경망(RNN)이 고안됨! → 즉, 순서 데이터를 가지고 학습함!
일반 신경망과 순환 신경망의 차이
- RNN 은 여러 개의 데이터가 순서대로 입력되었을 때 앞서 입력받은 데이터의 연산 결과를 잠시 기억해 놓는 방식
- 기억된 데이터를 가지고 다음 데이터로 넘어가면서 함께 연산함!
→ “기억 가중치” 추가됨!
- 앞에서 나온 입력에 대한 결과가 뒤에서 나오는 입력 값에 영향을 줌
- 예를 들어 비슷한 두 문장이 입력되어도 앞에서 나온 입력 값을 구별하여 출력 값에 반영할 수 있음
- 모든 입력 값에 이 작업을 순서대로 실행하므로 같은 층을 맴도는 것 처럼 보임
- 같은 층 안에서 맴도는 성질 때문에 ‘순환’ 신경망이라고 함
- 연산량 많음
- RNN 이 발전해서 transformer (이게 gpt 근간)
RNN 확장판
input: output 개수에 따른 종류 나뉨
- one to one
- one to many
- many to one
- many to many
RNN 기본 구조
Reference: https://mblogthumb-phinf.pstatic.net/MjAxODA2MDhfMTY5/MDAxNTI4NDAxNzM0Njc4.WNt0IwZmZl9tPdsHoDd_9oM--_B6JBPuhZXJQirRjNIg.BG0GIKaRWe6OqyCJqexKnjAHZsqaaTRulmtzGTcPnx8g.PNG.sw4r/image.png?type=w800
활용 사례
사용 방법
SimpleRNN(uniuts = 3,
input_shape = (4,9))
units : 뉴런 개수
input_shape : (timesteps, features)
*순환 횟수 = 몇번째 전 데이터까지 볼 건지!
(예) h, e, l, l, _ → 마지막 단어를 예측하려고 한다면 앞에 4개까지 고려해서 예측하므로 timesteps 는 4가 됨