Anomaly Transformer 모델을 선정한 후, 이번 공모전에서 제시된 downstream task에 맞게 모델 개선을 진행하였고 성공적으로 해결하였다. 이 과정은 네 가지 주요 단계로 구성되어 있으며, 각 단계에서 큰 성능 향상이 있었음을 확인할 수 있었다.
1. Vanila Anomaly Transformer 적용
TYPE0 Python script 예시
main.py 소스코드
•
task에 맞게 model의 input, output 채널 수정
•
설비 번호(type)별로 model train & test 진행
•
window size 1로 고정함으로써 //연산으로 인한 나머지 제거 현상 방지
2. PSM 데이터셋 Pre-trained model 사용
train dataset이 매우 작아 model 성능이 낮게 나온다고 판단하여 pre-trained model을 활용하기로 결정했다. 다양한 dataset 중에 PSM dataset은 여러 서버에서 수집된 성능 메트릭 데이터로 산업용 시스템의 이상 감지, 상태 모니터링, 예측 분석 등과 같은 문제를 해결하는 데 사용된다. 해당 데이터가 task 데이터와 같은 시계열 데이터인 점, task 데이터보다 더 대규모 데이터인 점을 고려하여 Pre-train할 dataset으로 사용했다.
•
PSM dataset으로 pre-train한 model을 생성하기 위해 PCA 기법을 사용하여 dataset의 차원을 25에서 8로 축소
•
설비 번호(type)별로 model train & test 진행하였고 anormly_ratio를 5, 7, 10으로 실험해본 결과 7일 때 성능이 가장 좋음
•
type 1 의 motor_vibe 이상치를 정상범위로 전처리한 데이터 사용
pre-train & fine-tune 방법을 사용하려면 두 method의 dataset의 # features를 통일해야 한다는 pre-train 방법의 내재된 이론 상 한계가 존재한다. 더불어 PSM dataset으로 사전 훈련된 모델을 실험적으로 진행해봤지만 성능 향상을 보이지 못하였으므로, 실험적&이론적 한계로 인해 PSM dataset를 활용할 수 없다고 판단했다.
3. HP(마력) feature 추가 및 전체 데이터셋 학습
설비 번호별로 학습 시 데이터 부족으로 성능이 향상되는 데에 한계가 있어 데이터의 특성 중 하나인 설비 번호별 마력 분류를 이용하고자 했고, 따라서 HP(마력) feature를 추가하여 전체 데이터 셋을 학습했다.
•
train, test dataset에 ‘HP’라는 feature를 추가하여 설비 번호에 해당하는 마력 값을 포함
•
설비 번호별로 학습시키지 않고 전체 train dataset 학습 후 설비 번호(type)별로 test dataset 추론
4. 최종 모델
•
HP별 train, test dataset을 나눠서 추론
•
HP별 hyper-parameter tuning set 설정
◦
anormaly ratio : 시각화를 통해 threshold를 변경하여 이상값과 정상값을 분류하는데 사용
◦
window size : test dataset이 시계열 데이터가 아닌 해당 공모전의 domain 특성을 잘 고려하여 train 시 widow size를 1로 설정하였다. 마찬가지로 test 시 window size를 1로 설정하여 train set 상황에 맞춰 test를 진행
◦
shuffle : 이상치 탐지 모델의 경우 한 포인트에서 영향을 주는 범위(window size)를 잘 설정하여 shuffle True를 하게 되면 다양한 상황에 대한 학습이 가능
▪
train dataset : test dataset이 시계열 데이터가 아니고 다양한 데이터셋 학습을 위해 shuffle을 True로 설정
▪
test datset : 분류 결과값을 추출할 때 순서대로 받아야하므로 shuffle을 False로 설정
HP10 | HP20 | HP30 | HP50 | |
train / test | train / test | train / test | train / test | |
anormly ratio | 3.5 / 1.6 | 3.5 / 3.5 | 3.5 / 5.1 | 3.5 / 2.7 |
# epochs | 50 / 10 | 50 / 10 | 50 / 10 | 50 / 10 |
batch size | 1 / 1 | 1 / 1 | 1 / 1 | 1 / 1 |
window size | 1 | 1 | 1 | 1 |
shuffle | True / False | True / False | True / False | True / False |
learning rate | 0.0004 | 0.0004 | 0.0004 | 0.0004 |
결론
이번 공기압축기 이상 판단 공모전에서 여러 단계의 과정을 거쳐 산업 설비의 이상 감지 down-stream task를 성공적으로 해결한 경험은 매우 의미있었다.
새로운 task에 맞는 모델을 구축하기 위해서 하이퍼파라미터 튜닝과 최적화 과정은 모델 성능을 높이는 데 결정적인 역할을 한다는 것을 깨달았다. 또한 도메인 이해와 이를 통한 데이터 전처리의 중요성도 인식하게 되었다. 이런 과정을 겪으며 F1-Score가 0.96에 달하는 만족스러운 성능을 달성할 수 있었다.
적절한 모델을 선정하는 과정에서 머신러닝 모델부터 LSTM, AutoEncoder 그리고 Transformer 계열 모델까지 전반적인 모델들을 공부해볼 수 있는 기회를 가질 수 있었다. 이 과정에서 다양한 모델의 특징과 장단점을 비교하였고, 모델들을 실제 문제에 적용하면서, 성능과 한계를 직접 확인해 볼 수 있었다.
결과적으로,이 경험을 통해 도메인 지식, 데이터 전처리, 모델 최적화 및 튜닝의 중요성을 체감하였으며, 딥러닝 기반의 이상치 탐지 기법에 대한 전반적인 이해도를 높일 수 있었다. 실제 산업 현장에서 발생할 수 있는 다양한 문제 상황에 대응할 수 있는 문제 해결 방법들을 학습할 수 있었다. 이는 산업 도메인에서 이상치 탐지와 관련된 인사이트를 넓힐 수 있는 계기가 되었다.