너무 많은 것을 기억하는 AI는 이상을 놓칠까? 시계열 이상 탐지 모델 KAN-AD를 도해로 쉽게 해설
요약
본 글은 시계열 데이터 이상 탐지 모델인 KAN-AD 논문을 해설합니다. 이 모델은 모든 미세한 흔들림을 기억하기보다, '평소 패턴'의 부드러운 파동만을 학습하여 예측 오차를 기반으로 이상 징후를 포착하는 것이 핵심입니다. 특히, 너무 세밀하게 학습하면 실제 이상 신호를 정상으로 간주할 수 있다는 문제점을 해결했습니다.
핵심 포인트
- KAN-AD는 '평소 패턴'의 부드러운 파동만 학습합니다.
- 이상 점수는 '실제 값과 예측 값의 차이 크기'로 판단됩니다.
- 너무 세밀한 예측은 오히려 이상 탐지에 방해가 될 수 있습니다.
서론
이 글에서는 시계열 데이터의 이상 탐지 모델인 'KAN-AD' 논문을 수식이나 전문 지식이 없어도 읽을 수 있도록 해설합니다.
먼저 결론을 한마디로 요약하면 다음과 같습니다.
KAN-AD는 데이터의 미세한 흔들림을 모두 기억하려 하지 않고, 소수의 부드러운 '파동'으로 '평소 패턴'만을 학습합니다. 그리고 예측이 크게 벗어났을 때 '이상'이라고 판단합니다.
비유하자면 다음과 같습니다.
노래의 '멜로디'만 기억하고 녹음된 기침 소리는 무시하는 것입니다. 나중에 멜로디에서 명확히 벗어난 소리가 들리면 경보를 울립니다.
여기서는 '서버 접속 수'라는 하나의 예시를 사용하여 논문 전체를 순차적으로 살펴보겠습니다.
1. 애초에 무엇을 하고 싶은가
어떤 서버의 접속 수를 1분 간격으로 기록한다고 가정해 봅시다. 평소에는 8분마다 같은 형태를 반복합니다.
- 0분: 10
- 1분: 12
- 2분: 15
- 3분: 12
- 4분: 10
- 5분: 8
- 6분: 5
- 7분: 8
그리고 다시 '10 → 12 → 15 → 12 → 10 → 8 → 5 → 8 → 10 …'와 같이 반복합니다.
모델의 임무는 직전 데이터를 보고 '다음 1분은 몇이 될지'를 예측하는 것입니다. 예를 들어 '10, 12, 15, 12, 10, 8, 5, 8'을 봤다면, 다음은 대략 10일 것이라고 예측합니다.
여기서 실제 값에 따라 판단이 달라집니다.
- 실제 값이 10.5라면, 오차는 0.5뿐입니다. 흔한 작은 흔들림이므로 '정상' -
실제 값이 25라면, 오차는 15입니다. 예측에서 크게 벗어났으므로 '이상'
이것이 '예측형 이상 탐지(predictive anomaly detection)'의 가장 기본적인 사고방식입니다.
이상 점수 = 실제 값과 예측 값의 차이 크기
차이가 작으면 정상, 크면 이상. 매우 간단합니다.

2. 예측이 '너무 잘' 되면 곤란한 이유
현실의 학습 데이터는 대부분 깨끗하지 않습니다. 예를 들어, 학습 데이터 안에 한 번만 작은 가시(스파이크)가 섞여 있었다고 가정해 봅시다.
- 평소 데이터: 10, 12,
15, 12, 10, 8, 5, 8 - 오염된 데이터: 10, 12,
22, 12, 10, 8, 5, 8
이 '22'의 정체는 측정 오류일 수도 있고, 순간적인 네트워크 불안정일 수도 있습니다. 누구도 알아차리지 못한 진짜 이상일 가능성도 있습니다.
표현력이 매우 높은 모델은 이렇게 생각합니다.
'학습 데이터에 22가 나왔으니, 이 가시도 기억해 두자.'
그러면 가시를 '흔한 일 = 정상'으로 기억해 버립니다. 나중에 진짜 가시가 나타났을 때도 예측의 오차가 작아져서 이상을 놓치게 됩니다.

이것이 이 논문의 가장 중요한 문제 의식입니다.
예측이 세밀하고 정확할수록, 이상 탐지에 적합한 것은 아니다.
이상 탐지에는 세부 사항을 모두 기억하는 것이 필요하지 않습니다. '평소 패턴은 대략 이런 형태이고, 이 정도 범위 안에 머문다'는 것을 아는 것입니다.
3. KAN이란 무엇이며, 원래 KAN의 약점
일반적인 신경망과의 차이점
일반적인 신경망(neural network)에서는 하나의 연결(edge)이 '하나의 숫자'를 가집니다. 예를 들어 '입력을 2배 한다'면, 학습하는 것은 '2'라는 숫자뿐입니다.
KAN (Kolmogorov-Arnold Network)에서는 하나의 연결이 '하나의 곡선(함수)'을 가집니다. '입력을 2배 한다'가 아니라, '입력을 이 곡선을 통과시켜 나온 값을 사용한다'는 이미지입니다.
즉,
- 일반적인 신경망: 숫자(가중치)를 학습
- KAN: 곡선의 형태를 학습
KAN은 '콜모고로프-아르노ルド의 표현 정리(Kolmogorov-Arnold Representation Theorem)'라는 수학 정리를 착안했습니다. 대략 말하자면, '입력이 많은 복잡한 관계도 입력이 하나뿐인 단순한 곡선을 여러 개 조합하면 나타낼 수 있다'는 정리입니다.
이것이 KAN의 기본 아이디어입니다.

복잡한 관계를 단순한 곡선의 조합으로 분해한다.
하지만 이 정리는 '그런 표현 방식이 존재한다'고 말할 뿐입니다. 학습하기 쉽거나, 이상 탐지에서 가장 성능이 잘 나오는 것까지는 보장하지 않습니다.
원래 KAN이 실패할 수 있는 이유
원래 KAN은 곡선을 'B 스플라인(B-spline)'이라는 부품으로 만듭니다. B 스플라인은 일부만 담당하는 짧은 부품의 집합입니다.
휘어지는 자를 상상해 보세요. 자의 곳곳에 작은 손잡이가 있어서, 하나의 손잡이를 움직이면 그 주변의 짧은 구간만 휘어집니다.
평소에는 이것이 장점입니다. 곡선의 형태를 세밀하게 조정할 수 있기 때문입니다. 하지만 이상 탐지에서는 이것이 단점이 됩니다.
학습 데이터에 뾰족한 부분이 하나 있다고 가정하면, 그 근처의 손잡이를 조금 움직이는 것만으로도 그 뾰족한 부분을 완벽하게 재현해 버릴 수 있습니다.
즉, 원래의 KAN 역시 학습 데이터의 국소적인 노이즈를 기억할 가능성이 있는 것입니다.
4. KAN-AD의 아이디어와 처리 흐름
자유로운 곡선이 아닌 '부드러운 파동'으로 그리기
KAN-AD는 모델에게 곡선을 자유롭게 그리도록 하는 것을 포기했습니다. 대신, 미리 부드러운 파동인 사인파(sine wave)나 코사인파(cosine wave)를 여러 종류 준비해 둡니다. 느린 파도, 그 두 배 속도의 파도...와 같은 방식입니다.
모델이 주로 학습하는 것은 '어떤 파도를 어느 정도의 강도로 섞을지'에 불과합니다.
사인파나 코사인파는 전체에 퍼지는 파동입니다. 일부만 바꿀 수는 없고, 어딘가를 바꾸면 파도 전체의 형태가 변합니다. 앞서 말한 '일부만 휘어지는 자'와 정반대의 성질입니다.

따라서 KAN-AD는 다음과 같은 것을 학습하는 데 능숙합니다.
- 전체적인 주기(반복 리듬)
- 부드러운 경향성
- 전체적인 형태
반면에, 툭 떨어져 있는 뾰족한 부분 하나를 정확하게 기억하는 것은 서툽니다. 그리고 이 '서투름'이야말로 이상 탐지에서는 장점이 됩니다. KAN-AD의 전제를 정리하면 다음과 같습니다.
정상적인 패턴은 부드럽다. 이상은 그 부드러운 형태에서 벗어난 국소적인 변화로 나타난다.
전체 흐름
KAN-AD의 처리는 크게 보면 '변환 → 집약 → 예측'의 3단계입니다. 세부적으로 나누면 다음 순서로 진행됩니다.

- 과거 데이터를 일정한 길이로 자르기(창, window)
- 인접한 값 간의 차이 계산(차분, difference)
- 3가지 종류의 특징 생성
- 작은 CNN으로 특징들을 혼합하여 '평소 패턴' 만들기
- 다음 한 점 예측하기
- 예측값과 실제값의 차이를 이상 점수(anomaly score)로 사용하기

1~3을 순서대로 살펴보겠습니다 (4는 이 기사의 하이라이트이므로, 다음 장에서 자세히 설명하겠습니다).
단계 1: 창으로 자르기
설명이 쉽도록 길이 8의 '창(window)'을 사용합니다.
- 입력: 10, 12, 15, 12, 10, 8, 5, 8
- 정답(다음 한 점): 10
이 창을 시간 방향으로 하나씩 이동시키면 학습용 문제를 많이 만들 수 있습니다. 참고로 논문의 실험에서 성적이 좋았던 창의 길이는 96입니다. 여기서의 8은 어디까지나 설명용입니다.
단계 2: 차분 계산하기
차분이란 '한 점 뒤의 값 − 한 점 앞의 값'을 나열한 것입니다.
- 원본 데이터: 10, 12, 15, 12, 10, 8, 5, 8
- 차분: +2, +3, −3, −2, −2, −3, +3
왜 이런 작업을 할까요? 다른 서버의 데이터가 '110, 112, 115, 112, 110, 108, 105, 108'이었다고 가정해 봅시다. 전체가 100만큼 높기만 하고 변화의 형태는 완전히 같습니다. 차분을 취하면 이 데이터도 ' +2, +3, −3, −2, −2, −3, +3'이 됩니다.

즉, 차분을 취하면 전체적인 높이나 느린 경향성의 영향이 약해지고, 모델은 '값이 어떻게 변화하고 있는지'에 집중할 수 있습니다. 논문에서는 이 처리를 '상수항 제거 모듈(CTE, Constant Term Elimination)'이라고 부릅니다.
단계 3: 3가지 종류의 특징 만들기
KAN-AD는 각 시점에 대해 3가지 종류의 '특징(모델에 전달하는 단서)'을 만듭니다.
① 원본 값 (X)
값 그 자체입니다 (정규화된 값). 가장 순수한 정보입니다.
② 값을 파동에 통과시킨 특징 (S)
같은 값을 여러 속도의 사인파/코사인파에 통과시킨 결과입니다. 예를 들어 값이 0.5라면, 0.5라는 하나의 숫자가 '0.5, 0.479, 0.878, 0.841, 0.540' 같은 5개의 숫자로 바뀝니다.
같은 것을 여러 각도에서 다시 그려내는 이미지입니다.
③ 시간 위치의 특징 (P)
모델은 '지금 주기의 어느 지점에 있는지'도 알아야 합니다. 그래서 시각을 시계 바늘의 위치와 같은 형태로 표현합니다.
시계 바늘은 12시, 3시, 6시, 9시를 돌면서 제자리로 돌아오죠. 바늘 끝의 '가로 위치'와 '세로 위치' 두 개의 숫자가 있으면 지금이 몇 시 무렵인지 알 수 있습니다. KAN-AD는 이와 같은 방법으로 창 안의 시각을 표현합니다. 예를 들어 길이 8인 창의 '2분째'는 정확히 바늘이 '3시'를 가리키는 위치, 즉 주기의 4분의 1에 해당합니다.

S와 P의 차이점
만약 2분째와 7분째 값이 우연히 같은 0.5였다고 가정해 봅시다.
- 값이 같기 때문에 S는 같습니다 (어떤 값인가를 나타냄)
- 시간이 다르기 때문에 P는 다릅니다 (언제 나타났는가를 나타냄)
- X는 원래 크기의 정보를 그대로 유지합니다
파동의 종류를 2쌍 사용하도록 설정하면, 한 시점당 대략 'X: 1개 + S: 4개 + P: 4개 = 9개'의 특징이 생성됩니다.
이는 FFT와 다릅니다
'사인파・코사인파'를 들으면 신호 처리의 FFT(고속 푸리에 변환)가 떠오르는 사람도 있을 수 있습니다. FFT는 전체 창을 주파수별로 분해하고, 각 주파수의 세기를 수학적으로 직접 계산합니다.
KAN-AD는 파동을 사용한 특징을 준비하는 단계까지 수행하며, 이 조합 방식은 신경망에 학습시킵니다. 정확히 말하면, '푸리에 스타일의 특징을 사용하지만, 단순히 FFT를 적용하는 것은 아닙니다.'
5. CNN의 역할 (이 글의 핵심)
우선, CNN의 위치를 한마디로 설명하자면 이렇습니다.
사인파・코사인파는 '다양한 해석 후보'를 내보내는 역할을 하고, CNN은 인접한 시점을 보면서 '그 후보들을 어떻게 조합해야 평소 패턴이 될지'를 학습하는 역할을 합니다.
CNN은 마지막에 '이상입니다'라고 판정하는 부분이 아닙니다. FFT도 아닙니다. 모델 내부에서 특징의 조합 방식을 실제로 학습하고 있는 중심 부분입니다.
CNN이 받는 입력값
지난 장에서 한 시점당 약 9개의 특징을 만들었습니다. 창의 길이가 8이라면, 8개 시점 각각에 9개의 특징이 있습니다.
즉, CNN이 받는 것은 하나의 데이터가 아니라 '특징표'입니다. 세로로 9종류의 특징(원래 값, 파동으로 변환된 값, 시간 위치 등)이 나열되고, 가로로 시간이 배열된 표를 상상해 보세요. CNN은 이 표 위에서 작동합니다.
왜 '1차원' CNN인가?
이미지를 다루는 CNN은 상하좌우의 2방향으로 움직입니다. 시계열 데이터의 주된 방향은 '과거 → 현재 → 미래'라는 단 하나의 방향뿐입니다. 따라서 KAN-AD에서는 시간 방향으로만 슬라이드하는 1차원 CNN을 사용합니다.
CNN이 한 번에 보는 폭(커널 크기)은 3입니다. 어떤 시점을 계산할 때, '바로 전 시점・현재・바로 다음 시점'의 3점을 모아서 봅니다.
가장 간단한 예시
세 점이 '12, 22, 12'로 배열되어 있다고 가정해 봅시다. 가운데 22가 봉우리입니다.
여기서 '양 옆을 1/4씩, 가운데를 1/2 비율'로 섞는 필터를 사용해 보겠습니다.
- 12 × 1/4 = 3
- 22 × 1/2 = 11
- 12 × 1/4 = 3
- 합계: 17
22였던 봉우리가 17까지 약해졌습니다.

이것은 '평탄화' 작업과 유사합니다. 다만 실제 CNN은 이 비율을 사람이 정하는 것이 아니라, 데이터로부터 학습한다는 점입니다.
CNN은 단순한 이동 평균이 아니다
이동 평균은 '3점을 더해서 3으로 나누는' 단 하나의 계산만 수행할 수 있습니다. 하지만 CNN은 다양한 종류의 필터를 동시에 학습할 수 있습니다. 예를 들면 다음과 같은 필터가 있습니다.
- 평탄화 필터 (1/4, 1/2, 1/4): 주변의 평균적인 높이를 포착합니다.
- 기울기 필터 (−1, 0, +1): '다음 값 − 이전 값'을 계산합니다. '5, 7, 10'이라면 답은 5이고, 상승세임을 알 수 있습니다.
- 봉우리 탐지 필터 (−1, +2, −1): 가운데가 양 옆보다 튀어나와 있는지 확인합니다. '12, 22, 12'라면 답이 20으로 크게 나와 봉우리 같다고 판단할 수 있습니다.

이처럼 CNN은 국소적인 높이, 상승세, 하강세, 산의 형태, 계곡의 형태, 주기적 위치가 적절한지를 동시에 포착할 수 있습니다. 다만 여기에 언급된 필터는 이해를 위한 예시일 뿐이며, 논문의 모델이 실제로 학습한 값은 아닙니다.
여러 특징을 종합적으로 섞기
이것이 KAN-AD에서 CNN의 가장 중요한 역할입니다. 단순히 평탄화만 한다면 원래 값(X)만 보면 충분합니다. 하지만 KAN-AD의 CNN은 X, S, P 세 종류를 동시에 봅니다.
구체적인 예로 생각해 봅시다. 어떤 시점 전후로 특징이 다음과 같았다고 가정해 보겠습니다.
- 원래 값 (X): 0.2 → 2.0 → 0.3 -
- 파동으로 변환된 값 (S): 0.20 → 0.91 → 0.30
- 시간 위치 (P): 0.71 → 1.00 → 0.71
원래 값만 보면, 가운데의 2.0은 명백한 봉우리입니다. 하지만,
- 파에 통과한 값은, 파의 성질상 아무리 커지지는 않습니다.
- 시간적 위치에서는, 주기적으로 이쯤에서 원래 어떻게 되어야 하는지가 알 수 있습니다.
- 양옆의 값들은 커지지 않았습니다.
먼저, 각각의 특징을 '정렬 필터(ならすフィルタ)'로 처리하면, X는 1.125, S는 0.58, P는 0.855가 됩니다.
다음으로, CNN이 'S와 P 쪽을 신뢰하도록' 학습했다고 가정하고, X를 0.1, S를 0.5, P를 0.4의 비율로 섞어보면 다음과 같습니다.
0.1 × 1.125 + 0.5 × 0.58 + 0.4 × 0.855 ≒ 0.74
원래의 첨두(トゲ)는 2.0이었지만, 새로운 표현에서는 약 0.74에 머물렀습니다.
이 숫자 역시 논문의 실제 가중치(重み)는 아닙니다. 전달하고 싶은 것은, CNN이 다음과 같은 판단을 학습할 수 있다는 것입니다.
원래 값이 갑자기 커지더라도, 양옆이나 주기적인 정보가 그것을 지지하지 않는다면, 그 첨두에 '평소의 패턴'을 적용하지 않도록 합니다.
CNN은 '파의 계수'를 어떻게 배울까
논문에서는 CNN이 '파의 특징 계수를 학습한다'고 설명합니다. 준비된 '느린 파(ゆっくりの波)', '2배속의 파' 등에 대해, '이 파는 0.3의 강도, 저 파는 -0.1의 강도'와 같이 조합을 결정하는 것이 CNN의 역할입니다.
전통적인 푸리에 해석(Fourier analysis)에서는 이 계수를 수식으로 직접 계산합니다. KAN-AD는 학습 데이터와 오차 역전파법(誤差逆伝播法, backpropagation)을 사용하여 CNN의 가중치로 배웁니다. 가중치는 학습 시점에 한 번 결정되며, 그 후에는 모든 창(窓, window)에서 공통으로 사용됩니다. 창이 올 때마다 다시 계산하는 것이 아닙니다.
CNN은 어떻게 학습할까
학습 과정은 간단합니다.
- 과거의 창을 입력하여 다음 1점을 예측한다.
- 실제 다음 값과 비교하여 오차(ズレ)를 계산한다.
- 오차가 작아지도록, CNN의 필터, 특징 조합 방식, 마지막 예측 부분을 조금씩 조정한다.
이 과정을 대량의 창으로 반복하면서, CNN은 '자주 반복되는 정상적인 패턴은 무엇인지', '다음 1점을 맞추는 데 도움이 되는 특징은 무엇인지'를 찾아냅니다.
여기서 중요한 것은, 이상(異常)에 대한 레이블(정답 표시)이 필요하지 않다는 것입니다. 필요한 것은 과거의 창과 실제 다음 값뿐입니다.
층을 쌓으면 보이는 범위가 넓어진다
폭 3의 CNN이 한 층만 있다면, 직접 볼 수 있는 것은 단지 3개의 점뿐입니다. 층을 쌓으면 보이는 범위가 조금씩 넓어집니다.
- 1층: 3점
- 2층: 5점
- 3층: 7점
- 4층: 9점

짧은 3점의 변화를 조합하여, 더 긴 패턴을 만들 수 있게 되는 것입니다. 논문의 CNN 블록에서는 컨볼루션(畳み込み)을 두 번 연속으로 수행하고 있습니다.
기타 구성 요소 (간략히)
CNN 주변에는 학습을 돕는 몇 가지 부품이 붙어 있습니다.
- BN (배치 정규화, Batch Normalization): 중간 수치의 크기를 맞추어 학습을 안정화합니다. 특정 특징만 극단적으로 크고 다른 특징은 극단적으로 작다는 상태를 방지합니다.
- GELU (활성화 함수): '굴곡'을 추가하는 부품입니다. 이것이 없으면, 몇 층을 쌓아도 실질적으로 한 번의 단순 계산과 다르지 않습니다. '주기의 이 위치의 봉우리는 정상, 다른 위치의 같은 봉우리는 이상'과 같은 복잡한 판단이 가능해집니다.
- 잔차 연결 (Residual connection): CNN이 만든 새로운 특징에 원래의 특징을 더하여 되돌립니다. CNN은 처음부터 다시 만들 필요 없이, 원래 표현에 '필요한 수정'만 가하면 됩니다. 정보가 손실되기 어렵고, 학습도 안정됩니다.
- 폭 1의 컨볼루션 (DownConv): 많은 특징들을 같은 시점 내에서 1개로 통합합니다. 옆을 보지 않고, '국소적인 평균', '상승 곡선', '첨두', '주기적 위치' 등의 정보를 합성하여 하나의 '평소 패턴'으로 만듭니다.
폭 3의 컨볼루션은 '인접한 시점을 보고 국소적인 규칙을 포착하는' 역할을, 폭 1의 컨볼루션은 '여러 특징들을 하나로 통합하는' 역할을 담당합니다.
왜 파라미터가 이렇게 적은가
CNN 필터는 모든 시점에서 재사용됩니다. 같은 필터가 '02분', '13분', '2~4분'...과 순서대로 처리해 나갑니다. 시점마다 별개의 파라미터를 학습하는 것이 아닙니다.
따라서, 창의 길이를 16에서 96으로 늘려도, 파라미터 수는 거의 증가하지 않습니다. 이것이 KAN-AD의 파라미터가 단 274개로 끝나는 이유 중 하나입니다.
CNN은 과적합(過学習)하지 않을까?
솔직히 말해, CNN도 과적합할 수 있습니다. '절대 그렇지 않다'는 수학적인 보장은 없습니다.
KAN-AD가 국소적인 노이즈를 학습하기 어려운 것은, 다음과 같은 제한들이 겹치기 때문입니다.
- 입력값이 먼저 소수의 부드러운 파형으로 변환됩니다.
- 파형의 종류가 적습니다 (실험에서는 2세트만).
- CNN 자체가 작습니다.
- 필터가 모든 시점에서 공유됩니다.
- 파라미터가 수백 개밖에 없습니다.
- 차분(差分)을 통해 경향이나 창(window) 평균의 변화가 약해집니다.
- 최종적인 목적은 예측에 도움이 되는 '평소 패턴'을 만드는 것뿐입니다.
즉, 'CNN이 본래 이상에 강하다'는 것이 아닙니다. 부드러운 특징, 작은 공유 CNN, 적은 파형 종류 이 세 가지가 결합하여 노이즈를 기억하는 힘을 억제하고 있는 것입니다.
이상이 왔을 때, CNN은 무엇을 하는가
어떤 시점의 값을 예측할 때, 모델이 사용하는 것은 그 직전까지의 창(window)입니다.
직전 창이 정상이라면, CNN은 '평소 패턴'을 만들고, 예를 들어 '다음은 10 정도일 것이다'라고 예측합니다. 이때 실제 값이 갑자기 25가 되었다고 가정해 봅시다. CNN은 이 25를 보고 나서 예측한 것이 아닙니다. 25는 예측이 끝난 후에 관측되는 값이기 때문입니다. 그래서 차이가 15로 커지고, 이상으로 감지됩니다.
다음 시점부터는 이 25가 과거의 창에 포함됩니다. 이때, 부드러운 특징과 옆을 보는 구조 덕분에, 25가 그 이후의 예측을 크게 흐트러뜨리는 것을 막아줍니다.
즉 CNN에는 두 가지 역할이 있습니다.
- 첫 번째 이상 지점에 대해서: 정상적인 과거로부터, 정상적인 예측을 만듭니다.
- 이상이 과거 창에 들어온 후: 국소적인 이상이 그 이후의 '평소 패턴'을 오염시키는 것을 억제합니다.
6. 예측과 이상 점수(Anomaly Score)
CNN이 '평소 패턴'을 만들었다면, 마지막에는 단 한 개의 레이어만 가진 간단한 선형 모델로 다음 한 점을 예측합니다.
예를 들어 모델의 예측이 10.3이었다고 가정해 봅시다.
- 실제 값이 10.7이라면, 차이(이상 점수)는 0.4입니다.
- 실제 값이 25라면, 차이(이상 점수)는 14.7입니다.
경보를 울릴 기준(임계값, threshold)을 3으로 정해두면, 0.4는 정상, 14.7은 이상으로 판정됩니다.
여기까지의 흐름을 정리하면 다음과 같습니다.
- 과거 창(window)
- 차분(差分)을 취함
- X・S・P 세 종류의 특징 생성
- 작은 CNN으로 혼합
- '평소 패턴'이 만들어짐
- 다음 한 점을 예측함
- 예측과 실제 값의 차이를 계산함
- 차이의 크기가 이상 점수가 됨
모델이 실제로 학습하는 것
모델은 '1분目は 12, 2分目は 15, 3分目は 12'와 같이 통째로 암기하고 있는 것이 아닙니다. 오히려 다음과 같은 것을 학습합니다.
- 현재 주기의 어느 지점에 있는지
- 현재 값이 어떤 부드러운 형태에 속하는지
- 어떤 파형의 특징이 중요한지
- 인접한 시점을 어떻게 조합해야 하는지
- 평소라면 다음 한 점은 대략 얼마일지
한마디로, 인간이 준비한 부드러운 파형으로 모델의 자유도를 의도적으로 제한하여, 학습 데이터의 노이즈를 너무 많이 기억하지 않도록 하고 있는 것입니다.
두 가지 중요한 설정: 창 길이와 파형 종류
**창 길이(Window Length)**는 모델이 한 번에 얼마나 많은 과거를 볼지 결정합니다. 평소 주기가 24라고 할 때,
- 길이 8: 주기 일부만 보입니다.
- 길이 48: 주기가 두 번 분량으로 보입니다.
- 길이 96: 주기가 네 번 분량으로 보입니다.
창이 너무 짧으면 전체적인 규칙을 볼 수 없습니다. 긴 창이라면, 주기와 우연한 변동을 구별하기 쉽습니다. 논문의 실험에서 가장 좋았던 것은 96이었습니다.
**파형 종류의 수(Number of Wave Types)**는 몇 세트의 사인파/코사인파를 사용할지 결정합니다.
- 너무 적으면: 표현력이 부족하여 패턴을 잘 그릴 수 없습니다.
- 너무 많으면: 미세한 변화까지 그려버려, 또다시 노이즈를 기억하기 시작합니다.
논문의 실험에서 가장 좋았던 것은 단 2세트였습니다. 이는 논문의 핵심적인 생각과 잘 맞습니다. 이상 감지에는 세밀한 고주파 정보는 그다지 필요하지 않고, 적은 수의 부드러운 파형이 더 적합할 가능성이 있다는 것입니다.
7. 실험 결과
결과를 보기 전에, 평가의 자(物差し)를 하나 소개합니다. Event F1은 이상 '사건(event)'을 얼마나 정확하게 찾아냈는지를 나타내는 점수로, 0부터 1까지의 값을 가지며 1에 가까울수록 우수합니다.
세 종류의 특징은 각각 도움이 되고 있는가
UCR이라는 데이터셋에서, 특징 조합을 바꿔 비교한 결과(Event F1)입니다.
- X+S+P (전부 사용):
0.5335 - S+P: 0.5153 - X+S: 0.5081
- X+P: 0.5056
- S만: 0.4737
- P만: 0.4698
- X만: 0.4561

여기서 알 수 있는 것은 세 가지입니다. 세 종류 모두를 사용하는 것이 가장 좋다는 것. 한 종류만 사용한다면 S(파에 통과한 값)가 가장 효과적이라는 것. 그리고 P(시간 위치)나 원래 값 X도 각각 보완하는 역할을 한다는 것입니다.
또한, 차분(CTE)은 TODS・KPI・UCR에서는 효과가 있었지만, 애초에 안정적인 WSD에서는 그다지 효과가 없었습니다.
전체 성능
4가지의 1변수 데이터셋(KPI, TODS, WSD, UCR)으로 시도한 평균 Event F1은 다음과 같습니다.
- KAN-AD: 0.7798
- 원래 KAN: 0.6835
차이는 9.63 포인트이며, 비율로 따지면 약 14.1%의 개선입니다 (논문에서는 '약 15%'로 요약하고 있습니다).
학습 데이터에 이상이 많이 포함된 TODS의 경우, KAN-AD가 0.8940, 강력한 비교 기법이 약 0.6995로, 약 27.8%의 개선을 보였습니다. 이 결과는 '학습 데이터가 오염되어 있어도 강하다'는 저자의 주장을 가장 강력하게 뒷받침합니다.
정말 가벼한가
UCR에서의 비교입니다.
- 원래 KAN: 파라미터 1,360개, GPU 시간 66초, Event F1 0.4120
- KAN-AD: 파라미터 274개, GPU 시간 42초, Event F1 0.5335

파라미터는 약 80% 감소했고, GPU에서의 속도는 약 1.57배가 되었습니다. 논문에서 '파라미터 약 80% 감소, 추론 속도 약 50% 향상'이라고 말하는 것이 이 때문입니다.
다만, CPU에서는 원래 KAN이 34초, KAN-AD가 36초로, KAN-AD 쪽이 약간 느립니다. 어떤 환경에서도 빠르다고 할 수는 없습니다. KAN-AD의 가장 큰 강점은 '파라미터가 매우 적으면서도 Event F1이 높다'는 것입니다.
오염된 학습 데이터에도 정말 강한가
저자는 학습 데이터에 일부러 '국소적인 산(local peak)'과 '국소적인 골(local trough)'을 섞고, 그 비율을 10%부터 40%까지 늘려갔습니다.
KAN-AD의 Event F1은 대략 0.77~0.81 사이에서 안정적이었습니다. 반면, LSTM-AD나 FCVAE 같은 기법들은 오염이 증가함에 따라 눈에 띄게 성능이 떨어졌습니다.
즉, KAN-AD는 이 논문에서 조사한 두 가지 종류의 오염(국소적인 산과 골)에 대해서는 확실히 강건하다고 말할 수 있습니다. 하지만 모든 이상에 강하다라고까지는 말할 수 없습니다. 예를 들어 다음과 같은 케이스는 논문에서 충분히 검증되지 않았습니다.
- 정상 패턴 자체가 영구적으로 변하는 경우
- 주기가 갑자기 바뀌는 경우
- 장기적인 추세가 바뀌는 경우
- 여러 변수 간의 관계가 이상해지는 경우
변수가 여러 개인 경우
CPU 사용률, 메모리, 네트워크 통신량처럼 여러 값을 동시에 기록하는 경우도 있습니다. KAN-AD는 이를 하나씩 개별적으로 처리합니다(채널 독립). CPU 데이터, 메모리 데이터, 통신량 데이터를 각각 따로 KAN-AD에 통과시키는 이미지를 상상하시면 됩니다.

단순하고 가볍다는 것이 장점이지만, 'CPU와 메모리의 관계'를 직접 학습할 수는 없습니다.
다변수 실험에서는 KAN-AD의 평균 Best F1은 0.9076, 파라미터는 4,491개였습니다. 평균 성능은 좋고, 파라미터도 다른 모델보다 훨씬 적습니다. 다만, 여기서 사용된 지표는 앞서 언급한 Event F1이 아니라 Best F1입니다. Best F1은 테스트 데이터의 정답을 보면서 최적의 임계값을 선택하기 때문에 결과가 낙관적으로 되기 쉬우니 주의해야 합니다.
8. 주의 깊게 읽어야 할 포인트
좋은 논문이지만, 그대로 맹신하지 않는 것이 좋은 점도 있습니다.
① 'KAN'과의 연결고리는 이름만큼 강하지 않다
최종적인 KAN-AD는 '고정된 사인/코사인 특징 + 작은 1차원 CNN + 선형 예측기'에 가까운 구성입니다. '단순한 곡선을 조합한다'는 KAN의 아이디어는 남아있지만, B 스플라인을 사용하는 전형적인 KAN과는 이미 다른 영역이라고 할 수 있습니다.
② '정상은 매끄럽다'라는 전제가 항상 성립하는 것은 아니다
업무에 따라서는 정상적인 움직임이라도 갑자기 점프할 때가 있습니다.
- 매일 0시에 배치 처리가 시작되는 경우
- 세일이 시작되는 경우
- 오토 스케일로 서버가 늘어나는 경우
- 예정대로의 서버 재시작
이러한 '정상적인 급변'을 KAN-AD는 이상으로 오보할 수 있습니다.
③ 차분은 노이즈를 증폭시킬 때가 있다
AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn ML의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기