RNN 모델 학습 요약 (with Keras)
- train data, test data 다운로드 (load_data)
- 단어 사전 생성 (get_word_index)
- 데이터 전처리(pad_sequences)
- RNN 모델 생성(model.add)
1) 단어사전 사이즈, 임베딩 벡터 사이즈 지정
2) Embedding layer 추가 (입 출력 사이즈 설정)
3) RNN layer 추가
4) Dense layer 추가 (활성화 함수 지정)- 모델 compile (손실 함수, 최적화 함수, 메트릭 등)
- 모델 학습 (model.fit)
1) callbacks 함수 지정
2) 검증 데이터 지정
3) batch_size, epochs 지정- 모델 평가하기 (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: 문맥 벡터를 사용해서 출력 값 생성(쓰기)
- 하나의 텍스트 문장이 입력으로 들어오면 하나의 텍스트 문장을 출력하는 구조, 생성 모델, 기계 번역에서 사용되는 모델