이번 글에서는 NeurIPS에 Spotlight로 선정된 “Temporal Spike Sequence Learning via Backpropagation for Deep Spiking Neural Networks” 논문을 소개해드리려고 합니다.

해당 논문의 자세한 내용은 링크와 github를 참고해주세요

Introduction

- Spiking Neural Network(SNN)은 뇌의 행동을 모방하여 동작할 수 있는 모델로 기존 DNN(Deep Neural Network)와 달리 Time data 또한 영향을 끼치는 모델입니다. 최근 DNN의 많은 에너지 사용 대신 효율적으로 사용하는 뇌를 모방하여 전성비를 올리기 위한 목적으로 Neuronmorphic chip과 더불어 SNN이 개발되고 있습니다.

- DNN의 학습 방식은 gradient descent 기반의 back propagation이 대세이지만, SNN에서는 local 정보를 기반으로 하는 STDP와 SRDP방식과 DNN의 backpropagation방식을 모방한 방식으로 나뉘어 있습니다.

- SRDP(Spike-Rate Dependency Plasticity)의 경우, presynaptic neuron과 postsynaptic neuron사이의 activation 빈도가 높을 때, 서로의 connection을 강화하는 방향으로 학습하며, STDP의(Spike-Time Dependency Plasticity)는 presynaptic neuron과 postsynaptic neuron 순으로 activation time의 사이 간격이 좁을수록 connection을 강화하고 postsynaptic neuron의 activation이후 presynaptic neuron의 activation이 일어나면 connection을 약화하는 방식으로 진행됩니다.

- 이 논문은 STDP의 connection 강화 측면과 DNN의 Back Propagation(BP) method를 활용하여 학습을 효율적으로 진행할 수 있는 방법론을 제시하였습니다.

Background

- SNN을 적용하기 위한 Hardware(Neuromorphic Chip)의 발전은 빨랐지만, 기존 DNN과 비교할 때 성능이 낮았고, 5개 layer를 넘어가면 저조한 성능을 보이는 등 그를 적용하기 위한 모델의 발전은 더뎌왔습니다.

- 기존의 연구들은 DNN을 학습시킨 후, SNN을 변환하는 시도가 있어왔고, Spike를 통해 다음 neuron에 정보를 전달하는 하는 SNN의 Discrete property를 back propagation에 사용하기 위해 continuous하게 smoothing하여 approximate하는 모습을 보여왔습니다.

- 하지만 이러한 시도들은 All-or-None characteristic을 가진 neuron의 특징 상, smoothing은 target과 precision간의 loss 연산에 있어서 낮은 accuracy를 보였습니다. 또한, approximation한 후의 정확한 spike timing을 알기 위해서 precision에서 많은 time을 요구하여 latency가 발생하는 단점이 있었습니다.

Proposed Model

- Discrete LIF(Leaky Integrated-and-Fire) Model 기반의 모델을 사용하여 Discontinuity하여 non-differentiable을 해결하고자 하였습니다. 기존의 LIF Model이 갖는 모델의 공식은 다음과 같습니다. Spike s에 대한 공식이며, firing하는 시간 t에 대해서 delta함수를 가져 discrete하게 나타남을 알 수 있습니다.

- 또한, postsynaptic current(PSC) a_j(t)에 대해서 incoming spike s_j(t) 는 다음과 같은 1차 미분 관계식을 갖습니다. (Spike response: ϵ , Reset kernel: v )

- 즉, presynaptic neuron j에서 postsynaptic neuron i로 PSC가 전달되어 weight에 의해 가중합이 된 것이 postsynaptic neuron의 membrane voltage u_i 가 변화함을 알 수 있습니다. 이렇게 변화한 voltage는 threshold Vth를 넘으면 spike s_i 가 발생하며 뇌에서 일어나는 탈분극, 재분극, 분극 상태처럼 동작하게 됩니다.

- 위 식을 discrete domain으로 옮기면 LIF model은 다음 식처럼 나타낼 수 있습니다.

TSSL-BP의 Pipeline

- 이렇게 제안된 model을 바탕으로 back propagation을 spatiotemporal domain 기반으로 discontinuity를 갖는 spike를 계산할 수 있습니다. 각 layer의 weight는 Loss기반으로 연산 가능하므로 DNN에서의 back propagation과 유사하게 chain rule을 적용하여 풀이할 수 있습니다.

- 이 식을 hidden layer에서 풀면, 식에 대해서 Loss값의 미분은 아래와 같은 layer l 에 대한 식으로 연결됩니다.

- 하지만, 모든 시간에 대해서 계산한다면 deep SNN에서 time step수만큼의 모든 neural network를 계산해야 하므로 기존 DNN보다 복잡도가 time step수 배만큼 늘어나게 됩니다. 이러한 상황을 억제하기 위해서 논문에서는 2가지의 dependency로 나누어 back propagation method를 제시합니다.

Inter-neuron dependency 와 Intra-neuron dependency 설명

  1. Inter-Neuron Dependency

A. Postsynaptic Current의 증가는 Presynaptic neuron의 발화로부터 오기 때문에, 발화시점의 전압 변화량은 PSC의 변화에 영향을 준다는 의미이며, Postsynaptic Current를 조정하는 weight는 발화 시점 이후만 연산하면 된다는 의미입니다. 아래 식처럼 발화 시점 t_m 을 기점으로 시간의 변화가 t_k시점의 current변화에 영향을 미치기 때문에 이외의 시간을 중심으로 미분하여 구할 필요가 없다는 의미이기도 합니다.

  1. Intra-Neuron Dependency

A. Intra-Neuron은 자신의 발화에 관한 것으로 자기 자신이 fire(발화)를 했을 때, 이후 몇 step동안엔 fire를 reset kernel에 의해 못하게 된다. 이러한 시간 동안에는 연산의 필요성이 없으므로 이를 배제하고 연산하면 된다는 것이다. 예를 들어 t__m 시간에 fire를 하고, reset 시간 도중에 fire가 불가능하므로 그동안은 연산에서 제외하여 불필요한 연산을 줄일 수 있습니다. η_i(t) 가 이러한 membrane potential의 reset에 관여하며 다음과 같은 식에서 전압의 변화에 영향력을 행사합니다.

모델을 기준으로 식을 풀어쓰면 Intra-Neuron Dependency는 다음과 같습니다.

     3. Dependency Combination

- 이러한 Dependency를 결합하여 chain rule에 사용되는 term을 구하여 쓸모없는 구간에서 기억하고 연산하는 것을 막으므로 시간을 절약할 수 있다고 저자는 말하고 있습니다. 아래의 식처럼 Firing 여부에 따라 해당 term이 연산되며, back propagation이 chain rule에 의해서 진행되는지 되지 않는지 확인할 수 있게 됩니다.

Experiment

- 실험의 결과는 다음과 같이 타 SNN의 BP와 비교할 때, 앞서 논문에서 언급한 것처럼 이전 논문들의 긴 time step을 극복하고 짧은 time step 내로 높은 accuracy를 달성하여 precision delay를 줄일 수 있는 결과를 확인할 수 있었습니다. 이를 통해 학습 시간도 단축하여 SNN의 등장 목적을 달성할 수 있을 것이라고 말하고 있습니다.

- SNN의 특징인 일부만 Firing을 실행하여 energy efficiency를 달성하는 데에 있어서 얼마나 잘 달성했는지 CIFAR10과 N-MNIST에 대해 비교하였으며, 이를 현재 DNN에서의 pruning을 연구하는 사람들의 관점에서 바라봤을 때, 많은 node를 pruning하여 sparsity를 달성하여 mobile환경에서도 사용시에 어떤 관점으로 바라봐야 할지에 대한 다음의 실험 결과도 확인할 수 있었습니다.

Conclusion

- 본 논문에서 제안된 방법은 SNN에서 DNN의 Back Propagation Method를 어떻게 끌고 와서 학습시킬지에 대한 내용으로 실제 SNN의 동작방식과 달라 SNN에서 학습시키기 어려운 단점이 있습니다. 하지만, 학습 후, 적절하게 SNN으로 옮겼을 때, 기존의 연구들과 달리 dependency를 두개로 나누어 back propagation시에 적은 time step내로 학습시키는 방법과 feed forward에서 prediction하는 방법에 대해서 제시하고 있습니다. Dependency를 통해 실제 뇌에서 일어나는 탈분극과 재분극의 과정에서 Non-activate되는 시점을 잘라냄으로써 time step의 수를 줄여낸 연구라고 할 수 있습니다.

 

자세한 내용은 full paper를 참고하거나 댓글로 남겨주세요.

 

감사합니다.

 

Minsoo Kang

 이번 글에서는 NIPS 2020에 oral로 선정된 Compositional Explanations of Neurons란 논문을 소개합니다. 해당 논문은 XAI의 interpretability 연구 중 하나로 제안하는 방식을 통해 explanation을 생성하고 이를 통해 Vision과 NLP 딥러닝 모델에 대한 분석을 진행합니다.

 

History

 기존의  Neural network interpretability 연구들은 사람에게 친숙한 explanation을 생성하기 위해 모델 시각화 정보나 입력 수동 검사를 해야하는 한계가 있었습니다. 따라서 최근 “probing datasets”을 사용하여 데이터의 레이블을 이용한 자동 설명 생성 방식이 등장하였습니다. 하지만 이러한 방식은 뉴런의 기능을 atomic한 concept들로 표현하여 지나치게 간단하게 설명합니다. 본 논문은 concept들의 논리적 조합을 통해 더 구체화된 설명을 자동으로 생성하는 방법을 제안합니다.

 

Proposed Procedure

 이 논문에서 제안하는 방법은 Network dissection 논문에서 제안하는 방식을 확장하여 연구되었습니다.

 

1. Network Dissection

 Network dissection은 입력에 대해 특정 뉴런(n)의 activation과 높은 유사도를 지닌 concept(C)을 해당 뉴런의 기능으로 여깁니다. Network dissection에서 제안하는 방식을 수식화하면 아래와 같습니다.

 C는 atomic concept으로 함수로써 입력된 x가 해당 concept의 요소라면 1을 아닐 땐 0을 반환합니다. 유사도 함수(δ)는 모든 입력 x에 대한 C의 값과 뉴런의 activation에 threshold를 적용한 binary mask(Mn)의 IOU를 구합니다.

2. Compositional search

  Network dissection의 방식은 각각의 concept 하나에 관해서만 설명할 수 있습니다. 저자가 제안하는 방식은 concept들을 logical form으로 표현하고, logical form들을 여러 개의 조합 연산자(ω)를 사용해 확장된 logical form을 만들며 explanation을 생성합니다. (탐색 방식으로는 beam search를 이용하였습니다.)

 조합 연산자는 vision 모델에서는 AND, OR, NOT을 사용하고 NLP 모델에선 AND, OR, NOT과 Neighbor를 사용하였습니다. Neighbor 연산자는 NLP 모델의 뉴런이 유사한 의미를 지닌 단어들에 대해서도 활성화되는 것을 감지하기 위해 사용되었으며, 특정 임베딩 공간에서 하나의 단어 concept과 가장 가까운 5개의 단어 concept을 추출하여 OR 연산을 진행합니다. 

 

Experiment

 저자는 compositional explanation을 사용하여 3가지 의문에 대해 image classification과 Natural Language Inferrence(NLI) task에서의 답변과 분석을 진행했습니다. 

 

1. 뉴런들이 조합된 개념들을 학습하는가?

  • Image Classification : Vision 모델에서 의미 있는 추상화(abstraction)를 학습한 뉴런들과 연관되지 않은 다른 concept들로 학습된 뉴런들이 나타났습니다. 또한, 논문에서는 의미있는 추상화를 학습한 뉴런을 3가지(1. 어휘적 의미가 일관된 추상화, 2. 어휘적 의미가 일관되지 않은 추상화, 3. 특성화된 추상화)로 분류합니다.
  • NLI: 대부분의 뉴런은 간단한 어휘적인 특징들로 학습된 것을 확인하였습니다. 이때의 어휘적 특징들은 class 예측과 높은 PMI(pointwise mutual information)을 가졌습니다. 이러한 얕은 heuristic으로 데이터의 편향이 학습되어 모델은 out-of-distribution data에 대해 좋은 예측을 못하게 된다 합니다.

 

 

2. 해석 가능한 뉴런들이 모델의 성능에 영향을 미치는가?

 이 질문에 답하기 위해 특정 뉴런이 강하게 activation 되었을 때(Mn(x) = 1)의 모델 성능을 측정하였습니다.

  • Image Classification: 해석 가능성이 높은 뉴런이 활성화 되었을 때 모델의 높은 성능을 나타내었습니다. 
  • NLI: image classification과 반대의 경향을 보였습니다. Vision task와 다르게 NLI에서는 제안한 방법에서 사용한 concept들은 모델의 분류에 필요한 정보에 비해 너무 간단합니다. 따라서 max formula length를 키울수록 결정 규칙들은 그저 데이터의 그럴싸한 상관관계로 만들어집니다.(이는 max formula lenth를 증가할수록 모델 성능과의 피어슨 상관계수 값이 음의 방향으로 커지는 것으로 알 수 있습니다.) 따라서 저자는 적합한 concept space를 정의하면 task 성능과 뉴런의 행동 간의 상관관계를 잘 구별할 수 있을 것이라 합니다.

 

3. 생성된 explanation을 이용하여 모델의 행동을 변경할 수 있는가?

 마지막 layer의 뉴런과 분류할 class 간의 weight를 이용하여 모델의 행동을 조작할 수 있는 “copy-paste” adversarial example을 생성할 수 있음을 보였습니다.

 

 

Conclusion

 본 논문에서 제안된 방법은 뉴런의 기능에 대한 compositional explanation을 자동 생성하여 정확한 해석을 할 수 있게 해 줍니다. 또한, 이렇게 생성된 설명을 통해 1. 뉴런에 학습된 추상화, 다의미성과 학습된 그럴싸한 상관관계를 판단할 수 있게 하고 2. downstream task에서의 성능에 영향을 미칠 뉴런을 구별할 수 있게 해주며 3. 모델의 예측을 변경할 수 있는 “copy-paste” adversarial example을 만들 수 있습니다.

 

자세한 내용은 full paper를 참고하거나 댓글로 남겨주세요.

 

감사합니다.

Dongjin Kim

Zero-shot Adversarial Quantization(CVPR 2021, oral)

카테고리 없음 2021. 4. 21. 18:36 Posted by 벼랑위의당뇨-

오늘 소개드릴 논문은 "Zero-shot Adversarial Quantization"으로 CVPR 2021에 oral paper로 accept된 논문입니다. 해당 논문을 참조하시려면 논문링크github을 참고해주세요

 

 

Overview


  • 양자화 논문이지만 새로운 양자화 방법론이 아닌 새로운 fine-tuning방법론을 제시합니다.
  • 매우 낮은 비트( < 8bit)로의 양자화는 정보 손실이 크기 때문에 정확도 보정을 위해 fine-tuning 필수적입니다. 하지만 Fine-tuning에는 training-set이 필요합니다.
  • Fine-tuning 필요한 데이터를 generative model 이용하여 생성, 생성한 데이터를 이용하여 Fine-tuning 진행합니다매우 낮은 비트로의 양자화에서 SOTA 정확도를 달성하였습니다.

[그림 1] Overview of ZAQ(Zero-shot Adversarial Quantization) framework

 

 

Introduction


[표 1] Fine-tuning을 진행하지 않았을 때 양자화 정확도

  • W*A* : weight 양자화 비트, activation 양자화 비트
  • RQ : fine-tuning을 진행하지 않았을 때 정확도

 

  • 위의 표를 보면 알 수 있듯이 매우 낮은 비트( < 8bit)로의 양자화는 정보 손실이 크기 때문에 정확도 보정을 위해 fine-tuning이 필수적입니다.
  • 하지만 개인정보, 보안등의 이유로 기존 학습 데이터에 접근이 불가능한 경우가 종종 존재합니다. 따라서 Data-free quantization에 대해 다양한 연구가 진행되어 왔습니다.
  • 본 논문에서는 생성모델을 이용하여 데이터를 생성, 생성한 데이터를 이용하여 양자화 모델에 fine-tuning을 진행하여 매우 높은 정확도를 보였습니다.

 

 

Background


  • 개인정보 보호와 법적인 문제에 따라 서버추론이 아닌 온디바이스 추론의 요구가 점점 증가하고 있습니다.
  • 기존의 무겁고 정확한 모델을 온디바이스 추론이 가능하도록 경량화 하는 기법 중 하나가 바로 양자화(Quantization) 방법론입니다.
  • Deep Compression논문에 따르면 45nm CMOS공정의 경우 부동소수점 덧셈에 0.9pJ, 32bit SRAM cache 접근에 5pJ이 소비되는 반면 32bit DRAM memory접근에는 무려 640pJ이 소비된다고 합니다.
  • 부동소수점으로 되어 있는 딥러닝 모델을 INT8, INT6등으로 양자화를 진행한다면 DRAM memory접근하는데 소비되는 에너지를 획기적으로 줄일 수 있기 때문에 양자화는 가장 흔히 사용되는 경량화 기법 중 하나입니다.

[그림 2] INT8 quantization

  • 양자화는 [그림 2] 같은 과정을 매 레이어마다 진행합니다.
    1. Input Feature Map을 원하는 비트로 양자화 (위의 그림의 경우엔 INT8)
    2. 이미 양자화 되어 있는 weight (위의 그림의 경우엔 INT8)와 연산을 진행합니다.
    3. 계산 결과를 Float32로 변환합니다. (Dequantization)
  • 이때, 이전 레이어의 Dequantization scale factor와 다음 레이어의 quantization scale factor를 알고있다면 두 scale factor를 곱하여 dequantization과정을 생략할 수 있습니다. 이를 Requantization이라 합니다.([그림 3] 참고)

[그림 3] Requantization 설명
[그림 4] Quantization을 통한 approximation

  • [그림 4]를 보시면 양자화에 대한 직관적인 이해를 할 수 있는데요. weight 또는 activation의 최솟값이 (INT8 양자화의 경우) -128에, 최댓값이 127에 매핑되는 것을 보실 수 있습니다. 이에 대한 자세한 수식은 다음과 같습니다.

[수식 1] Quantization equation

q : quantization value

S: Scale factor

v : full-precision value(fp32)

Z : zero point(offset)

 

 

Related Work


DFQ


[수식 2] conventional inference
[수식 3] DFQ method (weight equalization trick) equation

  • 양자화는 weight 또는 activation의 최솟값 및 최댓값을 양자화된 값의 최소, 최대로 대응시키는 작업입니다. 만약 최솟값, 최댓값의 차이가 매우 크다면 정보 손실이 매우 클 것이고 이는 필연적으로 정확도 하락으로 이어지게 됩니다.
  • 실예로 MobileNet-V2의 경우 per-layer 양자화를 진행할 경우 정확도가 1%가 됩니다.
  • DFQ는 이를 보정하기 위한 방법론으로 ReLU 활성함수에서는 상수 배가 보존된다는 것을 이용하여 ([수식 2, 3] 참고) weight의 스케일을 맞춰준 후 양자화를 진행하는 방법론입니다.
  • 하지만 fine-tuning이 없기 때문에 매우 낮은 비트로의 양자화를 진행할 경우 정확도 손실이 크다는 단점이 있습니다.

 

 

ACIQ


  • backround에서 설명드린 방법으로 양자화를 진행할 경우 중요한 정보, 중요하지 않은 정보(outlier)가 동일하게 양자화가 됩니다.
  • ACIQ논문에서는 outlier를 제거하는 방법론을 제시하여 outlier를 제거한 후 양자화를 진행하여 정확도를 보정하는 연구입니다.
  • DFQ와 같이 fine-tuning작업이 없기 때문에 매우 낮은 비트로의 양자화를 진행할 경우 정확도 손실이 불가피합니다.

 

 

ZeroQ


  • 데이터를 생성한 후 생성한 데이터를 이용하여 fine-tuning을 진행하는 연구입니다.
  • DeepInversion(자세한 내용은 링크 참고)과 같이 input space(image)를 업데이트하는 방법으로 데이터를 생성합니다.
  • input space(image)를 업데이트하는 손실함수는 BatchNorm statistic loss를 사용하는데, 이는 input feature map의 평균과 분산을 batchnorm layer가 가지고 있는 평균, 분산과 동일하도록 학습을 진행하는 손실함수 입니다.
  • 학습된 모델의 BatchNorm layer 가지고 있는 running mean, running variance 학습데이터를 이용하여 구한 값이지만 데이터셋전체에 대한 값이기에 모든 학습 데이터를 커버하기엔 부족하다는 단점이 있습니다.

 

 

GDFQ


  • ZeroQ와 같이 데이터를 생성한 후 생성한 데이터를 이용하여 fine-tuning을 진행하는 연구입니다.
  • ZeroQ 다른 점은 input space(image) 업데이트하는 것이 아닌 생성모델을 이용하여 데이터를 생성합니다.
  • 손실함수가 ZeroQ와 매우 유사하게 BatchNorm Statistic loss를 사용하기때문에 ZeroQ와 동일한 단점을 가지고 있습니다.

 

 

Proposed Method


  • 본 논문에서 제안하는 zero-shot adversarial quantization(ZAQ)에 대해 알아보겠습니다.
  • 본 논문의 주아이디어는 다음과 같습니다.
    • 기존 모델(P)와 양자화 모델(Q)간의 차이가 적다면, Q는 잘 양자화 된 모델이다.
    • P와 Q간의 차이를 줄이는 방향으로 fine-tuning을 하면 Q는 잘 양자화 된 모델이 된다.

[그림 5] Overview of ZAQ(Zero-shot Adversarial Quantization) framework

  • ZAQ의 pipeline은 굉장히 간단합니다.
    1. 양자화 모델 Q를 생성합니다.
    2. 생성모델(G)는 P와 Q간의 차이를 극대화 시키는 방향으로 데이터를 생성합니다.
    3. G가 생성한 데이터를 이용하여 Q는 P와의 차이를 줄이는 방향으로 fine-tuning을 진행합니다.
  • pipeline의 2와 3이 반대되므로 Adversarial이라 할 수 있습니다. 이를 목적함수(손실함수)로 자세히 살펴보도록 하겠습니다.

 

  • 생성모델 손실함수는 다음과 같습니다.

[수식 4] Genrative model loss function

  • [그림 5]를 참고하면 알 수 있듯이 Do는 P와 Q의 출력의 불일치를 의미합니다.
  • Df는 P와 Q의 inter featuremap간 불일치를 의미합니다.
  • 즉, P와 Q의 출력 및 inter featuremap간 불일치를 증가시키는 방향으로 생성모델의 학습이 진행됩니다.
  • 하지만, P와 Q간 불일치만 증가시키는 방향으로 학습을 진행할 경우 생성모델은 fine-tuning에 도움이 되지 않는 데이터를 생성해 낼 수도 있습니다. 따라서 저자들은 아래와 같은 Regularizer term을 추가하였습니다.

[수식 5] Generative model regularizer term

 

  • Fine-tuning 손실함수는 다음과 같습니다.

[수식 5] Fine-tuning loss function

  • 양자화된 모델 Q는 P와의 불일치가 적을수록 좋은 모델입니다. 따라서 Do(output 불일치 정도)와 Df(inter featuremap 불일치 정도)를 모두 최소화 시키는 방향으로 fine-tuning을 진행합니다.
  • 생성모델은 P와 Q간의 차이를 극대화 시키는 방향으로 어려운 데이터를 생성하고, 생성된 어려운 데이터에 대해 P와 Q의 차이를 줄이도록 Q가 학습을 진행합니다.
  • Loss function detail

[수식 6] loss function detail

  • Do는 P와 Q의 output의 L1 norm을 통해 구합니다. (N은 output node 개수)
  • Df는 P와 Q의 inter feature map간의 L1 norm을 통해 구하는데, 여기서 주의해야 할 것은 P는 full-precision 모델, Q는 양자화 모델입니다. 즉, P와 Q는 inter feature map의 자료형이 다르므로 L1 norm을 direct하게 구할 수 없습니다.
  • 때문에 저자들은 CRM(Channel Relation Map)을 제안합니다.

[그림 6] CRM

  • Inter feature map을 channel-wise하게 1차원으로 펼친 뒤, 자신과의 dot product를 통해 cosine similarity map을 구합니다. 이는 style-transfer에서 사용하는 gram matrix와 굉장히 유사한데, 차이점이 있다면 gram matrix는 배치사이즈를 고려하지 않은 채 1차원으로 펼친 뒤, cosine similarity map을 구하지만 CRM은 배치사이즈를 고려하여 channel-wise하게 1차원으로 펼친 뒤 cosine similarity map을 구합니다.
  • P와 Q의 inter feature map의 CRM을 각각 구한 뒤, CRM의 L1 norm을 통해 Df를 구할 수 있습니다.
  • inter feature map은 매 레이어마다 존재하므로 저자들은 매 레이어의 산술합이 아닌, 가중합을 통해 최종적으로 Df를 구하는데 매 레이어의 가중치에 대한 식은 [수식 7]과 같습니다.

[수식 7] Df weight equation

  • CRM의 L1 norm을 모든 레이어에 대해 softmax를 취하여 weight를 구하고, 이를 매 에폭마다 누적하여 계산합니다.(EMA: Exponential Moving Average)

 

 

Experiments


  • Classification Task

[표 2] classification problem result

  • 관련연구들에 비해 높은 정확도를 보이는 것을 확인할 수 있습니다. 2bit라는 매우 낮은 비트에 대해서도 준수한 정확도를 보입니다.

 

  • Detection Task
    • Dataset : VOC2012 (20 classes, 11,540 images)
    • Model : SSD (Backbone is MobileNet-V2)
    • Evaluation Metric : mAP (higher is better)

[표 3] Detection problem result

  • Detection task또한 관련연구에 비해 높은 정확도를 달성한 것을 확인할 수 있고, real data를 전혀 사용하지 않았음에도 FT(Use original training set to fine-tune)에 필적하는 성능을 달성하였습니다.

 

 

Conclusion


  • original data에 대한 접근이 전혀 없음에도 굉장한 성능을 내는 것이 놀라웠던 논문이고, CRM이라는 새로운 개념을 제시하여 output만 일치시키는 fine-tuning이 아닌, inter feature map또한 일치시키도록 하여 높은 정확도를 달성했다는 점이 재밌었습니다.
  • 이상으로 "Zero-shot Adversarial Quantization" 논문 리뷰를 마치겠습니다. 감사합니다.

<Generative model>

Generative model(생성 모델) 기존의 데이터셋 X 분포를 근사하는

새로운 data 생성하는 것으로 기존의 데이터셋 x 나타날 있는 확률 분포 p(x)

구하는 것이라고 생각할 있습니다. 이는 기존의 discriminative model과는

차이점이 있는데, discriminative model이란 데이터 x 주어졌을때, 그에 해당하는 레이블

Y 나타날 있는 조건부 확률 P(x|y) 구하는 입니다. 그렇기 때문에 discriminative model

레이블 y정보가 있어야 하기 때문에 supervised learning 범주에 속합니다.

이와 반대로 generative model 레이블 y 대한 정보없이 데이터 x 주고 P(x|x) = P(x)

근사하는 확률 분포를 찾는 semi-supervised learning이라고 있습니다.

이러한 generative model 활용한 대표적인 딥러닝 기술로 현재 무궁무진하게 발전하고 있는

GAN(generative adversial network) 있습니다. GAN 기본적인 학습방향을 쉽게 얘기한다면 서로

반대되는 목적을 가진 모델 2개가 서로 상충하는 목표를 향해 학습하면서 서로를 이기기 위해 더욱 발전하는 구조로 만들어져 있습니다.

현재까지 정말 다양한 GAN 구조가 논문으로 나왔고, 이에 관련된 정보는

추후에 깊게 공부하여 자세하게 업로드를 하도록 하겠습니다.

 

 

<Metric for generative model>

해당 리뷰에서는 이런 generative model 활용하여 생성된 data 생성이 되었는지 평가할 있는 metric

대해 연구한 논문을 소개해보겠습니다

예를 들어 image 생성한다고 하면, 얼마나 image generative model 학습시킨 dataset 비슷한지,

얼마나 사람의 눈으로 보기에 natural image인지, 실제 이미지에 비해 얼마나 다양한 이미지를 생성하는지 등등 생성된 이미지의 품질을 평가할 있는 척도가 존재합니다. 이렇게 다양한 척도가 존재하고 그것이 좋다 안좋다를

평가할 있는 기준 또한 인간마다 다르기 평가할 있기 때문에 정확한 기준을 정립하는 것이 어렵습니다.

그렇기에 해당 논문에서는 이러한 모호함을 없애기 위해 노력합니다. 논문 제목에서도 알 수 있듯이 reliable metric입니다. 사람의 주관적인 기준에 따른 평가가 아닌 객관적인 평가를 할 수 있는 metric을 제안하고 있습니다.

이를 위해 논문에서는 생성된 이미지를 평가하는 기준을 2개로 정의합니다. 바로 fidelity diversity입니다.

Fidelity 생성된 이미지의 품질입니다. 얼마나 natural 이미지를 생성했는지, 원본과 비교했을 경우

차이가 없는지 등을 평가하는 것이 여기에 포함됩니다. 그리고 이를 모두 포함할 있는 것이 바로

원본 이미지의 데이터 분포에서 크게 벗어나지 않는 것입니다.

Diversity 그대로 생성된 이미지가 비슷비슷한 이미지를 만드는 것이 아닌 다양한 이미지를 만들어내고

있냐의 척도입니다. 2개의 평가 척도에 관련된 자세한 정보는 해당 논문을 참조해주세요.

 

 

<Density and Recall>

그래서 2가지를 평가하기 위해 논문에서 주장하는 metricDensity(for fidelity)와 coverage(for diversity) 입니다.

먼저 이 metric을 적용하기 전에 원본 이미지와 생성된 이미지를 특정한 vector 공간에 embedding을 해야합니다.

이렇게 embedding을 하는 이유는 원 이미지의 차원이 너무 크기 때문이고 원 이미지에는 불필요한 정보가 많기 때문입니다.

그렇기에 이미지의 핵심적인 특징을 잘 추출할 수 있는 feature extractor를 사용하여 차원이 더 낮은 공간에 embedding하게 됩니다.

Embedding을 하는 방법에는 다양한 차원 축소 기법이 있지만, 현재 이미지를 사용하는 방법에는 pretrained 된 CNN 모델을 사용하는것이 보편적입니다. CNN 모델은 이미지의 특징을 정말 잘 추출하기에 보편적으로 사용되지만 모델이 학습한 데이터의 분포와 평가하려는 데이터의 분포가 너무 상이한 경우에는 문제가 생길 수 있다는 점이 한계라고 생각됩니다.

이렇게 embedding된 vector들이 공간상에서 어떤 manifold를 형성하면서 분포하고 있는지 직관적으로 이해하기 위해 해당 논문에서는

k-nearest neighborhood로 manifold를 형성합니다. 즉, 하나의 백터에서 euclidean-distance가 가까운 데이터 k개를 포함할 수 있는 가장 짧은 거리를 해당 데이터의 manifold로 가정합니다. 이러한 방법으로 manifold를 형성한 뒤, 직관적인 방법으로 fidelity와 diversity을 정의합니다.

Density는 원본 이미지로 생성된 manifold 상에 생성된 이미지가 어느 정도의 밀도로 포함되는지에 대한 비율입니다. 즉, 이에 해당하는 비율이 높을수록 생성된 이미지가 manifold내에 밀도높게 분포하고 있다는 뜻이고 원본 데이터 셋의 분포를 벗어나지 않으므로 원본 데이터의 특징을 잘 잡아내어 이미지를 잘 생성한다고 생각할 수 있습니다.

이와 반대로 coverage(=diversity)는 원본 이미지로 생성된 manifold 전체 중에 생성된 이미지가 몇개의 manifold에 속하는지에 대한 비율입니다. 직관적으로 생각해보면 원본 이미지 manifold 내에 좁은 공간에서만 데이터를 생성한다면 fidelity는 높을지언정 diversity가 크다고 할 수 없을 것입니다. 원본 이미지 분포를 전체적으로 포괄하는 분포를 생성해야 diversity가 높다고 볼 수 있습니다. 그런 의미에서 recall은 원본 이미지의 분포를 모두 고려한 비율이므로 diversity를 고려할 수 있습니다. 해당 2개의 metric은 아래의 이미지를 보면 더욱 직관적으로 이해할 수 있습니다.

그림에서의 precision과 recall은 이 논문 전에 nvidia에서 발표한 생성모델에 대한 metric으로 해당 논문에서는 이 두개의 metric이 outlier에 너무 민감하게 반응한다는 점을 들어 density와 coverage가 더욱 reliable한 metric임을 주장하고 있습니다. 그리고 이들이 주장하는 metric은 analytic한 유도가 가능하다는 점을 들고 있는데 이와 관련된 유도와 다양한 GAN을 사용해 생성한 이미지들에 대해 실험한 결과는 본 논문을 참조해주세요.

마지막으로 해당 metric은 기존에 생성모델의 평가로 사용되던 FID, IS등의 metric의 fidelity와 diversity를 구별하여 평가할 수 없던 단점을 극복하고 outlier에도 덜 민감한 metric임에는 분명하다고 생각합니다. 하지만 density의 정의상 값이 100%를 넘을 수 있어 절대적인 평가 값으로 사용할 수가 없다는 점, 실제로 생성되는 data의 분포가 k-nearest neighborhood로 이루어진 manifold를 정확하게 따를 것인지에 대한 고민이 필요하다고 생각됩니다.

 

본 게시글은 Generative Adversarial Networks(GAN)를 공부하며 흥미로웠던 CycleGAN에 대한 포스팅입니다. 해당 논문은 버클리 AI Research (BAIR) lab에서 진행된 연구로, 2017년 ICCV에 accept되었습니다. 해당 논문을 참조하시려면 논문 링크 클릭해주세요.

 

CycleGAN은 training set이 {X,Y} 처럼 paired data가 아닌 unpaired된 data인 경우, source 도메인 X에서 target 도메인 Y로 이미지를 변환하는 image-to-image translation 방식입니다. 아래의 예시는 CycleGAN을 활용했을때의 두가지의 도메인에 대해서 이미지를 translation 하는 예시입니다. 

CycleGAN을 활용한 image-to-image translation 예시

이러한 두가지 도메인에 대해 image-to-image translation을 진행하기 위해서는 training set이 이미지 i에 대해 pair가 되는 X와 Y 도메인 데이터(paired data)가 존재해야 합니다. CycleGAN이전에 연구되었던 Pix2Pix 모델에서는 반드시 두 도메인 양쪽에 대응되는 paried data가 존재해야 했지만 CycleGAN에서는 paired data 없이도 하나의 이미지 도메인을 다른 도메인으로 바꾸는 것이 가능합니다.

paired data, unpaired data 설명

CycleGAN에서는 아래 그림과 같이 2가지 generator인 $G$와 $F$를 사용합니다. generator $G$는 source 도메인 X를 target 도메인 Y로 translate해주며 generator $F$는 $G$와 반대로 Y 도메인을 X 도메인으로 translate 시키는 generator입니다.

 

또한 Disciriminator도 $D_x$, $D_y$로 2가지를 사용합니다. $D_x$ $D_y$는 각각 X 도메인과 Y 도메인으로 생성된 이미지를 판별하는 역할을 수행합니다. $D_x$는 generator $F$가 만들어낸 ${F(y)}$ 이미지와 실제 X 도메인의 이미지 {$x$}를 구별하며 $D_y$는 generator $G$가 만들어낸 Y 도메인의 이미지 ${G(x)}$ 가 실제 Y 도메인의 데이터 {$y$}와 얼마나 다른지를 구별해냅니다.

 

따라서 G를 통해 Y 도메인으로 변환된 X 데이터 ${G(x)}$ 가 있을 때, 이를 다시 generator $F$를 통해 X 도메인으로 보내면 source 도메인인 X로 다시 되돌아와야 한다는 것입니다. 즉, F(G(X)) {x}가 되어야 하며 (forward cycle consistency) G(F(Y))는 ${y}$가 되어야 합니다. (backward cycle consistency) 이러한 특징을 본 논문에서는 cycle consistency 라고 칭하고 있습니다. 

 

따라서 CycleGAN에서는 기존의 Adversarial loss와 cycle consistency loss, 총 2가지의 loss를 사용합니다. CycleGAN에서는 generator와 discriminator를 각각 2개씩 사용하므로 Adversarial loss term인 $L_{GAN}$이 2개로 나누어집니다. 

CycleGAN full objective

Adversarial loss는 기존의 GAN의 loss와 같으므로 $G$는 {$G(x)$}가 Y 도메인의 실제 데이터 {$y$}와 유사하게 만들어내는것을 목표로 합니다. $D_y$는 {$G(x)$}와 {${y}$}를 구별합니다.  $L_{GAN} (F,D_x,Y,X)$ 또한 마찬가지로 $F$는 {$F(y)$}가 실제 X 도메인 데이터 {$x$}와 유사한 이미지를 만드려고하며 $D_x$는 {$F(y)$}와 {${x}$}를 구별합니다.

Adversarial loss

Cycle Consistency loss는 {$x$} 이미지를 $G$에 통과시켜 {$G(x)$}로 만들어 Y도메인의 데이터를 만든 후 이를 다시 $F$에 넣어 다시 X 도메인으로 inverse 과정을 거친 이미지로 만듭니다. 이러한 과정으로 inverse된 $F(G(x))$와 실제 X 도메인의 이미지 {$x$}를 pixel-wise하게 loss를 구성하였습니다. 마찬가지로 {$y$} 이미지를 $F$를 통해 X 도메인에 속하는 {$F(y)$} 이미지로 만든 후 이를 다시 $G$를 통해 Y 도메인으로 inverse 과정을 거칩니다. $G(F(y))$ 이미지와 실제 Y 도메인의 이미지 {$y$}와의 pixel-wise한 차이를 loss에 반영합니다. 이러한 두개의 term을 cycle consistency loss로 정의하고 있으며 해당 loss를 통해 unpaired한 X와 Y 도메인의 쌍을 연결할 수 있게 됩니다.  

Cycle Consistency loss

CycleGAN의 최종 loss는 아래식과 같으며 해당 loss를 통해 generator는 실제 이미지에 가까운 이미지를 만들기 위해 노력하며 discriminator는 generated된 이미지를 실제 이미지와 판별하는것을 목표로 합니다.

아래의 그림은 CycleGAN을 활용하여 실제 풍경데이터 (X 도메인 데이터)와 각 화가의 스타일 (Y 도메인 데이터) 를 활용하여 Image-to-Image translation을 진행한 결과입니다. X 도메인의 데이터가 각 Y 도메인으로 style transfer가 된것을 볼 수 있습니다. 

두번째 예시로 말과 얼룩말, 겨울과 여름 등 서로다른 도메인으로의 Image-to-Image translation 결과입니다.

CycleGAN의 구현 및 자세한 실험 결과는 논문을 참조해주세요. 이상 논문 리뷰를 마치겠습니다.