Part 5 · Context and Sequential Models - Remembering Previous Words

앞에서 읽은 내용을 기억하는 모델이 등장하다

문맥과 단어의 순서를 이해하려면 이전에 읽은 정보를 다음 단어를 처리할 때까지 유지해야 합니다. 하지만 기존 모델은 각 단어를 독립적으로 처리했기 때문에 이러한 정보를 충분히 활용할 수 없었습니다. RNN은 이전 단계에서 계산한 정보를 다음 단계로 전달하는 새로운 구조를 제안했습니다. 이를 통해 문장을 처음부터 끝까지 순서대로 읽으며 문맥을 조금씩 쌓아 갈 수 있게 되었습니다.

A Remaining Question

왜 새로운 모델이 필요했을까?

토크나이저는 문장을 토큰으로 나누고, 임베딩은 각 토큰을 숫자 벡터로 바꿉니다. 또한 문맥과 순서가 중요하다는 사실도 확인했습니다. 그러나 아직 한 가지 문제가 남아 있습니다.

문장 오늘은 비가 많이 온다
토큰 오늘은 · 비가 · 많이 · 온다
임베딩 토큰별 벡터
순서 앞에서 뒤로
이전 정보 어떻게 유지할까?
문장 이해 전체 관계 형성
현재 단어만 처리하는 경우

온다라는 단어만 보면 무엇이 오는지, 언제 오는지 알 수 없습니다.

앞에서 읽은 정보를 함께 사용하는 경우

오늘은 → 비가 → 많이라는 흐름을 유지한 채 온다를 읽으면 문장 전체를 연결할 수 있습니다.

문장을 이해하는 모델은 현재 토큰뿐 아니라 이전까지 읽은 정보를 계속 유지하고 활용해야 합니다.
How Reading Builds Meaning

문장의 의미는 한 단어씩 쌓여 간다

우리는 문장을 한 번에 완성된 형태로 받아들이지 않습니다. 한 단어씩 읽으면서 앞에서 읽은 내용을 유지하고, 새로운 단어가 들어올 때마다 이해를 수정하고 확장합니다.

오늘은

오늘에 관한 이야기가 시작되었다는 정도만 알 수 있습니다.

오늘은 비가

오늘의 날씨와 관련된 문장이라는 흐름이 생깁니다.

오늘은 비가 많이

비의 양이나 정도를 설명하고 있다는 정보가 추가됩니다.

오늘은 비가 많이 온다.

앞에서 읽은 내용을 연결하면서 문장의 의미가 완성됩니다.

문장 이해는 지금까지 형성된 이해에 현재 단어의 정보를 계속 더하는 과정입니다.
Passing Information Forward

앞에서 읽은 정보를 다음 단계로 전달해야 한다

순차 모델이 문장을 처리하려면 한 단계에서 얻은 정보를 다음 단어를 읽을 때 다시 사용할 수 있어야 합니다.

오늘은
오늘에 관한 문장
비가
오늘의 날씨
중심 대상: 비
많이
비의 양이 많음
온다
오늘 비가 많이 온다
실제 신경망은 이러한 내용을 문장 형태로 저장하지 않습니다. 앞에서 읽은 정보를 여러 숫자로 이루어진 벡터에 압축해 다음 단계로 전달합니다.
The Basic Idea of RNN

RNN은 이전 정보를 현재 입력과 결합한다

RNN은 현재 토큰의 임베딩 벡터만 입력받지 않습니다. 이전 단계에서 만들어진 정보도 함께 받아 새로운 상태를 계산합니다.

RNN의 기본 원리

이전까지의 정보 앞에서 읽은 내용
+
현재 입력 지금 읽는 토큰 벡터
=
갱신된 정보 다음 단계로 전달
RNN은 매 단계에서 이전 정보와 현재 입력을 결합하고, 그 결과를 다시 다음 단계에 전달합니다.
Why “Recurrent”?

같은 계산 구조를 문장 끝까지 반복한다

하나의 RNN 셀을 반복해서 사용

문장이 100개의 토큰으로 이루어졌다고 해서 서로 다른 신경망 100개를 만드는 것은 아닙니다.

하나의 RNN 셀을 첫 번째 토큰부터 마지막 토큰까지 반복해서 사용합니다.

이전 결과가 다시 돌아온다

한 단계에서 만들어진 결과는 다음 단계의 입력으로 다시 사용됩니다.

이런 순환 구조 때문에 Recurrent Neural Network라는 이름이 붙었습니다.

같은 RNN 셀
오늘은
같은 RNN 셀
비가
같은 RNN 셀
많이
같은 RNN 셀
온다
입력 토큰은 매번 달라지지만, 동일한 RNN 셀과 동일한 가중치가 모든 단계에서 공유됩니다.
Interactive Reading

문장을 한 단어씩 읽으며 이해가 갱신되는 과정

현재 입력

아직 읽지 않았습니다.
+ →

지금까지 이해한 내용

아직 형성된 정보가 없습니다.
다음 단어 읽기를 눌러 문장 이해가 어떻게 갱신되는지 확인하세요.
화면에 표시되는 설명은 이해를 돕기 위해 자연어로 풀어 쓴 것입니다. 실제 RNN 내부에서는 이 정보가 숫자 벡터로 전달됩니다.
What RNN Made Possible

RNN이 순차 데이터에 추가한 기능

순서대로 처리 첫 번째 토큰부터 마지막 토큰까지 시간의 흐름을 따라 처리합니다.
이전 정보 활용 앞 단계의 결과를 현재 단계의 계산에 다시 사용합니다.
같은 구조 재사용 문장 길이가 달라도 하나의 RNN 셀을 반복해서 적용할 수 있습니다.
문장 관계 형성 현재 토큰을 이전까지의 정보와 연결해 해석합니다.
RNN은 신경망이 시간의 흐름에 따라 정보를 전달하면서 순차 데이터를 처리할 수 있게 했습니다.
A New Question

이전 정보는 어디에 저장될까?

RNN은 이전 정보를 다음 단계로 전달합니다. 그렇다면 이 정보는 어떤 형태로 저장되고, 현재 입력과 어떤 계산을 거쳐 새롭게 갱신될까요?

현재 입력 x(t)
이전 상태 앞 단계 정보
RNN 셀 두 정보 결합
새로운 상태 갱신된 정보
다음 단계 정보 전달
출력 작업에 따라 생성
이 과정의 중심에는 RNN 셀과 Hidden State가 있습니다.
RNN은 임베딩을 대신하는가?
아닙니다. 토큰은 먼저 임베딩 벡터로 변환됩니다. RNN은 그 벡터들을 순서대로 입력받아 처리합니다.
RNN은 이전 문장을 그대로 저장하는가?
아닙니다. 지금까지 읽은 정보를 제한된 크기의 숫자 벡터로 압축해 전달합니다. 이 벡터를 Hidden State라고 합니다.
Summary

학습 내용 정리

  • 문장을 이해하려면 현재 토큰과 이전까지의 정보를 함께 사용해야 합니다.
  • 사람은 앞에서 읽은 내용을 유지하면서 새로운 단어를 연결합니다.
  • RNN은 이전 단계의 정보를 현재 단계에서 다시 사용하는 순환 신경망입니다.
  • RNN은 이전 정보와 현재 입력을 결합해 새로운 상태를 만듭니다.
  • 하나의 RNN 셀과 같은 가중치를 모든 시간 단계에서 반복해서 사용합니다.
  • RNN의 이전 정보는 문장이 아니라 숫자 벡터 형태로 전달됩니다.
  • RNN 셀과 Hidden State가 이 순차 처리의 핵심 구조입니다.