[모두의 연구소] Deep SAD 목적함수 (Deep SAD Objective) (260712)

WonTerry·2026년 7월 12일

Deep Learning

목록 보기
11/26

Deep SAD 목적함수 (Deep SAD Objective) 상세 설명

논문의 핵심 수식은 3장 "Deep Semi-Supervised Anomaly Detection"에 있는 식 (7)입니다. 이를 이해하려면 먼저 식 (3)의 비지도 버전(Deep SVDD)부터 순서대로 봐야 합니다.

1단계: 비지도 Deep SVDD 목적함수 (식 3)

minW1ni=1nϕ(xi;W)c2+λ2=1LWF2\min_{\mathcal{W}} \quad \frac{1}{n} \sum_{i=1}^{n} \|\phi(\boldsymbol{x}_{i}; \mathcal{W}) - \boldsymbol{c}\|^{2} + \frac{\lambda}{2} \sum_{\ell=1}^{L} \|\boldsymbol{W}^{\ell}\|_{F}^{2}

  • ϕ(;W)\phi(\cdot;\mathcal{W}): 가중치 W\mathcal{W}를 가진 신경망 (입력을 잠재공간 Z\mathcal{Z}로 매핑)
  • cc: 하이퍼스피어(hypersphere)의 중심점 (고정값, 학습 대상 아님)
  • 첫 번째 항: 라벨 없는 nn개 샘플이 중심 cc로부터 얼마나 멀리 떨어져 있는지의 평균 제곱거리 — 이 값을 최소화하면 정상 데이터들이 중심 근처로 빽빽하게 모이도록(compact) 학습됨
  • 두 번째 항: L2 가중치 감쇠(weight decay) 정규화

즉 "정상 데이터는 좁은 하이퍼스피어 안에 모으자"는 것이 핵심 아이디어입니다.

2단계: Deep SAD 목적함수 (식 7) — 라벨 있는 항의 추가

minW1n+mi=1nϕ(xi;W)c2① 비라벨 항+ηn+mj=1m(ϕ(x~j;W)c2)y~j② 라벨 항+λ2=1LWF2③ 정규화 항\min_{\mathcal{W}} \quad \underbrace{\frac{1}{n+m} \sum_{i=1}^{n} \|\phi(\boldsymbol{x}_{i}; \mathcal{W}) - \boldsymbol{c}\|^{2}}_{\text{① 비라벨 항}} + \underbrace{\frac{\eta}{n+m} \sum_{j=1}^{m} \big(\|\phi(\tilde{\boldsymbol{x}}_{j}; \mathcal{W}) - \boldsymbol{c}\|^{2}\big)^{\tilde{y}_{j}}}_{\text{② 라벨 항}} + \underbrace{\frac{\lambda}{2} \sum_{\ell=1}^{L} \|\boldsymbol{W}^{\ell}\|_{F}^{2}}_{\text{③ 정규화 항}}

여기서 y~j{+1,1}\tilde y_j \in \{+1, -1\}: 라벨 있는 jj번째 샘플이 정상(+1+1)인지 이상치(1-1)인지 나타내는 값.

① 비라벨(unlabeled) 항

Deep SVDD와 동일한 형태로, nn개의 라벨 없는 학습 샘플을 중심 cc 쪽으로 모으는 역할을 합니다. 라벨 있는 데이터가 없다면(m=0m=0) 이 목적함수는 그대로 Deep SVDD로 환원됩니다.

② 라벨(labeled) 항 — Deep SAD의 핵심

여기서 지수 y~j\tilde y_j가 트릭입니다.

  • 라벨 있는 정상 샘플 (y~j=+1\tilde y_j = +1): (ϕ(x~j)c2)+1=ϕ(x~j)c2(\|\phi(\tilde x_j)-c\|^2)^{+1} = \|\phi(\tilde x_j)-c\|^2그냥 제곱거리 → 이 값을 작게 만들도록 학습 → 정상 샘플을 중심 쪽으로 끌어당김 (①과 같은 방향)
  • 라벨 있는 이상치 샘플 (y~j=1\tilde y_j = -1): (ϕ(x~j)c2)1=1ϕ(x~j)c2(\|\phi(\tilde x_j)-c\|^2)^{-1} = \dfrac{1}{\|\phi(\tilde x_j)-c\|^2}거리의 역수(inverse) → 이 값을 작게 만들려면 분모인 거리 ϕ(x~j)c\|\phi(\tilde x_j)-c\|커져야 함 → 이상치를 중심에서 최대한 멀리 밀어냄

즉 지수 하나로 "정상은 끌어당기고 이상치는 밀어낸다"는 상반된 두 가지 목표를 하나의 수식으로 통일한 것이 이 논문의 독창적인 부분입니다. (실제 구현에서는 분모가 0이 되는 걸 막기 위해 아주 작은 값 ϵ106\epsilon \approx 10^{-6}을 더합니다.)

η>0\eta > 0은 "라벨 있는 데이터에 얼마나 가중치를 둘지" 조절하는 하이퍼파라미터입니다. η>1\eta > 1이면 라벨 데이터를, η<1\eta < 1이면 비라벨 데이터를 더 신뢰하도록 학습에 반영합니다. 논문은 실험적으로 η=1\eta=1(균등 가중치)만으로도 충분히 좋은 성능 향상을 얻었다고 보고합니다.

③ 정규화 항

Deep SVDD와 동일한 L2 weight decay.

왜 하필 "역제곱거리"인가 (설계 근거)

논문은 다른 손실 함수 후보들(negative squared norm, Hampel 같은 robust loss, hinge loss)도 실험했지만 모두 문제가 있었다고 설명합니다.

  • Negative squared norm(그냥 부호만 반대로 한 거리): 아래로 무한히 발산해서 최적화 자체가 성립하지 않음(ill-posed)
  • Robust loss류: 추가 스케일 파라미터가 필요해서 조율이 어려움
  • Hinge loss: 최적화가 잘 안 되고 성능이 떨어짐

반면 역제곱거리는 아래로 유계(bounded below, 항상 0 이상)이면서 매끄러운(smooth) 함수라서 딥러닝 최적화에 적합했고, 실험적으로도 가장 성능이 좋았다고 합니다.

이론적 해석: 엔트로피 관점 (식 8)

논문은 이 목적함수를 정보이론적으로도 해석합니다. 잠재공간에서:

  • 정상 데이터의 분포 Z+=Z{Y=+1}Z^+ = Z\,|\,\{Y=+1\}엔트로피가 낮아야 함 (한 점에 압축·집중)
  • 이상치 데이터의 분포 Z=Z{Y=1}Z^- = Z\,|\,\{Y=-1\}엔트로피가 높아야 함 (넓게 퍼짐, 특정 군집 가정을 하지 않음)

maxp(zx)  I(X;Z)+β(H(Z)H(Z+))\max_{p(z|x)} \; \mathcal{I}(X;Z) + \beta\big(\mathcal{H}(Z^{-}) - \mathcal{H}(Z^{+})\big)

이 관점이 중요한 이유는, 일반적인 (준)지도 분류에서 쓰이는 "군집 가정(cluster assumption: 비슷한 데이터는 같은 클래스다)"이 정상 데이터에는 적용될 수 있지만 이상치에는 성립하지 않는다는 점을 명시적으로 반영했기 때문입니다. 이상치는 정의상 "무엇이든 정상이 아닌 것"이라 서로 닮을 필요가 없고, 그래서 이상치 분포는 오히려 높은 엔트로피(넓게 퍼진 형태)를 갖도록 설계한 것입니다. 이 설계가 바로 "학습 때 본 적 없는 새로운 종류의 이상치에도 일반화가 잘 되는" Deep SAD의 이론적 근거입니다.

요약 표

구성 요소역할
ϕ(;W)\phi(\cdot;\mathcal{W})데이터를 잠재공간으로 매핑하는 신경망
cc하이퍼스피어 중심 (고정)
비라벨 항 (①)대다수 라벨 없는 데이터를 정상으로 가정하고 압축
라벨 정상 항 (②, y~=+1\tilde y=+1)제곱거리 최소화 → 중심으로 끌어당김
라벨 이상치 항 (②, y~=1\tilde y=-1)역제곱거리 최소화 → 중심에서 밀어냄
η\eta라벨 vs 비라벨 데이터 간 가중치 균형
λ\lambda가중치 정규화 강도

정규화 항(Regularization Term) 상세 설명

Deep SAD 목적함수 식 (7)의 세 번째 항입니다.

λ2=1LWF2\frac{\lambda}{2} \sum_{\ell=1}^{L} \|\boldsymbol{W}^{\ell}\|_{F}^{2}

1. 수식의 각 기호가 의미하는 것

기호의미
LL신경망의 은닉층(hidden layer) 개수
\ell층 인덱스 (=1,,L\ell = 1, \dots, L)
W\boldsymbol{W}^{\ell}\ell번째 층의 가중치 행렬(또는 합성곱 필터 텐서)
F\|\cdot\|_F프로베니우스 노름(Frobenius norm) — 행렬(또는 텐서)의 모든 원소를 제곱해서 더한 뒤 제곱근을 취한 값
λ>0\lambda > 0정규화 강도를 조절하는 하이퍼파라미터

프로베니우스 노름을 풀어쓰면 다음과 같습니다.

WF2=a,b(Wa,b)2\|\boldsymbol{W}^{\ell}\|_{F}^{2} = \sum_{a,b} (W^{\ell}_{a,b})^{2}

즉 그 층에 있는 모든 가중치 값을 하나하나 제곱해서 다 더한 것입니다. 여러 층에 걸쳐(l=1부터 L까지) 이걸 다 더하면, 결국 신경망 전체 가중치의 "제곱합"이 됩니다.

2. 이게 하는 일: L2 가중치 감쇠(Weight Decay)

이 항은 손실 함수에 "가중치 값 자체가 클수록 페널티를 받는다"는 항을 더하는 것으로, 딥러닝에서 흔히 쓰는 L2 정규화(=weight decay)입니다.

  • 목적함수 전체를 최소화해야 하므로, 이 항이 있으면 네트워크는 데이터를 잘 설명하면서도 가중치 값을 필요 이상으로 키우지 않는 쪽으로 학습됩니다.
  • 앞의 두 항(①비라벨 항, ②라벨 항)은 "데이터를 얼마나 잘 압축/분리하는가"를 담당하고, 이 항은 "모델이 너무 복잡해지지(과적합되지) 않도록" 담당합니다.
  • 12\frac{1}{2}을 곱하는 이유는 순전히 계산상의 편의입니다. 이 항을 가중치에 대해 미분(gradient)하면 λW\lambda \cdot W^\ell이 되어 깔끔하게 떨어지기 때문에 (제곱 미분 시 나오는 2가 앞의 1/2과 상쇄) 관례적으로 붙이는 계수입니다.

3. λ\lambda의 역할과 논문에서 쓰인 값

  • λ\lambda크면: 가중치를 작게 유지하는 데 더 강하게 페널티를 줌 → 모델이 단순해지고 과적합 위험은 줄지만, 데이터를 충분히 잘 표현하지 못할 위험(과소적합)도 생김
  • λ\lambda작으면: 데이터 재현(압축)에 집중하지만 과적합 위험이 커짐

논문 부록 E에서는 Deep SAD와 Deep SVDD 모두 λ=106\lambda = 10^{-6}이라는 매우 작은 값을 고정해서 사용했다고 명시합니다. 즉 이 정규화는 "핵심적인 학습 목표"라기보다는 가중치가 과도하게 발산하지 않도록 잡아주는 보조적인 안정화 장치에 가깝습니다.

4. 코드(main.py)와의 대응

지금까지 다뤄온 CLI 옵션이 바로 이 λ\lambda입니다.

--weight_decay 0.5e-6      # 본 학습(Deep SAD trainer)의 λ
--ae_weight_decay 0.5e-3   # 오토인코더 프리트레이닝의 λ (별도 값)

PyTorch의 Adam 옵티마이저에 weight_decay 파라미터로 그대로 전달되어, 매 스텝마다 그래디언트에 λW\lambda \cdot W 항이 더해지는 방식으로 구현됩니다(수식과 동일한 효과).

흥미로운 점은 본 학습(λ=0.5×106\lambda=0.5\times10^{-6})과 프리트레이닝(λ=0.5×103\lambda=0.5\times10^{-3})의 λ\lambda 값이 1000배 차이난다는 것인데, 이는 오토인코더 프리트레이닝 단계에서는 재구성 손실(reconstruction loss)이 상대적으로 큰 스케일을 가지므로 더 강한 정규화가 필요하고, 본 학습 단계(하이퍼스피어 거리 기반 손실)에서는 손실 스케일이 다르므로 약한 정규화만으로 충분하기 때문입니다.

5. 하이퍼스피어 붕괴(collapse) 방지와의 관계 — 오해하기 쉬운 부분

이 정규화 항이 "하이퍼스피어 붕괴"를 직접 막아주는 건 아닙니다. 붕괴 방지는 부록 C에서 별도로 설명하는 네트워크 구조 제약(bias term 제거, 무경계 활성함수인 ReLU/LeakyReLU 사용)이 담당합니다. 정규화 항은 그와 별개로, 일반적인 딥러닝에서처럼 가중치가 지나치게 커져서 과적합되거나 최적화가 불안정해지는 것을 막는 표준적인 역할만 합니다.

요약

질문
무엇을 정규화하는가?신경망 전체 층의 가중치 크기(L2 노름)
왜 필요한가?과적합 방지, 학습 안정화 (Deep SAD 고유의 이론이 아니라 표준적인 weight decay)
λ\lambda 값은?논문 기본값 10610^{-6} (매우 약한 정규화)
코드 대응 옵션--weight_decay, --ae_weight_decay
하이퍼스피어 붕괴 방지와 직접 관련 있는가?아니오 — 그건 bias 제거·활성함수 선택이 담당
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개의 댓글