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 · Good | 90 이상 |
| B · Caution | 75 이상 |
| C · Warning | 60 이상 |
| D · Critical | 60 미만 |
감점식이라 「왜 이 점수인가」를 감점 내역으로 설명할 수 있습니다. 관측된 데이터가 모자라면
점수와 별개로 등급을 매기지 않고 Insufficient data 로 둡니다 — 데이터가 없는 것을 «건강함» 으로
읽지 않기 위해서입니다.
피처 스토어의 역할
매번 이상 탐지와 예측을 실시간으로 실행하면 시간이 걸립니다. 피처 스토어는 이 결과를 미리 계산하고 저장합니다.
┌─────────────────────────────────┐
│ 피처 스토어 스케줄러 │
│ │
│ 매시간: 설비별 건강점수 계산 │
│ 매일: 종합 분석 LLM 컨텍스트 │
│ 임베딩 벡터 생성 │
└──────────────┬──────────────────┘
│
▼
┌──────────────────────────────────┐
│ 사용자 질문: "이 설비 상태 어때?" │
│ │
│ → 사전 계산된 피처 즉시 반환 │
│ → 실시간 계산 대기 없음! │
│ → 응답 시간: 수백 ms │
└──────────────────────────────────┘