[NLP 15] 순환 신경망 - RNN, LSTM, seq2seq

방선생·2025년 1월 21일
0

Natural Language Processing

목록 보기
15/22

RNN 모델 학습 요약 (with Keras)

  1. train data, test data 다운로드 (load_data)

  2. 단어 사전 생성 (get_word_index)

  3. 데이터 전처리(pad_sequences)

  4. RNN 모델 생성(model.add)
    1) 단어사전 사이즈, 임베딩 벡터 사이즈 지정
    2) Embedding layer 추가 (입 출력 사이즈 설정)
    3) RNN layer 추가
    4) Dense layer 추가 (활성화 함수 지정)

  5. 모델 compile (손실 함수, 최적화 함수, 메트릭 등)

  6. 모델 학습 (model.fit)
    1) callbacks 함수 지정
    2) 검증 데이터 지정
    3) batch_size, epochs 지정

  7. 모델 평가하기 (evaluate)

RNN의 다양한 형태

  • 다수 입력 단일 출력 (many to one)
    • 여러 개의 입력 시퀀스가 주어지고, 그로부터 단일 출력을 예측하는 형태
    • 입력은 시퀀스 형태(시간 또는 순차적으로 연결된 데이터)이며, 출력은 하나의 값 또는 클래스임
    • RNN은 모든 입력 시퀀스를 처리한 후, 마지막 시간 단계에서 출력값을 생성함

  • 단일 입력 다수 출력 (one to many)
    • 단일 입력을 받아서, 여러 개의 출력 시퀀스를 생성하는 형태
    • 첫 번째 입력에서 초기 상태를 생성한 후, 순차적으로 다음 출력을 예측함



순환 신경망 - LSTM (Long Short-Term Memory)

RNN의 문제점을 극복하기 위한 모델

  • 장기간 메모리를 유지할 수 있는 메모리 셀(C) 추가

LSTM의 구조

  • LSTM 1개는 3개의 gates(input, forget, output)로 구성
  • forget gate : 이전 상태 정보를 얼마나 버리고 얼마 만큼을 저장할지 결정
  • input gate : 입력되는 새로운 정보를 얼마만큼 저장할지 결정
  • output gate : 현재 LSTM 셀의 어떤 정보를 다음 LSTM 셀로 전달할지를 결정
  • 하지만 여전히 매우 긴 텍스트의 경우 장기 데이터에 대해 손실이 발생함



seq2seq 모델 (번역 모델)

  • 두 개의 순환 신경망(recurrent neural network)로 이루어진 학습모델
    • encoder: 입력 값을 받아 이를 고정된 크기의 문맥 벡터(context vector)로 변환(읽기)
    • decoder: 문맥 벡터를 사용해서 출력 값 생성(쓰기)
  • 하나의 텍스트 문장이 입력으로 들어오면 하나의 텍스트 문장을 출력하는 구조, 생성 모델, 기계 번역에서 사용되는 모델
profile
AI & Robotics

0개의 댓글