IMDB감성분류 과정(LSTM)

모와이·2026년 1월 25일

llm

목록 보기
10/20

데이터 준비

  • 리뷰 텍스트와 라벨(긍정=1, 부정=0)을 가져옴
  • 텍스트를 전처리(소문자화/정규식 처리 등)

토큰화 + 정수 인코딩

  • 단어 사전(VOCAB)을 만들고
  • 각 리뷰를 단어 -> 정수 시퀸스로 바꿈)

    "i loved this movie" → [10, 532, 21, 88]

길이 맞추기

  • 리뷰 길이가 제각각이라 모델 입력이 불편
  • 최대길이(max_len)으로 자르거나 0으로 채움

    최종 입력 shape : (batch, seq_len)

Embedding 레이어

  • 정수(단어 ID)를 바로 쓰지 않고 각 단어를 연속 벡터로 바꿈

    입력: (batch, seq_len) → 출력: (batch, seq_len, emb_dim)

LSTM 통과

  • 왼쪽 -> 오른쪽으로 읽으면서
    • 중요한 정보는 Cell state 𝐶𝑡 에 유지
    • 필요 없는 정보는 Forget gate로 버리고
    • 필요한 새 정보는 Input gate로 추가
    • 최종적으로 은닉상태 ℎ𝑡를 만듦

분류기

  • LSTM출력을 Dense로 보내서 시그모이드로 긍정확률 0~1출력

학습

  • 손실함수(BCE)
  • 옵티마이저로 가중치 업데이트
  • 검증셋으로 과적합 체크

추론

  • 새 리뷰 -> (토큰화->패딩->임베딩->LSTM->시그모이드)
  • 확률≥0.5면 긍정, 아니면 부정(임계값 조정)

부록

  1. 왜 3번에서 최종 입력 형태가 (batch,seq_len)이어야 하는가?
  • 신경망은 보통 한번에 같은 크기의 텐서를 받아야함 (어떤 리뷰는 20/ 다른리뷰는 200)단어면 배치로 묶어 계산힘듦 -> 그래서 padding으로 자르고 채움

    즉 배치 내 길이를 맞추기위해

profile
공부하는거 정리하는 블로그

0개의 댓글