본 포스팅은 Google Brain에서 Practical Convolutional Neural Networks (CNNs)를 제안하기 위한 노력 중 하나인 EfficientNet에 대한 리뷰로써 최근 ICML 2019에 제출된 논문 입니다. 포스팅에 앞서, 주제와 관련된 모든 연구 내용은 EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks를 참조했음을 먼저 밝힙니다.

 

History


  본 연구 소개에 앞서 Practical Deep Learning 모델의 역사에 대해 간략히 살펴보겠습니다. 대부분 아시다시피, Google은 ILSVRC 2014에서 당시 ImageNet Classification Task에서 State-of-the-art 모델이었던 VGG를 근소한 차이로 압도하며 우승하였고, 이를 통해 CVPR 2015를 기점으로 그들의 최적화 모델 연구는 폭발적인 탄력을 받기 시작합니다.

 

아래의 History는 제가 직접 정리한 Google의 최적화 모델 발전 추세를 나타내는 논문인데요.

 

  • Going Deeper with Convolutions (CVPR 2015)
  • Rethinking the Inception Architecture for Computer Vision (CVPR 2016)
  • Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning (AAAI 2017)
  • Xception: Deep Learning with Depthwise Separable Convolution (CVPR 2017)
  • MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications (ArXiv: 2018)
  • MobileNetV2: Inverted Residuals and Linear Bottlenecks (CVPR 2018)
  • EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks (ICML 2019)
  • MnasNet: Platform-Aware Neural Architecture Search for Mobile (CVPR 2019)

 

  위의 논문을 모두 follow-up 하신 분들은 아시겠지만, ILSVRC 2014에서 성과를 거둔 1~2년 찰나에 추구하는 모델의 발전 방향성이 다소 달라진 것을 확인할 수 있습니다. 당시 구글 이외에 Facebook 혹은 저명한 연구자들은 Classification Task를 더욱 잘 처리하기 위해 어떻게 Deeper Layer의 Building Block을 설계할까하는 고민을 많이 했지만, 흥미롭게도 Google은 CVPR 2016을 기점으로 다른 방향의 모델 진보가 필요하다고 말하였습니다.

 

  이미 Google Cloud의 Roadmap을 눈 여겨 보신 분들은 아시겠지만, Google의 여전한 관심은 Edge Device에서 Classification Task를 잘 처리해줄 수 있는 Deep Learning 모델이었고, 이에 따라, Accuracy 뿐만 아니라 실용적이고 활용 가능한 Efficient 모델이 필요하다고 주장하였습니다. 본 포스팅은 Google이 최근 3년간 연구 결과로 나타낸 Practical 모델 중 가장 최근 발표한 EfficientNet이 어떻게 high-end model과 유사한 성능을 나타내며, 실용적인 모델이 되었는지 살펴보도록 하겠습니다.

 

Rethinking Optimization of CNNs


  예를 들어, ResNet이나 MobileNet 등을 고려할 때, 최적화 CNN 모델을 제안하였던 지난 연구 사례들은 아래의 그림과 같이 크게 3 가지 방향 (Figure.1)에서 발전되었다고 주장합니다.

  첫 번째, "Deeper layer (depth scaling)", 이는 다양한 filter layer 계층을 형성함으로써 풍성한 feature extraction 및 feature generation에 영향을 주었고, 모델의 성능을 한층 향상시키는 데 기여하였습니다.

  두 번째, "Wider output channels (channel width scaling)", 이는 데이터에서 충분히 많은 fine-grained patterns를 capturing하는 데 효과를 주었고, 역시 이를 통한 모델 accuracy 향상에 영향을 주었습니다.

  마지막으로, "Higher resolution (image size variation)" 효과는 filtering된 output channel의 height and width flexibility에 영향을 주어 capturing된 feature의 정교한 표현에 영향을 주었습니다.

 

Figure. 1. Scalibilty Analysis for Efficient Model Design

 

  효과적인 모델 스케일링을 위해 위에서 언급한 3 가지 측면을 controlling 할 수 있는 스케일링 파라미터가 각각 필요하며, 이를 위해 depth scaler α, width scaler β, image size scaler γ를 정의하였습니다. 한편, 논문에서는 각 파라미터와 모델에서 소비되는 Computation Resources와의 관계를 실험을 통해 발견하였고, 이는 Baseline Computing Resources로부터 약 2배 단위로 Resources를 더욱 소비하는 모델을 디자인한다면, 스케일링 파라미터를 활용하여 모델의 Baseline Configuration 대비 각각 α, β, γ배를 하는 것과 직관적으로 동일하다고 밝혔습니다. 이에 대한 자세한 언급은 논문을 통해 확인하시면 쉽게 이해하실 수 있습니다.

 

  본 논문은 앞서 언급한 Deep Convolutional Neural Network의 세 가지 Scalibility를 종합적으로 고려하는 "Compound Model Scaling" 기법을 제안하였으며, 이를 통해, 성능 손실을 최소화하며 Device-Aware한 디자인 방식의 목표를 달성할 수 있다고 말합니다. 그러나, 제안하는 기법이 적용되기 이전에 SOTA (State-of-the-art) 모델을 디자인하는 것이 성능의 Impact Results를 만드는 데 매우 중요한 과정이라고 언급하였으며, 이들은 성능이 우수한 Baseline 모델을 확보하기 위해 Multi-objective NAS (Neural Architecture Search) 기법을 활용하였습니다.

 

   NAS를 통해 얻은 최적의 Baseline 모델을 EfficientNet-B0 (Figure.2)로 하여, Optimal goal (Table.1)에 가까운 모델을 찾기 위해 "Compound Model Scaling"을 적용하였으며, 총 B0 ~ B7까지 디자인을 수행하였습니다.

 

 Table. 1. Optimal Goal of Efficient Model Design
Figure.2. The EfficientNet-B0 Architecture designed from Neural Architecture Search

 

 

Experiments Analysis


  Efficient-B0 ~ B7의 모델은 각각 SOTA를 달성한 모델과 비교하여 비슷한 성능을 확보하면서, 한편, 필요한 Parameters 개수 혹은 연산량에 대해 상대적인 Gain을 얻었고, 이를 통해 "Compound Scaling Method"가 Practical Design을 완성하는데, 효과적인 방법이라고 주장하였습니다 (Figure. 3). 더불어, Compound Scaling Method의 활용 우수성을 검증하기 위해 기존의 Practical Design으로 구현된 MobileNetV1, MobileNetV2 및 ResNet-50에 마찬가지로 적용함으로써, 기존모델의 hyper-parameter tuning 작업에도 적절히 활용될 수 있음을 보여주었습니다.

 

Figure.3. Performance Results from EfficientNet B0 to Efficient B7, compared to SOTA models

 


  서술한 연구 내용 외에 추가적인 연구 결과나 이해가 필요한 부분이 있으면 직접 링크된 논문을 읽어보시고 댓글을 남겨주시면 답변드리겠습니다. 제가 작성한 PPT 자료를 업로드 해드리니 필요하시면 참고해주세요.

 

Thanks,

 

Min Cheol Park

 

EfficientNet_summary.pptx
6.07MB

 

Anomaly Detection with GAN : AnoGAN

카테고리 없음 2019. 6. 25. 14:50 Posted by woojeong

이번 글에서는 Anomaly Detection에 대한 간략한 소개와 함께 GAN을 Anomaly Detection에 처음으로 적용한 논문을 리뷰하겠습니다. 논문 원제는 Unsupervised Anomaly Detection with Generative Adversarial Networks to Guide Marker Discovery 이며, Anomaly Detection 소개 부분은 DEEP LEARNING FOR ANOMALY DETECTION: A SURVEY 논문을 참고했음을 먼저 밝힙니다. 

 

Anomlay Detection


   Anomaly Detection는 '이상 탐지'라는 이름에서부터 알 수 있듯이 normal 하지 않은 데이터를 정상 데이터로부터 구분하는 것입니다. 그렇다면 어떤 데이터가 비정상이라는 것은 어떻게 알 수 있을까요? 사실 label이 붙어있지 않으면 이 기준이 굉장히 애매하게 됩니다. 직관적으로 생각해 보면 데이터 샘플이 모여있는 구간이 있을 것이고, 이 구간에서 많이 떨어진 샘플을 우리는 비정상 데이터, 즉 '이상치'라고 판별할 수 있습니다. 

 

   위 그래프를 보면, $N_1$ 과 $N_2$ 영역에 거의 모든 관측치들이 몰려 있기 때문에 이들은 정상 데이터로 분류됩니다. 하지만 $O_3$ 영역과, $O_1$, $O_2$의 관측치들은 대부분의 관측치들이 몰려 있는 영역과 멀리 떨어져 있습니다. 따라서 이들을 비정상 데이터로 볼 수 있습니다. 다시 말해서 정상 데이터의 분포에 속해 있지 않은 outlier들을 찾는 것이죠. 

 

Hawkins(1980)에 따르면 outlier는 다음과 같이 정의됩니다.

Observation that deviates so significantly from other observations as to arouse suspicion that it was generated by a different mechanism.

   대부분의 데이터와 너무 달라서, 아예 다른 data generative process를 통해 만들어졌을 것 같은 샘플들을 말합니다. 따라서 비정상 데이터는 데이터의 오류로부터 발생할수도 있지만, 이전에 알려지지 않은 새로운 생성 매커니즘에서부터 비롯된 것일수도 있습니다. 아래 그림은 각각 교통 데이터, 사물인터넷 센서 데이터에서의 비정상 데이터 예시를 보여줍니다. 빨간색으로 표시된 부분이 비정상 데이터입니다. 

Anomaly Detection의 예시

 

novelty와 anomaly의 구분

   위의 그림에서 호랑이 사진을 정상 데이터, 다른 동물 사진을 비정상 데이터로 분류한다고 할 때, 백호랑이 사진은 어디에 들어가야 할까요? 백호랑이 사진은 호랑이의 범주에는 포함되지만, 다른 일반적인 호랑이 사진보다 anomaly의 경계에 가까운 곳에 위치하고 있을 것입니다. 이런 백호랑이 사진과 같은 관측치를 novelty라고 합니다. 이전 데이터에서 보지 못한 새로운 패턴이지만 anomaly와 달리 정상 데이터 생성 process로부터 생성되었다는 차이점이 있습니다. 

Different aspects of deep learning-based anomaly detection


   Anomaly Detection을 수행하는 방법에는 여러 가지가 있습니다. 정상 데이터의 분포를 정의하는 통계적인 방식도 있고, KNN과 같은 전통적인 머신러닝 알고리즘을 이용하는 방식도 있죠. 하지만 최근에는 딥러닝을 이용한 Anomaly Detection이 좋은 성능을 보이고 있습니다. 딥러닝 기반의 Anomaly Detection을 몇 가지 측면에서 분류해 보도록 하겠습니다. 

Nature of Input Data

  • Sequential (eg, voice, text, music, time series, protein sequences)
  • Non-sequential data (eg, images, other data)

Availability of labels

  • Supervised
    • Training a deep supervised binary or multi-class classifier, using labels of both normal and anomalous data instances
    • lack of availability of labeled training samples
  • Semi-supervised
    • Leverage existing labels of single (normally positive class) to separate outliers
    • ex) deep autoencoders - train them on data samples with no anomalies. normal class samples would produce low reconstruction errors, abnormal class would produce high reconstruction error
  • Unsupervised
    • Solely based on intrinsic properties of the data instances
    • PCA, SVM, Isolation Forest
    • Autoencoder, RBM, DBN, RNN, LSTM

Training objective

  • Deep Hybrid Models (DHM)
    • Use deep neural networks mainly autoencoders as feature extractors
    • Features are input to traditional anomaly detection algorithms (ex, such as one-class SVM)
    • Lack of trainable objective customized for anomaly detection
  • One-Class Neural Networks (OC-NN)
    • data representation in the hidden layer is driven by the OC-NN objective
    • customized for anomaly detection

     

Deep Hybrid Model Architecture

AnoGAN


   이 논문에서 수행하고자 하는 task는 망막의 이미지 샘플을 보고 이 사진이 질병이 있는 사람의 것인지를 판별하고 어떤 부분이 비정상인지를 찾아내는 것입니다. 이를 위해서 GAN을 이용한 비지도학습을 수행합니다. 아래 그림이 전체 아이디어를 잘 보여주는데요, 정상 데이터로만 GAN을 학습해서 정상 데이터를 잘 생성할 수 있는 모델을 만든 다음, 비정상 데이터를 이 모델의 입력으로 넣어서 원래 이미지와 얼마나 비슷하게 복원할 수 있는지를 봅니다. 

Overall Architecture of AnoGAN


   모델 구조와 핵심 아이디어에 대해 더 자세히 보도록 하겠습니다. 먼저 모델 Training 과정에서는 앞서 말씀드렸다시피 정상 데이터만 사용하여 GAN을 학습합니다. 이때 GAN의 구조는 DCGAN을 차용했다고 합니다. 관측치의 label이 주어지지 않았기 때문에 논문에서는 이를 unsupervised learning이라고 정의하고 있습니다. 하지만 Training 과정에 사용되는 이미지들이 정상이라는 점은 알고 있기 때문에 엄밀히 보면 semi-supervised 방식이 아닐까 합니다. Training data $\left \langle l_m \right \rangle$는 다음과 같이 정의합니다.

  • $I_m$ :  $a \times b$ 크기의 정상 망막 이미지 $(m = 1,2, ... , M)$ 
  • $x_{k,m}$ :  $I_m$ 에서 랜덤으로 추출된 $c \times c$ 크기의 2D 이미지 패치

   정상 데이터로 Generator를 학습시킨다는 것은 $x = G(z)$의 매핑을 학습시키는 것입니다. $z$는 잠재 공간 $\mathcal{Z}$로부터 샘플링된 input noise의 1차원 벡터이고, $x$는 manifold $\mathcal{X}$를 따라 분포하는 2차원 이미지입니다.  

   정상 이미지들이 이런 manifold를 이루고 있다고 하면 manifold위의 점들은 각각 다른 정상 이미지 패치를 나타냅니다. 하지만 비정상 이미지는 이 manifold 바깥에 위치하게 되겠죠. 여기서 제일 중요한 점은 정상데이터로 학습시킨 GAN의 Generator가 $z$에서 $x$로의 매핑을 나타낸다는 것입니다. 

 

   Testing 과정에서는 비정상 데이터와 정상 데이터를 둘 다 사용하고 label 또한 주어져 있습니다. Testing data $\left \langle y_n, l_n \right \rangle$는 다음과 같이 정의합니다.

  • $y_n$ : 새로운 testing data $J$에서 추출된 $c \times c$ 크기의 이미지
  • $l_n \in \{0,1\}$ : 각 이미지에 대한 binary ground-truth label

 

   (a) 그림은 모델의 전체 모델 구조를 나타냅니다. 학습 과정은 GAN과 동일합니다. random noise $z$를 샘플링해서 Generator의 인풋으로 주어서 $G(z)$를 만들어 냅니다. 그리고 이를 실제 이미지와 구분할 수 있는 Discriminator $D$ 의 인풋으로 넣어서 이로부터 나오는 loss를 역전파하여 Generator와 Discriminator를 업데이트합니다. 

   Testing 과정에서는 비정상 데이터와 정상 데이터를 둘 다 사용하는데 이 때 (b) 그림이 Discriminator의 가장 마지막 convolution layer를 t-SNE 알고리즘으로 시각화한 것입니다. 파란색 정상 이미지와 빨간색 비정상 이미지가 확연히 구분되어 있는 것을 볼 수 있습니다. 

 

Mapping new Images to the Latent Space


   Training을 마치면 모델은 $z$로부터 $x$로 가는 매핑 $G(z)$를 학습한 상태입니다. 하지만 이 반대의 경우 $x$에서 $z$로 가는 매핑은 알지 못하는 상태입니다. 새로운 비정상 이미지가 인풋으로 주어질 때를 고려하면 우리는 이 inverse mapping이 필요합니다. 

   DCGAN에서 noise $z$의 값을 조금씩 조정해 가면서 이미지를 생성하면, 이미지가 서서히 바뀌었던 것을 기억하시나요?

Walking in the latent space

DCGAN 논문에서는 'Walking in the latent space'라를 표현을 사용했습니다. 따라서 잠재 공간 상에서 가까이 있는 두 $z$를 뽑으면 굉장히 비슷한 두 이미지를 생성하게 됩니다. 그렇다면 쿼리 이미지 $x$가 주어졌을 때, 매핑되는 $z$를 얻기 위해서는 generator가 최대한 $x$와 비슷한 이미지를 만들도록 $z$를 움직이면 되지 않을까요? 최적의 $z$를 찾기 위한 과정은 다음과 같습니다. 이는 모두 Testing 과정에서 이루어지며, Training 과정에서 학습된 Discriminator와 Generator의 파라미터는 모두 고정된 상태입니다.

Finding the best $z$

  1. $z_1$을 랜덤하게 샘플링합니다.
  2. 이를 학습된 Generator에 인풋으로 넣습니다.
  3. 생성된 이미지 $G(z_1)$를 보고 $z_1$의 coefficient를 업데이트합니다.
  4. 1-3을  $\Gamma$번 반복해서 $x$와 가장 비슷한 이미지 $G(z_\Gamma)$를 찾습니다. 그러면 잠재 공간 $\mathcal{Z}$ 상에서 $z$의 최적의 위치를 찾을 수 있습니다. 

이 때, 노이즈 자체를 업데이트하는 것이 아니라 $z$의 coefficient를 업데이트하는 것을 주의하세요.

 

Loss function to find best $z$


   $z$의 coefficient를 업데이트하려면 기준이 될 loss function을 정의해야겠죠. loss function은 residual loss와 discrimination loss 두 부분으로 나누어집니다.

 

  • Residual loss

$$\mathcal{L}_R(z_\gamma) = \sum \left | x-G(z_\gamma) \right |$$

   생성된 이미지 $G(z)$와 쿼리 이미지 $x$가 얼마나 일치하는지를 나타냅니다. 만약 완벽한 generator $G$를 학습해서 완벽한 매핑 $z \mapsto z$를 얻었다면 $x$와 $G(z)$는 완벽히 일치할 것이고 residual loss는 0이 될 것입니다.

 

  • Discrimination loss

$$\mathcal{L}_D(z_\gamma) = \sum \left | f(x)-f(G(z_\gamma)) \right |$$

   생성된 이미지가 학습된 manifold $\mathcal{x}$ 위에 있도록 강제합니다. adversarial training에서 실제 이미지의 discriminator loss와 같은 역할을 합니다. 하지만 논문에서는 discriminator의 출력 스칼라 값을 사용하는 대신 discriminator의 중간 layer $f(\cdot)$의 출력으로 나오는 intermediate feature representation을 사용했습니다. 이를 통해 더 풍부한 의미를 가지는 표현을 만들 수 있었다고 합니다.

 

Residual loss와 Discriminator를 합친 최종 loss는 다음과 같습니다. 

$$ \mathcal{L}(z_\gamma) = (1-\lambda)\cdot\mathcal{L}_R(z_\gamma) + \lambda\cdot\mathcal{L}_D(z_\gamma)$$

새로운 샘플 $x$가 anomaly인지 아닌지 판별하려면 이 loss값을 그대로 anomaly score로 사용하면 됩니다.  그리고 이미지의 어떤 부분이 비정상인지를 판별하기 위해서는 Residual score $x_R = \left | x-G(z_\Gamma) \right |$를 사용합니다. 이를 통해 원래 이미지 $x$와 생성된 이미지 $G(z_\Gamma)$가 다른 부분을 감지할 수 있습니다.

 

Experiments


실험 결과를 볼까요? 첫 번째 행은 실제 입력 이미지입니다. 두번째 행은 논문에서 제시한 방법으로 새로 생성한 이미지를 나타냅니다. 실제로 왼쪽 두 블록은 정상 이미지인데 원래 이미지와 새로 생성된 이미지가 매우 유사한 것을 볼 수 있습니다. 반면 가장 오른쪽 블록의 비정상 이미지의 경우 학습된 generator가 원래 이미지를 제대로 복원하지 못합니다. 생성된 이미지와 원래 이미지를 픽셀끼리 비교하면 어떤 부분이 비정상인지를 알려주는 marker를 얻을 수 있게 됩니다. 

지난 4월달에 연구단 초대로 영국 옥스포드 대학교에서 박사과정 중이며 구글 딥마인드에서 파트타임 연구원으로 재직중인 김현직 연구원이 연구주제 Interpretable Models in Probabilistic Deep Learning에 대해 세미나 발표를 해주셨습니다. 김현직 연구원은 ICML, AISTATS, NerIPS, ICLR 등 해외유수학회에 관련주제로 논문을 발표하였습니다. (https://hyunjik11.github.io/)
세미나에서는 딥러닝 모델을 이해하는 방법 등의 이론적인 부분과 모델 개발에 관한 유익한 내용을 전달해 주셨습니다. 

 

아래 두 논문을 중심으로 발표해 주셨고, 발표자료는 저작권 이슈로 공개하지 못함을 양해 부탁드립니다. 

https://arxiv.org/abs/1802.05983

 

Disentangling by Factorising

We define and address the problem of unsupervised learning of disentangled representations on data generated from independent factors of variation. We propose FactorVAE, a method that disentangles by encouraging the distribution of representations to be fa

arxiv.org

https://arxiv.org/abs/1901.05761

 

Attentive Neural Processes

Neural Processes (NPs) (Garnelo et al 2018a;b) approach regression by learning to map a context set of observed input-output pairs to a distribution over regression functions. Each function models the distribution of the output given an input, conditioned

arxiv.org

 

영문요약문:

As Deep Learning (DL) solutions to real-world problems are becoming increasingly common, DL researchers are striving to better understand the models that they develop. The community has been using the term ‘interpretability’ to describe models and methods that help us achieve this rather vague goal. However many claim that deep models are inherently uninterpretable due to their black-box nature, and stop paying attention to interpretability in deep models on these grounds. In this talk, we show that ‘deep’ and ‘interpretability’ are not mutually exclusive terms, hence it is both possible and necessary to devise interpretable deep models. We first clarify what is meant by the term ‘interpretability’, by listing its desiderata and properties. We then introduce examples of deep probabilistic models that enjoy various properties of interpretability: the talk will cover FactorVAE (http://proceedings.mlr.press/v80/kim18b.html), a model for learning disentangled representations, and the Attentive Neural Process (https://arxiv.org/abs/1901.05761), a model for learning stochastic processes in a data-driven fashion, focusing on their applications to image data.


Bio:

Hyunjik Kim is a Ph.D. student in Machine Learning at the University of Oxford, supervised by Prof. Yee Whye Teh in the Machine Learning group at the Department of Statistics. In parallel, he works for DeepMind at the Google London office as a research scientist. His research interests lie at the intersection of Bayesian Machine Learning and Deep Learning, especially interpretable models that arise in this intersection.