Anomaly Detect
in Security Logs(2020.11)
대회 개요 : 최근 국가기반시설 및 산업시설의 제어시스템에 대한 사이버 보안위협이 지속적으로 증가하고 있습니다. 국가 중요시설에 대한 사이버 공격은 국가와 사회에 돌이킬 수 없는 막대한 피해를 일으킬 수 있어, 세계 각국은 이에 대한 보안기술 개발에 전념하고 있습니다. 특히, 현장 제어시스템의 특성을 정확하게 반영하고, 다양한 제어시스템 사이버공격 유형을 포함하는 데이터셋은 AI기반 보안기술 연구를 위한 필수적인 요소입니다. HAI 데이터셋을 활용하여 정상 상황의 데이터만을 학습하여 공격 및 비정상 상황을 탐지할 수 있는 최신의 머신러닝, 딥러닝 모델을 개발하고 성능을 경쟁하는 대회입니다.
https://dacon.io/competitions/official/235624/overview/description
개인 목표 : 처음으로 딥러닝 실습해보는 경험
기간 : 2020.08 - 2021.09
참가인원 : 1명
데이터 타입 : tablur
학습 형태 : Self-Supervised Learning
하드웨어(클라우드) : Google Colab
배운점 : Tensorflow / Basic flow of anomaly detection
코드
데이터
row들은 같은 시간단위로 찍힌 2-d tablur이다.
network에 입력하기전에 [batch_size, window_size, columns] 형태로 바꾸어 주어야 한다. 당시 알고있는 시간과 관련된 아키텍쳐는 LSTM계열 이었다. LSTM은 long term dependency(gradient 소실)에 약하여 100개가 넘지 않는 89 window_size로 잘랐다. 89개의 window_size가 들어가 다음 시퀀스를 맞추는 self-supervised learning문제로 치환을 하였다.
모델
모델은 Tensorflow 2.x을 활용하여 Bidirectional-LSTM를 구성하였다. [batch_size, 89, 79]가 인풋으로 들어가며, [batch_size, 79]를 예측하는 방법으로 self supervised하게 task를 구성 하였다.
Loss function
Loss function은 일반적으로 Regression을 예측하는데 쓰는 MSE를 사용하였으며, Teacher Forcing하게 Loss를 계산하고 웨이트를 업데이트 한다.
Optimizer - Adam
결과 시각화
느낀점
현재 돌아보면 모자란 부분이 많이 보인다. 언어적 특성이 있는 것이 아니라 Bidirectional한것보다 unidirectional이 더욱 적합하지 않았을까 생각이 된다. A Deep Neural Network for Unsupervised Anomaly Detection and Diagnosis(2019) 논문을 적용했다면 좋은 성능뿐 아니라 설명력까지 갖춘 프로젝트가 되지 않았을까 생각이 든다.



