LSTM AE를 이용한 시계열 데이터 이상 탐지 - (3) 모델 학습

kyle·2021년 5월 31일
2

Project

목록 보기
3/4
post-thumbnail

Goal

이번 포스팅에서는 LSTM AE 모델의 학습 과정에 대해 설명한다.

[1] LSTM AE 모델 구성

본 프로젝트에서 구현한 LSTM AE 모델의 구성은 아래와 같이 설정했다.

이번에 구현하는 LSTM AE 모델 구조는 2개의 인코더 계층과 디코더 계층으로 구성됨.

  • 계층 별 은닉층 개수
  • 최종 모델 구성

[2] 학습 파라미터

  • Optimizer : Adam
  • Activation Function : relu
  • Loss Function : MSE
  • Batch Size : 32
  • Epochs : Keras의 EarlyStopping Callback 함수 사용함

[3] 학습 과정

본 연구는 Geforce RTX 2080 GPU 환경에서 수행되었으며, Keras 2.3 버전 기반으로 학습되었다.

1) 정상 데이터인 훈련 데이터로 모델을 학습시킨다.

2) 검증 손실값이 5회 이상 감소하지 않는다면 학습을 종료함.

3) 학습이 종료되면 시각화하여 결과를 확인한다.

[4] 임계값(Threshold) 설정

학습이 끝난 후 입력 데이터의 정상, 이상 판단 기준이 되는 임계값을 설정한다.
본 포스팅에서는 정밀도-재현율 그래프를 사용한다.

정밀도-재현율 그래프

  • 정밀도-재현율 그래프는 임계값을 변경해가며 정밀도와 재현율을 구하는 그래프인데,

  • 정밀도와 재현율의 * Trade-Off 관계를 고려하여 정밀도와 재현율이 서로 가장 높게 도출되는 지점을 모델의 임계값으로 사용한다.

    *Trade-Off 관계 : 정밀도와 재현율은 서로 상호보완적인 관계로 한쪽을 높이면 한쪽은 떨어지게 된다.


    출처 : https://blog.lockcept.kr/76

[5] 구현 코드

1. LSTM AE 모델 구현

  • Keras 제공 라이브러리를 사용해 아래와 같이 함수로 모델을 구현한다.

2. 모델 학습

  • LSTM AE 모델을 불러오고 위의 설명한 하이퍼파라미터로 설정한 뒤 학습을 진행한다.
  • 학습 결과 에포크 79회에서 Val_Loss가 0.2556을 기록함

3. 학습 결과 시각화

  • matplotlib의 pyplot 라이브러리를 사용하여 학습 손실값을 그래프로 시각화한다.

4. 임계값(Threshold) 설정

  • Sklearn에서 제공하는 precision_recall_curve 라이브러리를 사용해서 아래와 같이 임계값을 설정함


다음 포스팅에서는 학습한 모델을 평가하는 과정을 다룬다.

profile
서버 개발자의 소소한 개발 일기

0개의 댓글