왜 새로운 모델이 필요했을까?
토크나이저는 문장을 토큰으로 나누고, 임베딩은 각 토큰을 숫자 벡터로 바꿉니다. 또한 문맥과 순서가 중요하다는 사실도 확인했습니다. 그러나 아직 한 가지 문제가 남아 있습니다.
온다라는 단어만 보면
무엇이 오는지, 언제 오는지 알 수 없습니다.
오늘은 → 비가 → 많이라는 흐름을 유지한 채
온다를 읽으면 문장 전체를 연결할 수 있습니다.
문장의 의미는 한 단어씩 쌓여 간다
우리는 문장을 한 번에 완성된 형태로 받아들이지 않습니다. 한 단어씩 읽으면서 앞에서 읽은 내용을 유지하고, 새로운 단어가 들어올 때마다 이해를 수정하고 확장합니다.
오늘에 관한 이야기가 시작되었다는 정도만 알 수 있습니다.
오늘의 날씨와 관련된 문장이라는 흐름이 생깁니다.
비의 양이나 정도를 설명하고 있다는 정보가 추가됩니다.
앞에서 읽은 내용을 연결하면서 문장의 의미가 완성됩니다.
앞에서 읽은 정보를 다음 단계로 전달해야 한다
순차 모델이 문장을 처리하려면 한 단계에서 얻은 정보를 다음 단어를 읽을 때 다시 사용할 수 있어야 합니다.
중심 대상: 비
RNN은 이전 정보를 현재 입력과 결합한다
RNN은 현재 토큰의 임베딩 벡터만 입력받지 않습니다. 이전 단계에서 만들어진 정보도 함께 받아 새로운 상태를 계산합니다.
RNN의 기본 원리
같은 계산 구조를 문장 끝까지 반복한다
문장이 100개의 토큰으로 이루어졌다고 해서 서로 다른 신경망 100개를 만드는 것은 아닙니다.
하나의 RNN 셀을 첫 번째 토큰부터 마지막 토큰까지 반복해서 사용합니다.
한 단계에서 만들어진 결과는 다음 단계의 입력으로 다시 사용됩니다.
이런 순환 구조 때문에 Recurrent Neural Network라는 이름이 붙었습니다.
문장을 한 단어씩 읽으며 이해가 갱신되는 과정
현재 입력
지금까지 이해한 내용
RNN이 순차 데이터에 추가한 기능
이전 정보는 어디에 저장될까?
RNN은 이전 정보를 다음 단계로 전달합니다. 그렇다면 이 정보는 어떤 형태로 저장되고, 현재 입력과 어떤 계산을 거쳐 새롭게 갱신될까요?
RNN은 임베딩을 대신하는가?
RNN은 이전 문장을 그대로 저장하는가?
학습 내용 정리
- 문장을 이해하려면 현재 토큰과 이전까지의 정보를 함께 사용해야 합니다.
- 사람은 앞에서 읽은 내용을 유지하면서 새로운 단어를 연결합니다.
- RNN은 이전 단계의 정보를 현재 단계에서 다시 사용하는 순환 신경망입니다.
- RNN은 이전 정보와 현재 입력을 결합해 새로운 상태를 만듭니다.
- 하나의 RNN 셀과 같은 가중치를 모든 시간 단계에서 반복해서 사용합니다.
- RNN의 이전 정보는 문장이 아니라 숫자 벡터 형태로 전달됩니다.
- RNN 셀과 Hidden State가 이 순차 처리의 핵심 구조입니다.