About me
home
Portfolio
home
💫

Anomaly Transformer

Anomaly Transformer 모델을 선정한 후, 이번 공모전에서 제시된 downstream task에 맞게 모델 개선을 진행하였고 성공적으로 해결하였다. 이 과정은 네 가지 주요 단계로 구성되어 있으며, 각 단계에서 큰 성능 향상이 있었음을 확인할 수 있었다.

1. Vanila Anomaly Transformer 적용

TYPE0 Python script 예시
main.py 소스코드
task에 맞게 model의 input, output 채널 수정
설비 번호(type)별로 model train & test 진행
window size 1로 고정함으로써 //연산으로 인한 나머지 제거 현상 방지
성능 : Public - 0.6092 / Total - 0.6038

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를 활용할 수 없다고 판단했다.
성능 : Public - 0.7889 / Total - 0.7849

3. HP(마력) feature 추가 및 전체 데이터셋 학습

설비 번호별로 학습 시 데이터 부족으로 성능이 향상되는 데에 한계가 있어 데이터의 특성 중 하나인 설비 번호별 마력 분류를 이용하고자 했고, 따라서 HP(마력) feature를 추가하여 전체 데이터 셋을 학습했다.
train, test dataset에 ‘HP’라는 feature를 추가하여 설비 번호에 해당하는 마력 값을 포함
설비 번호별로 학습시키지 않고 전체 train dataset 학습 후 설비 번호(type)별로 test dataset 추론
성능 : Public - 0.9040 / Total - 0.9002

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
성능 : Public - 0.9606 / Total - 0.9542

결론

이번 공기압축기 이상 판단 공모전에서 여러 단계의 과정을 거쳐 산업 설비의 이상 감지 down-stream task를 성공적으로 해결한 경험은 매우 의미있었다.
새로운 task에 맞는 모델을 구축하기 위해서 하이퍼파라미터 튜닝과 최적화 과정은 모델 성능을 높이는 데 결정적인 역할을 한다는 것을 깨달았다. 또한 도메인 이해와 이를 통한 데이터 전처리의 중요성도 인식하게 되었다. 이런 과정을 겪으며 F1-Score가 0.96에 달하는 만족스러운 성능을 달성할 수 있었다.
적절한 모델을 선정하는 과정에서 머신러닝 모델부터 LSTM, AutoEncoder 그리고 Transformer 계열 모델까지 전반적인 모델들을 공부해볼 수 있는 기회를 가질 수 있었다. 이 과정에서 다양한 모델의 특징과 장단점을 비교하였고, 모델들을 실제 문제에 적용하면서, 성능과 한계를 직접 확인해 볼 수 있었다.
결과적으로,이 경험을 통해 도메인 지식, 데이터 전처리, 모델 최적화 및 튜닝의 중요성을 체감하였으며, 딥러닝 기반의 이상치 탐지 기법에 대한 전반적인 이해도를 높일 수 있었다. 실제 산업 현장에서 발생할 수 있는 다양한 문제 상황에 대응할 수 있는 문제 해결 방법들을 학습할 수 있었다. 이는 산업 도메인에서 이상치 탐지와 관련된 인사이트를 넓힐 수 있는 계기가 되었다.