본 게시물에서는 "A neural network constructed by deep learning technique and its application to intelligent fault diagnosis of machines" (Jia et al. 2017) 논문을 리뷰하도록 하겠습니다. 이 논문에서는 bearing fault detection 문제를 해결하기 위해 Autoencoder 모델을 사용했습니다. 

 

Introduction

저자는 먼저 bearing fault detection에 전통적인 오토인코더를 적용하는 것에 대해 두 가지 문제를 지적했습니다. 첫 번째는 classifier에 넣기 위해 feature를 추출할 때, 사실 너무 비슷한 feature가 많다는 것입니다. 따라서 실제로 분류에 영향을 미치는 feature는 몇 개 되지 않는 문제가 발생합니다. 또한 전통적인 오토인코더를 통해 학습된 feature들은 shift-variant한 성질을 가지고 있으며, 이로 인해 오분류가 발생하게 됩니다. shift-variant한 특성이 무엇인지는 뒤에서 더 자세히 설명하도록 하겠습니다. 이 논문에서는 NSAE-LCN (Normalized Sparse Autoencoder - Local Connection Network)이라는 모델을 제시하여 앞서 말한 문제들을 해결하려고 노력했습니다. 

 

Shortcomings of traditional autoencoders

전통적인 오토인코더의 문제점을 더 자세히 살펴보도록 하겠습니다. 첫 번째 문제는, 충분히 다양한 feature가 생성되지 않는다는 점입니다. 오토인코더는 raw signal 데이터에 weight matrix를 곱함으로써 feature를 추출하기 때문에, 적절한 weight matrix를 얻는 것이 중요합니다. weight matrix의 각 행은 basis vector인데, 오토인코더를 더 잘 활용하기 위해서는 단지 좋은 basis vector를 뽑는 것뿐만 아니라 각 벡터가 다른 정보를 담고 있어야 합니다.

두 번째 문제는 데이터가 shift-variant할 경우 오토인코더 모델을 그대로 적용하기 어렵다는 것입니다. 아래 그림의 두 데이터 a, b는 비슷한 fault impact를 가지고 있지만, T2만큼의 time shift가 있습니다. 전통적인 오토인코더는 이 두 데이터가 비슷하다는 것을 알아내기 어렵습니다. 반면 이 논문의 모델은 local feature를 뽑음으로써 이러한 문제를 해결할 수 있다고 합니다. 

 

Sparse Autoencoder

NSAE를 보기 전에 먼저 전형적인 sparse autoencoder를 보도록 하겠습니다. unlabeled data $\{x_m\}^M_{m=1}$이 주어졌을 때, encoder, decoder의 구조는 다음과 같습니다. hidden layer $h_m$을 sparse하게 만들기 위해 KL divergence term이 목적 함수에 추가됩니다. 이는 activation 값의 평균에 페널티를 줘서 hidden layer에 0에 가까운 값이 많아지도록 합니다. 

Model architecture of sparse autoencoder

 

Proposed Method - NSAE

이 논문에서 제안하는 NSAE는 traditional sparse autoencoder와 달리 다음과 같은 네가지 특징을 가지고 있습니다. (1) Activation 함수로 Sigmoid 대신 ReLU를 사용하고, (2) bias term을 사용하지 않고, (3) KL divergence term을 L1 norm으로 대체하고, 마지막으로 (4) 목적 함수에 soft orthonormality constraint를 적용합니다. 저는 4번이 이 논문의 핵심 아이디어라고 생각했습니다.

논문에서 제시한 아이디어를 그림으로 나타낸 것입니다. $W^TW = I$가 되도록 하는 soft orthonormality constraint를 통해 오토인코더의 weight matrix가 행마다 다른 정보를 학습하게 됩니다.

 

Proposed Method - NSAE-LCN

Normalized sparse autoencoder를 이용한 local connection network의 구조는 아래 그림과 같습니다. 하나의 sample을 생각해 보면, 먼저 raw vibration signal을 여러 개의 조각으로 나눕니다. 그리고 여기서 $N_S$개의 조각을 랜덤으로 뽑아서 Normalized sparse autoencoder의 input으로 넣습니다. NSAE의 weight matrix, $W_{loc}$은 아래 그림처럼 의미 있고, 동시에 다양한 피쳐들을 뽑아내도록 학습됩니다. 이 $W_{loc}$을 input layer의 segment와 각각 곱함으로써 feature를 추출하는 것입니다. 또한 shift-invariant한 feature를 뽑아내기 위해서 local layer의 값들에 평균을 취합니다. 이로써 time shift가 있더라도, local한 feature를 잘 발견할 수 있게 됩니다. 마지막 output layer는 softmax classifier로서, bearing fault condition을 판별합니다.

 

 

Experiment Result

실험 결과는 다음과 같습니다. 다른 논문들과 마찬가지로 CWRU의 12K dataset을 사용했습니다. 전체 데이터 중 25%를 학습에, 나머지 75%를 검증에 사용했다고 합니다.

오토인코더의 weight matrix $W_loc$의 각 행을 시각화한 그림이 재미있었습니다. (a)와 (b)는 각각 NSAE의 벡터들을 시간 도메인, 주파수 도메인으로 시각화한 것이고, (c)와 (d)는 SAE의 벡터들을 시각화한 것입니다. 이 논문에서 주장한 것처럼, NSAE를 통해 추출된 feature들이 훨씬 다양한 양상을 보입니다.

댓글을 달아 주세요

ICCV 2019 Review

카테고리 없음 2019. 10. 31. 20:11 Posted by woojeong

얼마 전 서울에서 열린 2019 ICCV에 다녀왔습니다. 그 중 가장 기억에 남는 논문들을 간단하게 정리하겠습니다.

SinGAN: Learning a Generative Model from a Single Natural Image (Shaham et al.) (paper)


ICCV 2019에서 Best paper award를 받은 논문입니다. 이름에서도 알 수 있듯이 하나의 이미지로 학습하는 generative model을 제안했습니다. SinGAN은 아래 그림과 같이 여러 단계의 fully convolutional GAN으로 이루어져 있는데, 각각의 GAN 모델은 이미지에서 다른 scale의 패치 분포를 학습합니다. 인풋으로 다른 노이즈를 줌으로써, 다양한 크기와 화면 비율을 가진 output을 만들 수 있습니다. 이 output 이미지의 전체적인 구조는 학습한 이미지와 비슷합니다. 하지만 위 그림처럼 산봉우리의 개수나 새의 대형이 달라지는 다양한 이미지들을 생성하게 됩니다.

 

 

저는 아래 사진의 결과가 흥미로웠는데요, 기존의 연구들이 사진의 texture만 모사할 수 있는 것과 달리 SinGAN은 input paint에 맞추어 실제와 같은 이미지를 만들어냈습니다. 

 

Semi-Supervised Learning by Augmented Distribution Alignment (Wang et al.) (paper)


이 논문에서는 Augmented Distribution Alignment라는 이름의 semi-supervised 학습 방식을 제안합니다. semi-supervised learning에서는 보통 labeled data가 unlabeled data보다 훨씬 적기 때문에 "Empirical Distribution Mismatch"라는 문제가 발생합니다. 위 그림에서 labeled data의 분포와(왼쪽 위), unlabeled data의 분포(가운데 위)가 다른 것처럼요. 이 논문에서는, 두 분포가 유사해지도록 adversarial training을 한 후 data augmentation을 하면 실제 분포와 더 유사한 샘플을 얻을 수 있다는 아이디어를 제안했습니다. ADA-net의 구조는 다음과 같습니다. 

 

 

Why Does a Visual Question Have Different Answers? (Bhattacharya et al.) (paper)

 


이 논문은 아이디어 자체는 간단하지만 흥미로운 태스크인것 같아서 소개하려고 합니다. Visual QA에서 사람도 잘 대답하지 못하는 문제일 경우, 모델은 어떻게 대처할까요? 예를 들어 위 그림의 두번째 이미지를 보면, 이 사진에 있는 식물이 뭐냐고 물어봤을 때 사람도 한번에 대답하기 어려울 것입니다. 이 논문에서 제시한 dataset에서는 대답이 갈리는 이유를 9가지로 분류합니다. 모호하거나(ambiguous), 답을 여러가지로 말할 수 있거나(synonyms), 주관적이거나(subjective)와 같은 것들이죠. 

이 이유를 맞추기 위해서 논문에서 제시한 모델입니다. 왜 이 질문이 어려운가? 에 대한 9개의 답중 하나를 고르는 classification을 수행합니다. 인풋으로 사진과 질문을 넣고, 이를 기반으로 질문의 답을 예측합니다. 질문의 답을 예측한 벡터가 구해지면, 이미지, 질문 벡터와 concat해서 최종 output을 구합니다. 제가 포스터를 구경할 때 많은 사람들이 "대답하기 어려운 이유를 알아내서 어디에 활용할 수 있나?" 라고 질문했는데요, 저도 그 부분이 궁금했습니다. 제 생각에는 input으로 이미지와 질문, 그리고 대답하기 어려운 이유를 같이 넣고 답을 generation하는 모델을 만들면 더 재미있는 태스크가 되지 않을까 합니다.

 

 

이상 ICCV에 발표되었던 논문 3개를 간단하게 정리해 보았습니다. 더 자세한 내용은 full paper를 참고해 주세요. 감사합니다.

댓글을 달아 주세요

  1. xeskinn 2019.11.23 19:17 신고  댓글주소  수정/삭제  댓글쓰기

    감사합니다.

ICCV 2019 HarDNet Review

카테고리 없음 2019. 10. 31. 19:37 Posted by 랏츠베리

ICCV 2019 학회 참석에서 흥미롭게 보았던 HarDNet에 관한 리뷰를 짧게 적어볼까 합니다. HarDNet은 Harmonic Densenet의 약자로 Small, Fast, Accurate 3가지 장점을 부각하며 올해 ICCV에서 한 세션을 차지하였습니다. 관련된 연구 내용은 HardNet: A Low Memory Traffic Network을 참조바랍니다.

 

Abstract


HardNet은 SOTA로 알려진 최근 모델들의 성과들 (low MACs, small model size, high accuracy, etc..) 등이 real world inferencing time에 적합하지 않음을 강조하였습니다. 이들은 연산 과정에서 상당수 오버헤드로 차지하는 Feature Map에 대한 Memory Traffic 요구가 Inference latency의 상당한 영향을 미치고 있는 점을 부각하였고, 특히 그러한 단점이 application들로 활용되는 real-time object detection, high resolution video의 semantic segmentation 등에 대해 치명적이라고 주장합니다. 따라서, 그러한 요구사항이 가장 Dominant한 Network인 Densely Connected Network를 Harmonic Version으로 구현하여 Application의 Needs를 충족할 수 있도록 하였습니다.

Illustrations for DenseNet, LogDenseNet, SparseNet, and the Harmonic DenseNet (HarDNet)

 

Concepts


  본 연구의 컨셉을 짧게 정리하면 다음과 같습니다. 이들의 출발은 DenseNet Block은 Great Efficiency와 Large Memory Traffic의 성질을 띄고 있고, Traditional Compression 방식이 Accuracy Penalty를 감수하고 Memory Traffic을 줄이기 위한 노력을 해왔기 때문에 이들의 장점으로부터 Low Memory Traffic Network를 구현하였습니다. 구체적인 Block 모델링 방식은 아래와 같습니다.

  • Shortcut connection reduction
  • Balanced input/output channel ratio
  • Mainly use Conv3x3 (very few Conv1x1)
  • Conv-BN fusion friendly (Conv -> BN -> ReLU)

구체적인 논의는 링크의 논문을 참고하시면 됩니다.

 

Thanks,

 

Mincheol Park

댓글을 달아 주세요

2019 ICCV 논문 아이디어 정리

카테고리 없음 2019. 10. 30. 16:50 Posted by 우딘
본 게시물은 필자가 2019년 10월 27일부터 진행되었던 ICCV를 참관하고 난 후 인상깊었던 논문 및 아이디어를 포스팅 한 것입니다. 논문 저자가 발표한 presentation 자료에 있었던 그림을 첨부했으며 문제가 될 시 삭제하도록 하겠습니다. 

 

SinGAN: Learning a Generative Model from a Single Natural Image

(Tamar Rott Shaham, Tali Dekel, Tomer Michaeli) [1]


Award Paper중 하나였던 SinGAN의 발표는 굉장히 인상깊었습니다. SinGAN의 목표는 단일 training 이미지의 내부 통계를 알기 위해 unconditional generative model을 학습하는 것입니다. 다른 말로 요약하면 전체 이미지 샘플이 아니라 하나의 이미지 패치를 사용한다는 점에서 기존 GAN과 유사합니다. SinGAN은 multi-scale pipline을 사용하여 이미지 내의 내부 패치 분포를 학습합니다. GAN을 피라미드 형태로 쌓은 후 단일 이미지로부터 각각 다른 크기의 이미지에서 이미지 패치간의 분포를 학습하게 됩니다. 따라서 하나의 단일 이미지에 대하여 다양한 종횡비의 샘플을 뽑아서 training 할 수 있습니다.

 

 

단일 이미지로부터 다양한 이미지 샘플을 생성할 수 있으므로 다양한 task에서 좋은 성능을 냅니다.

 

1. 하나의 학습 이미지로부터 랜덤 이미지를 생성하는 task는 거의 원본과 유사한 fake 이미지를 만들어냅니다. 

 

2. 원본 이미지에 대해서 고해상도의 이미지를 생성하는 task도 우수한 성능을 보입니다. 

 

3. test를 했던 레벨 중 하나의 레벨을 선택해서 다운 샘플링된 페인트 버전을 할당하면 원본 이미지와 비슷한 텍스쳐와 레이아웃을 가진 fake 이미지를 생성합니다. 

소개한 task 외에도 다양한 task에 대한 시연이 ICCV에서 진행되었습니다. GAN에 대한 확장된 연구가 진행되면서 실제 이미지를 뛰어넘는 fake 이미지를 생성해내는것이 정말 인상깊었습니다. 이번 ICCV에서는 GAN에 대한 논문이 많이 발표되었고 앞으로도 GAN에 대한 연구가 활발히 진행될 것이라 전망합니다. 

[1] SinGAN : Learning a Generative Model from Single Natural Image
TAG gan, ICCV 2019

댓글을 달아 주세요

본 게시물에서는 "A deep convolutional neural network with new training methods for bearing fault diagnosis under noisy environment and different working load" (Zhang et al, 2018) 논문을 리뷰하도록 하겠습니다. 이 논문에서는 잡음이 많은(noisy) 환경이나 하중이 달라지는(load shift) 상황에 잘 대응하기 위해 매우 깊은 Convolutional Neural Network 모델을 사용했습니다.

 

Introduction


실제 작업 환경에서는 진동 신호에 잡음이 많이 포함되어 있고 베어링에 가해지는 하중이 변화하기 때문에 딥러닝 모델을 그대로 적용하기 어렵습니다. 이 논문에서는 CNN을 이용해서 두 상황에 잘 대응하는 bearing fault detection 모델을 만들었습니다. 또한 raw signal을 직접 모델의 input으로 넣음으로써, 복잡한 feature 추출 과정이나 noise를 제거하는 과정을 생략했습니다. 

 

Model Architecture of TICNN


모델 구조를 자세히 살펴 보겠습니다. 1D CNN 구조를 사용하고 있는데, 이는 저자 Zhang의 이전 논문 (A new deep learning model for fault diagnosis with good anti-noise and domain adaptation ability on raw vibration signals, 2017)에서 사용한 방식입니다. 이 논문에서는 anti-noise와 domain adaptation ability 능력을 향상시키기 위해 1D CNN 구조에 두 가지 트릭을 적용했습니다. 첫 번째 layer kerner에 dropout을 적용하는 것이고, 매우 작은 batch size로 학습하는 것입니다. 또한 마지막에는 모델의 안정성을 높이기 위해 ensemble learning을 적용했습니다. 모델의 전체적인 구조는 아래 그림과 같습니다. 

먼저 normalized temporal signal이 모델의 인풋으로 들어갑니다. 첫 번째 convolutional layer는 STFT같은 transform 과정을 거치지 않고 raw signal에서 feature를 뽑습니다. 그림을 보시면 첫 번째 layer의 convolution kernel 크기는 64로 굉장히 넓은 데 반해, 이어지는 layer의 kernel은 비교적 작은 것을 알 수 있습니다. 넓은 kernel을 사용함으로써 높은 주파수의 noise를 잘 억제할 수 있다고 합니다. 마지막에는 output node가 10개인 softmax layer의 결과로 베어링의 고장 상태를 판별합니다.

 

Kernel with Changing Dropout Rate


Small Mini-Batch Training


 

Ensemble Learning Based on Voting


Experiments


실험에는 CWRU Dataset을 사용했습니다. fault condition은 총 10가지입니다. noisy environment, different load domain 두 케이스에 대해 각각 실험했고 이 논문에서 제안한 TICNN 모델이 가장 좋은 성능을 보였습니다.

 

Data Description


Case Study I: Performance under Noisy Environment


Case Study II: Performance across Different Load Domain


댓글을 달아 주세요