본문 바로가기

텍스트 마이닝

RNN-딥러닝을 이용한 문서 분류 (5)

반응형

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)모형이 제안됨

 

 

 

 

 

※ 해당 내용은 <파이썬 텍스트 마이닝 완벽 가이드>의 내용을 토대로 학습하며 정리한 내용입니다.

반응형