반응형
    
    
    
  10.3 RNN을 이용한 문서 분류
10.3.3 문서의 순서정보를 활용하는 RNN 기반 문서분류
- Flatten() 대신에 SimpleRNN() 레이어를 사용
from tensorflow.keras.layers import SimpleRNN
from tensorflow.keras.optimizers import Adam
model = Sequential([
    Embedding(max_words, 32),
    SimpleRNN(32), # 펼쳐서 flat하게 만드는 대신 RNN 모형을 사용, maxlen만큼의 시계열 데이터
    Dense(32, activation='relu'),
    Dense(1, activation='sigmoid')
])
model.summary()
adam = Adam(learning_rate=1e-4)
model.compile(optimizer=adam, loss='binary_crossentropy', metrics=['acc'])
history = model.fit(X_train, y_train,
                    epochs=10,
                    verbose=0,
                    validation_split=0.2)
plot_results(history, 'acc')
#테스트 셋으로 학습된 모형의 성능을 평가
score = model.evaluate(X_test, y_test)
print(f'#Test accuracy:{score[1]:.3f}')
"""
Model: "sequential_1"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 embedding_1 (Embedding)     (None, None, 32)          320000    
                                                                 
 simple_rnn (SimpleRNN)      (None, 32)                2080      
                                                                 
 dense_1 (Dense)             (None, 32)                1056      
                                                                 
 dense_2 (Dense)             (None, 1)                 33        
                                                                 
=================================================================
Total params: 323,169
Trainable params: 323,169
Non-trainable params: 0
_________________________________________________________________
"""
- 과대적합만 이루어지고 실제 학습이 거의 되지 않음
- 경사소실 문제로 인해 학습이 잘 되지 못하고 원하는 정보가 제대로 축적되지 못함
- 장시간에 걸친 시간의존성(long-term dependency)이 학습되지 못하는 현상
- RNN의 가장 큰 문제점
- 이를 해결하기 위해 LSTM(Long Short-Term Memory)모형이 제안됨
※ 해당 내용은 <파이썬 텍스트 마이닝 완벽 가이드>의 내용을 토대로 학습하며 정리한 내용입니다.
반응형
    
    
    
  '텍스트 마이닝' 카테고리의 다른 글
| Word2Vec, ELMo, Doc2Vec의 이해 (1) (0) | 2023.07.26 | 
|---|---|
| RNN-딥러닝을 이용한 문서 분류 (6) (0) | 2023.07.25 | 
| RNN-딥러닝을 이용한 문서 분류 (4) (0) | 2023.07.23 | 
| RNN-딥러닝을 이용한 문서 분류 (3) (0) | 2023.07.22 | 
| RNN-딥러닝을 이용한 문서 분류 (2) (0) | 2023.07.21 | 
 
									
								 
									
								