UNLV

[UNLV] - 이상 탐지: 이론과 진동 센서 실습(12일차)

빡성 2026. 2. 21. 03:47

1. 수업 개요

이번 수업은 이상 탐지(Anomaly Detection)의 정의, 전통적 방법(Isolation Forest), 딥러닝 방법(Autoencoder, VAE, LSTM-AE, GAN), 평가 지표를 이론으로 다루고, 실습에서는 라즈베리파이(또는 센서 보드)에서 가속도·진동 데이터를 PC로 스트리밍한 뒤, 호스트 PC에서 정상 데이터만으로 캘리브레이션·학습을 하고 실시간으로 이상을 탐지하는 구성을 진행했다.

2. 이상 탐지의 정의와 전통적 방법

이상 탐지란?

정의: 데이터셋의 일반적인 패턴이나 행동에서 크게 벗어나는 데이터 포인트, 이벤트, 또는 관측치를 식별하는 기술이다. 건초 더미 속의 바늘을 찾는 것과 같다. 실제 환경에서는 이상치가 매우 드물기 때문에(보통 전체의 1% 미만) 정확히 찾아내는 것이 어렵다.

세 가지 주요 유형

  • 점 이상(Point Anomalies): 개별 데이터 포인트 하나가 나머지와 멀리 떨어진 경우. 예: 신용카드 부정 사용.
  • 문맥적 이상(Contextual Anomalies): 특정 상황에서만 이상으로 간주되는 경우. 예: 여름의 30°C는 정상이지만 겨울의 30°C는 이상.
  • 집단적 이상(Collective Anomalies): 개별 데이터는 정상일 수 있으나, 그 시퀀스나 집합이 비정상인 경우. 예: 불규칙한 심장 박동.

왜 딥러닝인가? (전통적 머신러닝과의 차이)

전통적 방법의 한계: Isolation Forest나 One-Class SVM 같은 기존 방식은 이미지, 비디오 같은 고차원 데이터나 복잡한 비선형 관계를 다루기 어렵다.

딥러닝의 장점: (1) 특징 학습 — 수동으로 특징을 뽑지 않고 계층적 표현을 자동으로 학습한다. (2) 확장성 — 대규모 데이터를 효과적으로 처리할 수 있다. (3) 비정형 데이터 — 이미지, 오디오, 시계열 데이터 처리에 강하다.

Isolation Forest: 전통적 방식의 대표

데이터를 직접 모델링하기보다, 데이터를 고립(Isolate)시키는 데 집중하는 비지도 학습 알고리즘이다. 무작위 분할로 트리를 만들 때, 이상치는 정상 데이터보다 적은 횟수의 분할로도 쉽게 고립된다. 따라서 경로 길이(Path length)가 짧을수록 이상치일 확률이 높다고 판단한다. 표 형식 데이터나 저차원 특징에는 여전히 많이 쓰인다.

3. 딥러닝 기반 이상 탐지 아키텍처

재구성 기반 탐지 원리

딥러닝 이상 탐지의 핵심 아이디어는 재구성(Reconstruction)이다. 가설: 정상 데이터로만 학습한 모델은 정상 데이터는 잘 복원하지만, 이상치를 넣으면 복원에 실패한다. 지표: 입력과 출력의 차이인 재구성 오차(Reconstruction Error, MSE 등)를 쓴다. 오차가 낮으면 정상, 높으면 이상으로 본다.

주요 아키텍처

  • Autoencoder (AE): 입력을 잠재 공간(Latent space)으로 압축했다가 다시 복원하는 구조. 정상 샘플로만 학습해 재구성 손실을 최소화한다.
  • Variational Autoencoder (VAE): 일반 AE는 입력을 고정된 점으로 인코딩하는 반면, VAE는 평균(μ)과 분산(σ²)을 가진 확률 분포로 인코딩한다. 잠재 공간이 더 부드러워지고 이상 점수를 확률적으로 계산하기 좋다.
  • LSTM Autoencoder: 로그·센서 같은 시계열 데이터에 맞춘 구조. LSTM으로 시간적 의존성을 잡고, 재구성 오차로 이상을 판단한다.
  • GAN (AnoGAN): 생성자(G)는 정상 데이터를 생성하도록, 판별자(D)는 가짜를 걸러내도록 학습한다. 추론 시 특정 입력을 잘 생성하지 못하거나 판별자가 거부하면 이상으로 본다.

4. 평가 지표, 요약 및 모델 선택

평가 지표와 임계값

이상 탐지에서는 데이터 불균형이 심하므로 정확도(Accuracy)만 믿으면 안 된다. 임계값(Threshold)은 고정값이나 통계적 방법(예: 평균 + 3×표준편차)으로 정한다. 주요 지표: 정밀도(Precision), 재현율(Recall), F1-Score, AUROC로 성능을 종합 평가한다.

요약 및 권장 사항

데이터 준비: 신경망 학습 전에 데이터를 [0, 1] 범위로 정규화하는 것이 일반적이다.

데이터 유형별 모델 선택: 표 형식(Tabular) → AE/VAE. 시계열(Time-Series) → LSTM/Transformer. 이미지 → Convolutional AE / GAN.

주의사항: 학습 데이터에 이상치가 섞여 들어가는 오염(Contamination)을 피해야 한다. 이상치까지 정상으로 학습하면 탐지 성능이 떨어진다.

5. 실습: 진동 데이터 스트리밍과 이상 탐지

구성

라즈베리파이(또는 M5Core 등)가 가속도·진동 데이터를 수집해 TCP로 스트리밍하고, 호스트 PC가 이를 받아 이상 탐지를 수행한다. 센서로는 MPU6050 같은 IMU(가속도계)를 사용해 X, Y, Z 축 가속도 값을 일정 주기(예: 20Hz)로 전송한다. 호스트는 수신한 패킷을 JSON으로 파싱한 뒤, 특징(ax, ay, az 또는 진동 크기)을 추출해 탐지기에 넣는다.

두 단계: 캘리브레이션 → 탐지

1단계(캘리브레이션): 센서를 정지 상태로 두고 일정 개수(예: 200~1000개)의 “정상” 샘플만 수집한다. 이 구간에서는 사용자가 진동을 주지 않는다. 수집이 끝나면 이 데이터만으로 모델을 학습(또는 통계 기준을 잡는다).

2단계(탐지): 학습이 끝나면 실시간으로 들어오는 샘플마다 이상 여부를 판단한다. 전통적 방법(Isolation Forest)이면 fit된 모델로 predict·decision_function을 쓰고, 통계적 방법(Z-Score)이면 최근 구간의 평균·표준편차를 기준으로 Z값을 계산해 임계값을 넘으면 이상으로 친다. 딥러닝 방법(Autoencoder)이면 정규화된 입력을 재구성한 뒤 MSE를 구하고, 학습 시 정해둔 임계값(예: 학습 재구성 오차의 평균+3×표준편차, 또는 최대×1.1)과 비교한다.

세 가지 탐지 방식

  • Z-Score 기반: 최근 N개 샘플의 진동 크기(또는 축별 값)에 대해 평균과 표준편차를 구하고, 현재 값의 Z-Score가 임계값(예: 3.5)을 넘으면 이상. 구현이 단순하고 별도 학습이 없지만, 구간 길이와 임계값 설정에 따라 민감도가 달라진다.
  • Isolation Forest: 수집한 정상 데이터로 Isolation Forest를 학습한다. 추론 시 1=정상, -1=이상으로 예측하고, decision_function 점수(음수일수록 이상에 가깝다)를 함께 쓸 수 있다. contamination 파라미터로 민감도를 조절한다.
  • Autoencoder: 입력 차원(예: 3)을 잠재 차원(예: 2)으로 압축했다가 다시 3으로 복원하는 AE를 정상 데이터로만 학습한다. Min-Max 정규화 후 MSE 손실로 학습하고, 학습 데이터의 재구성 오차 분포를 보고 임계값을 정한다(평균+3×표준편차 또는 최대 오차×여유 계수). 실시간으로 들어오는 샘플의 재구성 오차가 임계값을 넘으면 이상으로 판단한다.

테스트 방법

먼저 센서를 움직이지 않고 정상 데이터만 모아 캘리브레이션·학습을 끝낸다. 그다음 Z축 방향으로 살짝 두드리거나 흔들어 인위적인 진동(이상치)을 준다. 탐지기가 이를 이상으로 잡아내고, 콘솔에 “ANOMALY” 또는 유사 메시지가 뜨면 동작이 확인된다. 정상일 때는 “NORMAL” 등으로 표시되며, 재구성 오차나 점수 바가 임계값 아래로 유지되는지 보면 된다.

6. 정리

이번 수업에서는 이상 탐지의 정의(점·문맥·집단 이상), 전통적 방법인 Isolation Forest의 원리, 딥러닝 기반 재구성 접근(AE, VAE, LSTM-AE, GAN)과 평가 지표·임계값·데이터 유형별 모델 선택을 정리했다. 실습에서는 라즈베리파이(또는 센서 보드)에서 가속도 데이터를 스트리밍하고, 호스트 PC에서 정상만 수집한 뒤 Z-Score, Isolation Forest, Autoencoder 세 가지 방식으로 실시간 이상 탐지를 수행했다. 센서를 멈춘 상태에서 정상 기준을 학습하고, 이후 진동을 주어 이상을 유도해 탐지기가 반응하는지 확인하는 흐름으로 진행했다.