LSTM으로 텍스트를 처리하는 과정 이해하기

딥러닝으로 문장을 분류하거나 예측하려면, 먼저 문장을 모델이 이해할 수 있는 형태로 바꿔야 한다. 이 글에서는 텍스트가 어떻게 숫자로 바뀌고, 그 숫자가 어떻게 의미 있는 정보가 되는지를 정리해본다.

1. 텍스트를 숫자로 바꾸는 과정: 토큰화

모델은 글자를 읽을 수 없기 때문에, 글자를 숫자로 바꾸는 과정이 필요하다. 이 과정을 토큰화라고 한다.

예를 들어 다음 문장을 보자.

"이마트"

이 단어의 글자를 하나씩 쪼갠다.

이 / 마 / 트

그리고 각 글자에 번호를 붙인다.

이 → 10  
마 → 27  
트 → 93

그럼 “이마트"는 이런 숫자 목록이 된다:

[10, 27, 93]

여기까지는 단순히 “문자를 번호로 바꿔 놓은 것"이다. 이 숫자 자체에는 아무런 의미가 없다.


2. 의미 벡터 만들기: 임베딩

토큰화된 숫자를 모델이 이해할 수 있는 의미 있는 벡터(=숫자 묶음) 로 바꾸는 작업이 필요하다. 이 과정을 임베딩(embedding) 이라고 한다.

예를 들어 “이” 라는 글자가 ID 10번이라면, 임베딩은 이렇게 바꾼다:

10 → [0.14, -0.22, 0.85, ... , 0.03]

즉, 글자 하나가 여러 개의 숫자로 이루어진 벡터로 바뀌는 것이다.

왜 이런 벡터로 바꾸는가?

  • “이마트” 같은 글자들은 서로 비슷한 의미를 가진다 → 벡터도 비슷해진다
  • “커피숍”, “스타벅스” 같은 단어도 의미가 비슷하다 → 벡터도 가까워진다

즉, 비슷한 글자나 단어는 비슷한 벡터를 가지게 된다.

이 벡터는 사람이 정하는 것이 아니다. 모델이 학습을 하면서 자동으로 “어떤 벡터가 좋은지"를 스스로 찾아낸다.


3. 임베딩이 바뀌면 모델은 연산을 많이 해야 하는가?

“임베딩이 계속 바뀌면 모델이 너무 바빠지는 것 아닌가?” 하는 질문이 있을 수 있다. 하지만 그렇지 않다.

  • 임베딩은 단순히 “행렬에서 한 줄 꺼내오는 것”이라 아주 빠르다.
  • 임베딩이 업데이트될 때도 해당 글자의 벡터만 조금 수정한다.
  • 연산량이 많은 부분은 LSTM 자체이지, 임베딩이 아니다.

따라서 임베딩이 함께 학습된다고 해서 연산이 폭발적으로 늘어나는 일은 없다. 요즘 컴퓨터에서는 충분히 빠르게 처리된다.


4. LSTM 안에서 어떤 일이 벌어지는가?

LSTM(Long Short-Term Memory)은 “문장을 읽고 기억하는 능력”을 가진 모델이다. 이름이 어려워 보이지만, 핵심 아이디어는 단순하다. “중요한 정보는 오래 기억하고, 중요하지 않은 정보는 빨리 잊자.” 사람이 글을 읽을 때와 비슷하다.

문장을 읽을 때는 단순히 “글자 하나만 보고 판단”할 수 없다. 문맥이 중요하기 때문이다. 예를 들어:

"대"만 보고는 ‘대학교’인지 모름  
→ "학교"가 뒤에 붙어야 의미가 완성됨

또한 문장은 길기 때문에, 어떤 것은 오래 기억해야 하고 어떤 것은 빨리 잊어야 한다 이런 “기억 관리”를 하기 위해 LSTM의 게이트 구조(입력, 망각, 출력)가 존재한다. 하지만 학생 입장에서 게이트 수식까지 알 필요는 없다. 핵심은 LSTM은 ‘기억할 것과 잊을 것을 자동으로 골라내는 모델’이라는 것이다.

임베딩을 거친 문장은 이제 벡터들의 연속이다. 예를 들어 “이마트"가 이렇게 바뀌었다고 하자:

이 → [0.1, -0.3, 0.2, ... ]  
마 → [0.5,  0.0, -0.1, ... ]  
트 → [-0.2, 0.7, 0.4, ... ]

LSTM은 이 벡터들을 하나씩 읽으면서 이런 결정을 한다:

  • 지금 글자를 얼마나 기억할까?
  • 이전에 기억한 것은 얼마나 유지할까?
  • 새로 얻은 정보 중 얼마나 저장할까?

이 과정을 글자 수만큼 반복한다. 그래서 문장을 다 읽고 나면, LSTM은 문장의 내용을 압축한 벡터 하나를 만들게 된다. 이 벡터가 마지막에 분류기로 전달되어 “카테고리 예측” 등에 사용된다.


5. 정리

텍스트가 모델에 입력되기까지의 전체 흐름은 이렇다.

  1. 토큰화 → 글자를 숫자 ID로 바꾼다
  2. 임베딩 → 숫자를 의미가 담긴 벡터로 바꾼다
  3. LSTM 처리 → 벡터들을 순서대로 읽으며 문맥을 이해한다
  4. 출력층 → 최종적으로 어떤 카테고리인지 예측한다

이 세 가지가 연결되어 있기 때문에, 딥러닝이 텍스트를 읽고 의미를 파악할 수 있게 된다.

ai  pytorch 

더 보면 좋을 글들