본문으로 건너뛰기

AI 모델 알고리즘 이해하기

이상 탐지 — IBM Granite TSPulse​

TSPulse란?​

TSPulse(Time-Series Pulse)는 IBM이 개발한 시계열 이상 탐지 파운데이션 모델입니다. 센서 데이터처럼 시간 순서로 들어오는 데이터에서 정상 패턴을 학습하고, 패턴에서 벗어나는 구간을 이상으로 탐지합니다.

동작 원리: 재구성 오류 기반​

TSPulse는 **"정상 데이터를 잘 복원할 수 있다면, 복원이 안 되는 구간은 이상이다"**라는 원리로 동작합니다.

① 학습 (정상 패턴 학습)

입력 시계열: [23.1, 23.2, 23.0, 23.3, 23.1, ...] ← 정상 온도 패턴
│
▼
┌──────────────┐
│ 인코더 │ 데이터를 압축된 표현으로 변환
│ (Encoder) │
└──────┬───────┘
│
┌──────┴───────┐
│ 잠재 공간 │ 핵심 패턴만 남긴 압축 표현
│ (Latent) │
└──────┬───────┘
│
┌──────┴───────┐
│ 디코더 │ 압축 표현에서 원래 데이터 복원
│ (Decoder) │
└──────┬───────┘
│
▼
재구성 출력: [23.0, 23.2, 23.1, 23.2, 23.1, ...] ← 거의 같음!

재구성 오류 = |원본 - 재구성| = [0.1, 0.0, 0.1, 0.1, 0.0] ← 매우 작음 → 정상
② 이상 탐지

입력 시계열: [23.1, 23.2, 87.5, 23.3, 23.1, ...] ← 갑자기 87.5도!
│
▼
[인코더 → 잠재 공간 → 디코더]
│
▼
재구성 출력: [23.0, 23.2, 23.4, 23.2, 23.1, ...] ← 87.5를 복원 못함

재구성 오류 = [0.1, 0.0, 64.1, 0.1, 0.0]
↑
이상 점수 높음! → 이상 탐지됨

핵심 개념​

개념설명비유
재구성 오류원본과 복원된 데이터의 차이복사기가 원본을 잘 복사하는데, 이상한 부분은 복사를 못 함
보정 점수재구성 오류가 평소(기준 구간)의 흔들림 몇 배만큼 벗어났나 — 로버스트 z"평소보다 5배 더 흔들린다"
임계값 (threshold)이상으로 판정하는 보정 점수 기준값 — 설비 센서 기본 5.0"여기까지는 정상, 이 이상은 비정상" 기준선
threshold=0 은 «자동» 이 아닙니다

예전 문서는 0 을 주면 임계가 자동으로 정해진다고 안내했습니다. 지금 설비 센서 점수는 기준 중앙값이 0 인 척도라, 0 을 주면 평소보다 조금만 높아도 전부 이상으로 셉니다. 특별한 이유가 없으면 threshold 를 생략해 기본값(5.0)을 쓰십시오.

기준은 «분석 창 바로 앞» 입니다​

같은 호출 안에서 분석 창 바로 앞 구간의 재구성 오류로 중앙값과 MAD 를 잽니다. 그래서 설비마다, 태그마다 「평소」가 따로 잡힙니다. 기준 구간이 너무 짧은 태그는 점수를 내지 않고 이유와 함께 비워 둡니다 — 0 으로 채우지 않습니다.

  • 상태 태그(운전/정지 등)는 대상에서 뺍니다.
  • 카운터 태그는 누적값 대신 5간격 증분의 평균으로 봅니다 — 생산 정지가 증분 0 으로 드러납니다.
  • 집계·평활 창은 설비 센서 기준 8 / 4 입니다.

PlantPulse에서의 활용​

센서 데이터 (최근 N분)
│
▼
TSPulse 모델에 입력
│
▼
각 시점별 재구성 오류 계산
│
▼
임계값 초과 구간 = 이상 구간
│
├──▶ 이상 메트릭 상위 K개 추출 (top_k)
├──▶ 이상 점수 및 시간 정보 반환
└──▶ 최근 N초 이내 이상 여부 판정 (recent_seconds)

시계열 예측 — TinyTimeMixer (TTM)​

TTM이란?​

TinyTimeMixer는 IBM이 개발한 경량 시계열 예측 모델입니다. 과거 데이터 패턴을 학습하여 미래 값을 예측합니다. "Tiny"라는 이름답게 적은 리소스로도 높은 성능을 발휘합니다.

PlantPulse 에 실려 나가는 것은 Granite-TTM R3(512-96-dec-512-r3)입니다 — 추세와 나머지를 갈라 예측하는 분해 예측(TinyTimeMixerForDecomposedPrediction) 세대입니다. 이전 세대 R2 도 이미지에 같이 실려 있어 설정 한 줄로 되돌릴 수 있습니다 → 시계열 인사이트

동작 원리: Mixer 아키텍처​

TTM은 MLP-Mixer 구조를 시계열에 적용한 모델입니다.

과거 데이터 (Context Window) 예측 (Prediction Window)
┌──────────────────────────┐ ┌──────────────────┐
│ t-512 t-511 ... t-1 t │ → │ t+1 t+2 ... t+96 │
└──────────────────────────┘ └──────────────────┘
입력 (512 스텝) 출력 (96 스텝)

예측 과정​

① 시간축 믹싱 (Time Mixing)
"과거 패턴에서 시간적 관계를 파악"

- 새벽에는 온도가 낮고, 낮에는 높다 (일주기)
- 월요일에 가동률이 높다 (주주기)
- 점점 온도가 올라가는 추세 (트렌드)

② 채널 믹싱 (Channel Mixing)
"여러 센서 간의 관계를 파악"

- 전력 소비가 올라가면 → 온도도 올라간다
- 진동이 커지면 → 알람 빈도도 높아진다

③ 예측 생성
시간 패턴 + 센서 관계를 종합하여 미래 값 예측
신뢰구간(상한/하한)도 함께 제공

핵심 개념​

개념설명비유
컨텍스트 길이예측에 사용하는 과거 데이터 양과거 며칠치를 보고 내일 날씨를 예측
예측 길이미래 몇 스텝을 예측할지앞으로 며칠치 날씨를 예측
신뢰구간예측값의 상한/하한 범위"내일 기온은 20~25도 사이일 것"
다변량여러 센서를 동시에 고려온도+압력+진동을 함께 보고 예측

예측 결과 예시​

시간 │ 실제값 │ 예측값 │ 하한 │ 상한
─────────┼────────┼────────┼───────┼───────
14:00 │ 23.1 │ - │ - │ - ← 과거 (실제 데이터)
14:10 │ 23.3 │ - │ - │ -
14:20 │ 23.2 │ - │ - │ -
─────────┼────────┼────────┼───────┼───────
14:30 │ ? │ 23.4 │ 22.8 │ 24.0 ← 미래 (예측)
14:40 │ ? │ 23.5 │ 22.6 │ 24.4
14:50 │ ? │ 23.7 │ 22.5 │ 24.9

이상 탐지 + 예측 연계 활용​

PlantPulse AI에서는 이상 탐지와 예측을 연계하여 더 강력한 인사이트를 제공합니다.

현재 상태 파악 (TSPulse 이상 탐지)
│
│ "현재 온도 센서에서 이상 패턴 감지됨"
│
▼
미래 추세 예측 (TTM 예측)
│
│ "앞으로 6시간 내 임계값 초과 예상"
│
▼
종합 판단
│
│ "현재 이상 + 악화 추세 → 즉시 점검 권고"
│
▼
관련 문서 검색 (RAG)
│
│ "해당 설비 정비 매뉴얼 3장 참조"
│
▼
종합 리포트 생성 (AURA LLM)

활용 시나리오별 모델 조합​

시나리오TSPulse (이상 탐지)TTM (예측)판단
정상 운전이상 없음정상 범위 유지정상 — 모니터링 지속
초기 이상이상 감지정상 범위주의 — 추이 관찰 필요
악화 추세이상 감지임계값 초과 예상경고 — 즉시 점검 권고
급격한 이상높은 이상 점수급격한 악화긴급 — 즉시 조치 필요

설비 건강 점수 (Health Score)​

100점에서 감점하는 방식으로 0~100점 건강 점수를 냅니다. 예측(TTM)은 들어가지 않습니다 — 지금까지 일어난 것만 셉니다.

건강 점수 = 100 − 이상 감점 − 알람 감점 − 비가동 감점 (0~100 로 자름)

이상 감점 최대 40 센서·OEE·RAM·EMS·알람의 이상 비율을 가중평균
알람 감점 최대 30 + 10 최근 24시간 알람(우선순위 가중) + 아직 안 풀린 알람
비가동 감점 최대 20 가동 정보가 있을 때만
등급점수
A · Good90 이상
B · Caution75 이상
C · Warning60 이상
D · Critical60 미만

감점식이라 「왜 이 점수인가」를 감점 내역으로 설명할 수 있습니다. 관측된 데이터가 모자라면 점수와 별개로 등급을 매기지 않고 Insufficient data 로 둡니다 — 데이터가 없는 것을 «건강함» 으로 읽지 않기 위해서입니다.


피처 스토어의 역할​

매번 이상 탐지와 예측을 실시간으로 실행하면 시간이 걸립니다. 피처 스토어는 이 결과를 미리 계산하고 저장합니다.

┌─────────────────────────────────┐
│ 피처 스토어 스케줄러 │
│ │
│ 매시간: 설비별 건강점수 계산 │
│ 매일: 종합 분석 LLM 컨텍스트 │
│ 임베딩 벡터 생성 │
└──────────────┬──────────────────┘
│
▼
┌──────────────────────────────────┐
│ 사용자 질문: "이 설비 상태 어때?" │
│ │
│ → 사전 계산된 피처 즉시 반환 │
│ → 실시간 계산 대기 없음! │
│ → 응답 시간: 수백 ms │
└──────────────────────────────────┘