일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 서포트벡터머신이란
- yolo
- pytorch c++
- 데이터 전처리
- Faster R-CNN
- libtorch
- support vector machine 리뷰
- fast r-cnn
- pytorch project
- computervision
- pytorch
- darknet
- TCP
- self-supervision
- yolov3
- EfficientNet
- SVM hard margin
- 논문분석
- svdd
- SVM 이란
- CS231n
- Deep Learning
- CNN
- SVM margin
- RCNN
- Object Detection
- DeepLearning
- cs231n lecture5
- cnn 역사
- Computer Vision
- Today
- Total
아롱이 탐험대
[Anomaly Detection] Auto-Encoder, One class SVM 본문
본 포스트는 고려대학교 산업경영공학부 강필성 교수님의 Business Analytics 강의를 정리한 내용입니다.
Auto-Encoder for Anomaly Detection
Auto-Encoder 기법은 이미지에서는 CNN을 사용하고, time-series나 text 데이터에 대해서는 RNN 기반으로 사용한다. 이를 모두 관통하는 원칙은 Neural Net을 학습하는 데 있어 input data를 최대한 reconstruction 하여 output data와 비슷하게 만드는 것이다.
l(f(x))=12∑k(ˆxk−xk)2
AE (Auto-Encoder)의 basic loss function은 위와 같이 정의되고, 여기서 xk는 input data이고, ˆxk는 reconstruction 된 output data이다.

Input data x를 축약하여 hidden layer로 보내는 역할을 encoder라고 하고, 여기서 핵심은 hidden layer가 h차원이라고 하고, input data가 d차원이라면 h는 무조건 d보다 작아햐 한다. 무조건 정보의 축약 또는 압축이 일어나야 한다는 뜻이다.
이렇게 압축된 데이터를 원래의 차원으로 펼치는 과정을 decoder가 한다.
이 과정에서 h 차원으로 축약된 벡터를 latent vector라고 한다.
위에서 정의한 loss function을 가지고 anomaly score로 사용할 수 있다.

322 차원을 가진 벡터 이미지를 예로 들어 AE를 시각화하면 위 그림과 같아진다.
Support Vector-based Anomaly Detection

SVM (Support Vector Machine)은 binary classification을 위한 알고리즘이고, SV regression은 회귀 모형 알고리즘이다. 이 알고리즘을 기반으로 anomaly detection에 접근할 수 있다.
이전에 배웠던 밀도 기반 방법론을 통해 특정 데이터가 들어왔을 때 정상 범주에 들어올 확률 및 anomaly score를 냈는데, SV based anomaly detection은 정상과 이상치 데이터에 대한 범주를 찾는다. 이를 찾기 위한 방식이 2가지 있는데 1-SVM (One-class SVM), SVDD이다.
이 알고리즘의 차이는 hyper plane을 구하는 것과 hyper sphere를 구하는 것으로 크게 나뉜다.
이를 자세하게 살펴보자.
One-class Support Vector Machine (1-SVM)
1-SVM은 original data를 feature space로 옮기는데, 이때 정상 데이터를 최대한 원점에서 멀어지도록 만든다. 그래서 원점으로부터 해당 데이터까지의 거리를 ρ 라는 hyper parameter를 가지고 온다.
아래 식을 통해 최적화에 대한 objective function을 살펴보자.
minw12∥w∥2+1νll∑i=1ξi−ρs.t. w⋅Φ(xi)≥ρ−ξii=1,2,⋯,l ,ξi≥0
Objective function의 첫 번째 term은 w에 대해 regularization을 진행한다. 이를 통해 w를 최소화한다.
두 번째 term은 개별적인 normal object가 ρ 보다 가까울 때 패널티를페널티를 준다. 즉 정상 영역의 데이터는 원점보다 바깥쪽에 있어야 하는데 그러지 않을 때 페널티를 주는 역할을 한다.
세 번째 term인 ρ는 원점에서부터 최대한 멀리 떨어진 hyper plane과의 거리를 의미 한다.
이를 통해 1 term은 model의 변동성을 감소시키고, 2 term은 경계면 조건을 만족하지 못하는 정상 데이터에 대한 페널티를 부여하고, 3 term은 decision boundary를 예측한다.
이를 primal Lagrangian problem으로 변형시키자.
L=12∥w∥2+1νll∑i=1ξi−ρ−l∑i=1αi(w⋅Φ(xi)−ρ+ξi)−l∑i=1βiξi
원래 objective function에 새로운 term을 추가하였다.
4 term은 개별적인 객체는 원점보다 멀리 있어야 하고, 그렇지 않으면 페널티를 부여하는 역할을 한다.
5 term은 ξi는 항상 0보다 커야 하니깐 이것에 대한 제약식, 즉 페널티를 의미한다.
이를 통해 각 w,ξ,ρ에 대한 KKT condition을 구해보자.
∂L∂w=w−l∑i=1αiΦ(xi)=0→w=l∑i=1αiΦ(xi)∂L∂ξi=1νl−αi−βi=0→αi=1νl−βi∂L∂ρ=−1+l∑i=1αi=0→l∑i=1αi=1
각 parameter에 대한 편미분을 진행하면 위와 같은 식이 도출된다.
ξ에 대해 편미분을 진행하면 α에 대한 식으로 전개할 수 있고, ρ에 대한 미분을 진행하면 α에 대한 sum이 1이 되어야 된다는 식이 만들어진다.
이렇게 구한 식으로 primal Lagrangian 식에 대입하면 Dual Lagrangian problem으로 풀 수 있다.
L=12l∑i=1l∑j=1αiαjΦ(xi)Φ(xj)+1νll∑i=1ξi−ρ−l∑i=1l∑j=1αiαjΦ(xi)Φ(xj)+ρl∑i=1αi−l∑i=1αiξi−l∑i=1βiξi
위 수식에 KKT condition에서 구한 수식을 삽입하면 다음과 같이 정리가 된다. (최소화로 변경)
minL=12l∑i=1l∑j=1αiαjΦ(xi)Φ(xj)s.t. l∑i=1αi=1, 0≤αi≤1νl
이를 통해 α에 대한 깔끔한 convex 함수로 만들 수 있다.
식을 더욱 간편화 하기 위해 Φ에 대한 수식을 kernel function으로 바꿀 수 있다.
minL=12l∑i=1l∑j=1αiαjK(xi,xj)s.t. l∑i=1αi=1, 0≤αi≤1νl
α의 의미에 대해 알아보자. α에 대한 조건은 다음과 같다.
l∑i=1αi=1, 0≤αi≤1νl, βiξi=0, αi+βi=1νl
α의 값에 따라 위치가 달라진다.
Case 1 : αi=0 → a non-support vector
여기서 αi=0라는 의미는 βi가 0이 아니라는 것이고, 이는 조건에 의해 ξi=0이라는 것과 같다. 결국 이 객체들은 SV가 아닌 hyper plane으로부터 멀리 떨어진 객체들을 의미한다.
Case 2 : αi=1νl → βi=0 → ξi>0 → Support vector
해당 케이스를 만족하려면 β는 0이 되어야 하고, ξ는 0보다 커야 한다.
이를 만족하는 α는 support vector가 되고, hyper plane 안쪽 원점과 가까운 부분에 위치하게 된다.
Case 3 : 0<αi<1νl → βi>0 → ξ=0 → Support vector
해당 부등식을 만족하는 α는 결국 ξ가 0이 되고, 이는 support vector 이면서 hyper plane 위에 위치하게 된다.
위 3가지 경우를 plot화 하면 다음과 같이 표현할 수 있다.

case 1은 하얀색, case 2는 검은색, case 3은 회색으로 표현할 수 있다.
이번에는 ν의 역할에 대해 알아보자.
0≤αi≤1νl 를 만족할 때 α의 합은 1이 되어야 한다. 이는 α가 가질 수 있는 최대 값인 1νl일 때, sum이 1이 되려면 α는 νl개가 된다. 이는 결국 우리는 최소한 νl 만큼 support vector가 있어야 한다.
그리고 이때 βi=0이 된다. 이때 ξi>0 이 되고, 이는 hyper plane을 만들었을 때 원점에 더 가까운 SV가 1νl이라는 Lagrangian multiply 값을 가졌는데, 그러면 이 hyper plane을 넘어가는 최대의 객체 수가 1νl이 된다는 의미이다.
이 말이 조금 어려운데, 예를 들어 α가 200개 있다고 하자. 이는 sv의 수가 200개라는 의미이고, 이 경우에는 원점에 더 가까운 ξ 보다 큰 sv는 없다는 의미이다. 따라서 νl이라는 것은 우리가 가질 수 있는 sv의 최소 개수이고, 동시에 페널티를 줄 수 있는 객체의 최대 값을 의미한다.
결과론 적으로 ν는 sv 비율의 lower boundary면서 ξ라는 페널티에 영향을 받을 수 있는 upper boundary이다.
만약 ν가 0.1이면 10% 이상은 sv라는 것이고, hyper plane을 벗어나는 페널티를 부여받는 sv의 최대 비율이 10%이다.

따라서 0.1 일 때와 0.9일 때를 구별해보면 sv가 많을수록 오른쪽과 같이 specialization에 집중하게 된다.
이를 통해 ν의 값에 따라 결과물에 대한 형태를 추정할 수 있게 된다.