[ASD] Mixup + StatEx + FeatEx SSL를 이용하여 분할 (260901)

WonTerry·2026년 9월 1일

Deep Learning

목록 보기
32/41

"정상 데이터를 분할한다"는 표현은 데이터셋을 물리적으로 쪼갠다는 의미가 아니라, "정상 데이터의 구성 요소(신호, 통계량, 특징)를 분해한 뒤, 이를 다른 정상 데이터와 교차 결합하여 '가짜 이상치(Pseudo-Anomalies)'를 생성한다"는 의미입니다.


1. 왜 이런 짓(?)을 하는가? (핵심 목적)

이상 소음 탐지(ASD)의 고질적인 문제는 "학습할 때 이상 소음 데이터가 없다"는 것입니다. 모델에게 "이게 이상 소음이야"라고 알려줄 예시가 없으니, 모델은 단순히 "정상 소리는 이래"라고만 배웁니다.

하지만 연구자들은 생각했습니다. "정상 데이터(A)와 정상 데이터(B)를 교묘하게 섞어서, 기존에는 존재하지 않던 '가짜 이상 소리(Pseudo-Anomaly)'를 만들어내면 어떨까? 그럼 모델이 이걸 맞히려고 더 열심히 공부하겠지?"

이것이 바로 자기지도학습(SSL)을 이용한 가상 데이터 생성 전략입니다.


2. 세 가지 SSL 기법의 상세 메커니즘

① Mixup (신호의 혼합: "색깔 섞기")

  • 방법: 두 개의 정상 샘플 x1x_1x2x_2를 일정한 비율(λ\lambda)로 섞습니다.
  • 수식: xnew=λx1+(1λ)x2x_{new} = \lambda x_1 + (1-\lambda)x_2
  • 비유: 파란색 물감(x1x_1)과 노란색 물감(x2x_2)을 섞어서 초록색(xnewx_{new})을 만드는 것과 같습니다.
  • 효과: 두 소리의 중간 지점에 있는 소리를 만들어, 데이터 사이의 연속성을 학습하게 합니다.

# x1과 x2를 비율 l과 (1-l)로 선형 결합
X = X1 * l + X2 * (1 - l)
y = y1 * l_y + y2 * (1 - l_y)

② StatEx (통계량 교환: "질감 바꾸기")

  • 방법: 한 샘플의 구조(파형의 모양)는 유지하되, 통계적 특성(평균과 표준편차)만 다른 샘플의 것을 가져와 입힙니다.
  • 수식: xnew=(데이터의 구조)×(새로운 표준편차)+(새로운 평균)x_{new} = (\text{데이터의 구조}) \times (\text{새로운 표준편차}) + (\text{새로운 평균})
  • 비유: 자동차 모양(x1x_1의 구조)을 가진 물체에 나무의 질감(x2x_2의 통계량)을 입히는 것입니다. 모양은 차인데 질감은 나무인, 아주 기괴한(이상한) 물체가 탄생합니다.
  • 효과: 소리의 '질감(Texture)'을 변형시켜, 모델이 데이터의 통계적 특징에 민감해지도록 만듭니다.

# X1의 구조를 유지하면서, X1_rev(다른 샘플)의 통계량(mean2, std2)을 적용
X_ex = (X1 - mean1) / (std1 + 1e-16) * std2 + mean2

③ FeatEx (특징 교환: "신체 부위 맞바꾸기")

  • 방법: 이 모델은 소리를 두 가지 관점(FFT 관점, Magnitude 관점)에서 봅니다. FeatEx는 A 샘플의 FFT 특징B 샘플의 Magnitude 특징을 결합합니다.
  • 비유: 사람 A의 '뼈대(FFT)'와 사람 B의 '피부(Magnitude)'를 합치는 것입니다. 뼈대는 A인데 피부는 B인, 존재할 수 없는 기괴한 존재가 탄생합니다.
  • 효과: 이 모델의 핵심입니다. 모델은 "FFT로 본 모습과 Magnitude로 본 모습이 논리적으로 일치해야 한다"는 것을 강제로 학습하게 되어, 아주 미세한 불일치(이상치)도 잡아낼 수 있는 초정밀한 능력을 갖게 됩니다.

# 확률(dec)에 따라 원래 특징(X1)을 쓸지, 뒤집힌 특징(X1_rev)을 쓸지 결정
dec = tf.cast(tf.random.uniform(...) < self.prob, tf.float32)
out = dec * X1 + (1 - dec) * X1_rev


각 SSL 기법은 layers.py의 서로 다른 클래스에 구현되어 있습니다. 핵심 로직만 간략하게 추출하였습니다.


💡 요약 비교

기법대상변형 방식학습 효과
Mixup데이터 값x1,x2x_1, x_2를 섞음데이터 간 연속성 확보
StatEx데이터 통계x1x_1의 모양 + x2x_2μ,σ\mu, \sigma통계적 질감(Texture) 학습
FeatEx추출된 특징Branch A의 특징 + Branch B의 특징서로 다른 관점 간 일관성 학습

3. 요약: 복합적인 데이터 확장 (Multiplicative Expansion)

논문에서는 이 세 가지를 동시에 사용합니다. 데이터 하나를 넣었을 때 일어나는 일은 다음과 같습니다.

  1. 원본 데이터 \rightarrow (정상)
  2. Mixup 적용 \rightarrow (섞인 정상)
  3. StatEx 적용 \rightarrow (통계적으로 이상한 데이터)
  4. FeatEx 적용 \rightarrow (특징이 서로 맞지 않는 데이터)

이 세 가지가 결합되면, 하나의 정상 데이터로부터 "정상이 아닌 상태"를 나타내는 수많은 변형(Variations)이 만들어집니다.

논문에서 "클래스 수가 9배로 늘어난다"고 말한 이유는, 각 단계(Mixup, StatEx, FeatEx)마다 데이터가 3가지 상태(원본, 섞임, 변형)로 분화되기 때문입니다 (3×3=93 \times 3 = 9). 이를 통해 모델은 매우 복잡하고 정교한 '가짜 이상치' 세계에서 학습하며, 결과적으로 실제 환경에서 아주 미세한 이상 소음도 기가 막히게 찾아내는 능력을 갖추게 됩니다.

profile
Hello, I'm Terry! 👋 Enjoy every moment of your life! 🌱 My current interests are Signal processing, Machine learning, Python, Database, LLM & RAG, MCP & ADK, Multi-Agents, Physical AI, ROS2...

0개의 댓글