본문 바로가기

반응형

분류 전체보기

(369)
Deep One-Class Classification 이 논문은 ICML 2018에 발표된 논문으로 이전의 이상 탐지는 One Class SVM (OC-SVM) 이나 Kernel Density Estimation (KDE) 등의 전통적인 방법을 사용하거나 다른 목적으로 훈련된 deep neural networks를 이상 탐지에 전용하여 사용했습니다. 이 논문은 이상 탐지를 위해 밑의 그림과 같은 Deep Support Data Description (Deep SVDD) 모델을 제안합니다. 위 그림을 보시면 Deep SVDD는 $\phi(;W)$로 표현된 neural networks 가 데이터 $X$를 feature space $F$로 변환합니다. 변환할 때, 대부분의 데이터가 feature space 상의 중심 $c$에서 반경 $R$을 가진 hypersph..
Slimmable Neural Networks 딥러닝 모델을 실제 어플리케이션에 적용하기 위해 다양한 경량화 기법, 모델 등이 연구되고 있습니다만 deploy를 하기 위한 mobile device 의 종류가 여러 가지고 각각의 computational power와 실행 시간이 다르기에, 목표로 한 device에 맞게 경량화된 모델을 탑재하여야 합니다. 위의 그림처럼 같은 안드로이드를 사용하는 핸드폰이라 하더라도 image classification을 실행하는 시간은 제각각이기에 하드웨어 성능이 좋은 디바이스에는 더 큰 모델을 deploy 하고, 하드웨어 성능이 안 좋은 디바이스에는 latency 최적화를 위한 모델의 성능 감소가 필연적입니다. (latency-accuracy tradeoff) MobileNet이나 ShuffleNet 같은 경량화 모델..
Learning Efficient Convolutional Networks through Network Slimming Convolution Neural Networks (CNN) 모델이 커지고 깊어지면서 모바일 등의 저사양 디바이스에 deployment 하기에 다음과 같은 제약 사향이 발생합니다. 모델이 커지면서 파라미터의 개수가 매우 많아집니다. ResNet-152 은 6천만 개의 파라미터를 가지고 하나의 파라미터가 32 bit (4 byte)의 메모리가 필요한 것을 생각해봤을 때, 모델을 loading 하기 위해 메모리 공간은 수백 메가가 넘어가게 됩니다. 모델의 파라미터를 저장하는 부분 이외에도 중간의 feature map 들을 저장하고 계산하는 run-time memory 도 매우 많이 소요됩니다. 특히 연산량 파워가 작은 임베디드 시스템에서는 큰 문제가 될 수 있습니다. 이 논문에서는 network slimmi..
Multivariate Time Series (1) - 기본 확률 이번 포스트에서는 다변수 시계열 데이터 분석을 위한 기본 확률 개념을 알아보도록 하겠습니다. Multivariate time series 이전 포스트들에서는 단변수 시계열 데이터를 다뤘습니다. 다변수 시계열 데이터는 한 개가 아닌 여러 개의 feature로 구성된 데이터로 하나의 시점에서 스칼라 값이 아닌 다음과 같이 벡터로 표현됩니다. 여기서 $m$은 데이터의 feature 차원이 되겠죠. 먼저 평균은 다음과 같이 각각의 기대값이 쌓아진 벡터로 표현됩니다. Covariance matrix Covariance는 다변수이기 때문에 값이 아닌 행렬로 주어집니다. 단변수의 경우 1x1 matrix이기 때문에 스칼라 값이 되는 것이죠. Covariance matrix는 $\sum_X=[Cov(X_i,X_j)]_..
Exponential Smoothing, CMA, Winter's Method Exponential smoothing $\hat{X}_{t+1}=\alpha X_t + (1-\alpha)\hat{X}_t$ 식을 생각해 보겠습니다. ($\alpha$는 smoothing 계수입니다) ARIMA(0,1,1) = $X_t=X_{t-1}+a_t-\theta a_{t-1}$ 는 정리하면 $a_t=(1-\theta B)^{-1}(X_t-X_{t-1})$ 로 표현할 수 있습니다. 이를 다시 풀어쓰면 $a_t$=$X_t-(1-\theta)X_{t-1}-\theta(1-\theta)X_{t-2}-...$가 되고 이를 다시 $X_t$에 대해 풀어쓰면 $X_t$=$a_t+(1-\theta)X_{t-1}+\theta (1-\theta)X_{t-2}+\theta^2 (1-\theta)X_{t-3}+...$..
Pruning Filters for Efficient Convnets ImageNet challenge 이후 Convolutional Neural Networks (Convnets)는 높은 성능을 위해 점점 커지고 깊어졌지만 이에 대한 반대급부로 한정된 computational 리소스를 가진 임베디드 시스템에 모델을 deploy하기가 어려워지고 FLOPS의 증가로 inference 시간이 길어지면서 실시간 서비스가 중요한 웹 서비스에 부적합하게 되었습니다. 이 문제를 해결하기 위해 모델의 불필요한 부분을 제거하거나 (pruning), 모델 파라미터를 표현하는 bit 수를 감소시키는 (quantization) 등의 다양한 모델 압축 기법이 연구되고 있습니다. 이번 포스트에서는 그 중 모델의 영향력이 적은 파라미터를 통째로 제거하는 pruning 기법에 관해 살펴보려 합니다...
Nonstationary process, ARIMA, SARIMA 일반적인 시계열 데이터는 stationary 하지 않습니다. 대부분 추세를 가지고 있고 따라서 stationary의 가정과 같이 평균이 상수로 일정하지 않습니다. 이전 포스트에서 알아봤듯이 추세를 제거해서 stationary 한 신호를 만들어 분석을 수행하게 됩니다. $X_t = X_{t-1} + a_t$의 데이터는 어떻게 될까요? 노이즈가 껴있긴 하지만 선형으로 증가하는 추세를 가지게 될겁니다. 그렇다면 이를 1차 difference ($\nabla X_t = X_t - X_{t-1}$) 를 수행하면 평균이 일정하게 되므로 stationary 하게 만들 수 있습니다. 추세가 quadratic하게 증가하는 시계열 데이터는 어떻게 다룰 수 있을까요? 이런 상황에는 2차 difference ($\nabla ..
코딩테스트 문제 (26) - 최대 공약수, 최소 공배수 이번 포스트에서는 최소공약수, 최대공배수를 구하는 방법을 알아보겠습니다. 최대 공약수 최대 공약수는 2개의 자연수를 각각 나누어서 나머지가 0이 되는 최대 자연수를 말합니다. 간단하게 2개의 자연수를 받아 2부터 작은 자연수까지 모두 나누어보면 구할 수 있지만 $O(N)$의 시간 복잡도가 소요됩니다. 유클리드 호제법을 사용하면 $O(\log N)$ 에 최대 공약수를 구할 수 있습니다. 유클리드 호제법 유클리드 호제법은 인류사에서 가장 오래된 알고리즘 중 하나로 알려져 있는 알고리즘입니다. 2개의 자연수 a, b (a > b) 에 대해서 a를 b로 나눈 나머지를 r이라 하면 a와 b의 최대 공약수는 b와 r의 최대 공약수와 같습니다. (GCD(a,b) = GCD(b, a%b)) a, b의 최대공약수를 g라..

반응형