안녕하세요, KDST에서 학생 연구원으로 근무 중인 강민수입니다.

 

이번에 강민구 전문연구 요원님, 김동진 학생 연구원님과 함께 Team 'Machine Running'으로 함께 참여했던

성균관대학교 삼성융합의과학원(SAIHST) 디지털 헬스 학과와 디지털 헬스케어 파트너스(DHP)가 공동 주최하는 제 6회 Digital Health Hackathon 2021에서 공동 1위로 최우수상을 수상하였습니다.

 

해커톤 주제는 'bio-health simulation data를 이용하여 치료의 효과를 증가시키는 인과관계가 있는 유전자를 찾아내는 것'입니다.

 

환자 맞춤형 치료는 특히 암 환자의 맞춤형 항암 치료 분야에서 뚜렷한 성과를 보입니다. 이는 암 유전자 분석을 통해 변이 유전자에 타깃이 되는 약물을 찾아내는 과정을 통하여 이루어집니다. 하지만, 환자의 데이터로부터 항암 효과와 인과 관계가 있는 유전자 변이를 찾아내는 과정은 매우 어렵습니다. 암세포에서 유전자 변이는 수천 개 이상이 존재하며, 치료 효과와 유의한 연관성을 분석하기에는 환자의 데이터가 일반적으로 매우 적습니다.

 

이러한 문제를 해결하기 위해 Feature selection을 filter method와 wrapper method를 혼합 사용하여 해결하는 방식을 제안하였습니다. 많은 feature를 1차 적으로 걸러내기 위해 filter method로서 cox regression의 결과를 사용하였습니다. 2차 적으로는 치료에 긍정적인 유전자 변이를 확인하기 위해 wrapper method로서 강화학습 기반의 meta-heuristic feature selection으로 유전자 변이 정보를 찾아내는 방법을 제안하여 사용하였습니다.

 

감사합니다.

 

댓글을 달아 주세요

안녕하세요. 오늘 소개드릴 논문은 AAAI'2021에 게재된 DegAug입니다. 논문 제목에서 알 수 있듯이 Feature representation을 나누고 semantic augmentation을 통해 Out-of-Distribution generalization을 달성한 논문입니다.


About Out-of-Distribution

  • 논문에 대한 내용에 앞서 IID와 OoD의 개념을 말씀드리겠습니다.
  • Independent, Identical Distribution (I.I.D)→예를 들면 CIFAR10의 train-set과 test-set이 나눠져 있지만 그 둘은 동일한 분포를 가지고 있습니다. 따라서 이 둘은 I.I.D입니다.
    • 어떤 랜덤 확률 변수 집합이 있을 때 각각의 랜덤 확률변수들은 독립적이면서 동일한 분포를 가지는 것을 의미합니다.
  • Out of Distribution (OoD)(ICML 2021, Stanford) WILDS: A Benchmark of in-the-Wild Distribution Shifts→ 당연하게도 실제 상황에선 OoD가 더 많이 존재합니다.
    • 예를 들어, Medical 응용의 경우 특정 병원에서 얻은 데이터로 학습한 뒤, 다른 병원에 배포되는 경우가 있습니다. 학습 때와 다른 분포를 테스트시 추론하게 되므로 이 경우 OoD입니다.
    • 학습 데이터의 분포를 따르지 않는 데이터를 따르지 않는 데이터를 이야기합니다.
  • 그렇다면 기존의 학습방법으로 OoD을 잘 추론할 수 있을까요? → 그렇지 않습니다!

    • 위 그림은 2019년 페이스북에서 나온 Invariant Risk Minimization 에 나온 예시입니다. 초록색 배경의 소🐮 와 모래색 배경의 낙타🐪 로 학습을 시킨 모델이 있다고 가정해봅시다.
    • 이 모델에 초록색 배경 낙타🐪를 추론시킬 경우 소🐮로 추론한다고 합니다.
    • 즉, 기존의 학습 방법은 데이터간의 가장 큰 공통 특징(배경색)을 가지고 학습 및 추론을 하기 때문에 학습 데이터와 다른 데이터(OoD)은 잘 추론하지 못합니다.
  • OoD는 언제 문제가 될까요?

(CVPR 2019, Facebook) Does Object Recognition Work for Everyone?

 

  • 위 그림은 페이스북에서 CVPR'2019에 발표한 논문에서 발췌한 그림입니다.
  • 왼쪽 사진은 상용 클라우드 플랫폼 (Azure, Clarifai, Google, Amazon)의 AI classification 모델에 서로 다른 국가에서 촬영한 비누를 추론시킨 결과입니다 네팔에서 촬영한 사진의 경우 모든 상용 솔루션이 틀리는 것을, 영국에서 촬영한 사진의 경우 대부분의 경우에서 맞는것을 알 수 있습니다.→ 상용 솔루션의 경우 대부분 미국에서 배포하고 있고, 미국을 포함한 수입이 높은 국가에서 수집한 데이터로 학습을 진행합니다. 따라서 데이터를 수집한 국가와 다를수록 즉 OoD의 경우 정확도가 낮아지는 것을 알 수 있습니다.
  • 오른쪽 사진은 한달 수입이 $x$ 인 국가에서 데이터를 수집한 뒤, 상용 솔루션 모델들에 추론시켰을 때 정확도를 나타낸 표입니다. 수입이 높은 국가에서 수집한 데이터인 경우 정확도가 높은 것을 알 수 있습니다.

DegAug


Category vs . Context

  • 이 논문에선 하나의 이미지가 category, context 2개의 정보를 담고 있다고 얘기하고 있습니다
    • context : 각 이미지가 가지고 있는 환경적인 특징을 의미합니다. 예를 들어 잔디밭 위에 양이 있다면 잔디밭이 context가 됩니다.
    • category : label을 의미합니다.
  • 따라서 하나의 이미지는 category-context의 쌍으로 이루어져 있습니다. 만약 train-set에 없는 category-context쌍을 기존의 학습 방법으로 학습한 모델의 추론시키면 잘 추론을 못하고, 이 연구는 이를 해결하고자 하는 논문입니다.

Proposed Method

Overall Architecture

  • 자 그럼 이 논문에서 OoD을 어떻게 해결했는지. 즉, OoD generalization을 어떻게 달성했는지 알아보도록 하겠습니다.

Overall Diagram of DegAug

  • 위 그림은 OoD 데이터를 학습하기 위한 이 논문의 구조를 도식화 한 그림입니다
    • input data를 backbone네트워크에 추론
    • 1에서 얻은 embedding vector를 category feature extractor와 context feature extractor에 각각 추론
    • context feature extractor에서 context label을 추론합니다.
    • category feature extractor에서 category label을 추론합니다.
    • 2에서 얻은 2개의 embedding vector를 합쳐(concat) 최종적으로 추론
  • 따라서 DegAug는 총 4개의 네트워크로 구성되어 있습니다. (backbone network, Category Feature Extractor, Context Feature Extractor, Final Classifier)


Method

  • 하나의 이미지에 대해 category label과 context label을 모두 가지고 있는 데이터셋이 있다고 가정해봅시다.
    • x는 이미지, y는 category(class) 레이블을 c는 context 레이블을 의미
    •  
  • D를 알고 있으므로 Cross Entropy Loss를 이용해 Context Feature Extractor를 학습할 수 있습니다. 
    • 이렇게 발생한 2개의 loss를 가지고 backbone 네트워크를 학습할 수 있습니다.

h_1 : category classifier h_2 : context classifier f_1 : category feature extractor f_2 : context feature extractor

 

  • category feature extractor와 context feature extract가 서로 다른 특성을 학습할 수 있도록 이 논문에선 𝑂𝑟𝑡ℎ𝑜𝑔𝑜𝑛𝑎𝑙 𝐿𝑜𝑠𝑠 를 제안합니다.
    • category loss의 gradient와 context loss의 gradien의 코사인 유사도를 loss로 쉬하고 있습니다.
    • gradient간의 코사인 유사도를 감소하는 방향으로 backbone 네트워크의 학습을 진행함으로써 backbone 네트워크가 category와 context를 모두 담은 embedding vector를 추출할 수 있도록 학습이 진행됩니다.

 

  • train-set에 없는 데이터를 잘 추론하기 위해 DecAug는 feature-level에서 augmentation을 진행합니다. (Semantic augmentation)

→ 위 수식을 보시면 context feature에 context loss gradient를 더해줌으로써 train-set에 없는 category-context 쌍의 학습을 진행할 수 있습니다.

 

  • 위의 방법을 통해 얻은 category feature와 context feature를 합쳐 최종적인 classification을 하게 됩니다.
  • 모든 loss function을 정리하면 다음과 같습니다.


Experiments

DegAug는 총 3가지 데이터셋에 대한 실험 결과를 보여주고 있습니다

  • 먼저 colored-MNIST에 대한 실험 결과 입니다.

  • ERM은 일반적인 학습 방법입니다. DegAug가 가장 높은 정확도를 보이는 것을 확인할 수 있습니다.

 

  • PACS 실험 결과입니다.
    • PACS는 Picture, Art, Cartoon, Scatch 4개의 도메인으로 이루어진 데이터셋으로 3개의 도메인을 train-set에, 나머지 하나의 도메인을 test-set으로 두고 정확도를 측정합니다.
  • NICO 실험 결과입니다.


Conclusion

Feature augmentation을 통해 OoD generalization을 달성한 DegAug에 대해 알아보았습니다. feature를 augmentation한다는 점에서 흥미로웠지만 OoD generalization을 달성하기 위해 context label이 필요하다는 점이 굉장히 크리티컬한 것 같아 아쉬움이 남습니다. self-supervised learning과 이 연구를 합치거나 StyleGAN과 같이 context를 변경해 DegAug를 진행한다면 더 재밌지 않을까.. 라는 생각을 논문을 읽으며 많이 했던 것 같습니다.

댓글을 달아 주세요

이번에는 CVPR 2021에 poster paper로 accept 된 Revisiting Knowledge Distillation: An Inheritance and Exploration Framework을 리뷰하려고 합니다. 자세한 내용은 원문을 참고해주세요. 코드의 경우, 비공식 코드로 구현해두었습니다.

 

Introduction

 

Class distribution사이에서 similarity와 consistency의 정보를 전달함으로써 knowledge distillation 분야가 성공할 수 있었다고 저자는 말하고 있습니다.(Hinton의 KD, Tf-KD etc.) 또한, layer 중간의 output에서 feature representation을 transfer하는 방법도 성공을 이끌었다고 말하고 있습니다.

 

하지만, 직접적으로 teacher를 따라하게 student에게 knowledge를 전달하는 것은 student가 알려지지 않은 feature를 탐색할 확률을 줄일 것이라 생각했고, 이를 확인한 사진이 아래의 사진입니다.

사진을 보시면 knowledge distillation을 진행했을 때, teacher 가 바라보는 feature부분을 그대로 보는 것을 알 수 있습니다. 실제 답은 치타임에도 꼬리부분을 악어라고 인식하게 되는 것이라고 할 수 있습니다.

 

또 이러한 사실을 더 명확히 확인하기 위해서 small network에서 large network로의 knowledge distillation을 진행했을 때, 아래의 사진처럼 loss가 오히려 증가하는 현상을 발견했습니다. 즉 teacher의 network가 작더라도 compact하게 지식을 갖고 있다는 것입니다. (ind와 비교할 때 kd가 train loss 학습은 더 빠르지만, evaluation에서 보면 점점 더 높은 loss로 saturation됨)

 

이러한 점을 들어 단순히 KD에서 teacher 정보를 받아들이기만 해서는 안된다고 저자는 말하고 있습니다.

 

Related Work

 

Knowledge Distillation(KD)에는 전달하는 지식, 전달하는 시점에 따라서 분류가 갈리는데 여기서는 크게 3가지만 소개하도록 하겠습니다.

 

- Offline-KD

출력(logits)으로 부터 학습하는 Knowledge Distillation 

중간 Feature로 부터 학습하는 KD: 1) Factor Transfer, FitNet, Attention Transfer, etc.

 

- Online-KD

Student의 ensemble이 학습하는 방법: DML(Deep Mutual Learning)

Sub-net의 classifier ensemble이 학습하는 방법: CL(Collaborative Learning)

 

- Teacher free Regularization

Student가 teacher 없이 referred target에 의해서 knowledge 가 transfer되는 방식(Tf-KD, Snapshot Distillation, etc.)

 

Motivation of Proposed Method

 

앞서 저자가 teacher에 의해 transfer되는 knowledge에 의해 같은 위치의 feature만 관찰한다고 말했습니다. 이를 극복하는 방법을 저자는 진화이론에서 떠올렸다고 합니다.

 

진화 이론은 inheritance와 variation of traits에서 발생한다고 하는데, 이 중 variation of traits를 달성할 방법에 대해서 고민하게 됩니다. 저자는 강화학습의 Q learning에서의 epsilon greedy에 의한 exploration과 과거 논문 중 image를 학습하기 어렵게 만드는 universal adversarial network의 loss term에서 영감을 받았다고 합니다. 즉, exploration을 통해 다른 feature도 관찰하고 이는 더 좋은 위치를 보게 만들어 줄 수도 있다라는 생각을 갖게 해준 것입니다.

Universal Adversarial Attack on Attention and the Resulting Dataset DAmageNet, Chen et al., TPAMI 2020

아래 사진을 보시면 TPAMI 2020에 게재된 논문에서 $L_{dstc}(x)$ 를 사용함으로써 original의 이미지에 loss에 의해 발생하는 gradient를 전달하여 동일하게 보이지만 network에 의해서 다른 곳을 관찰하게 유도하는 이미지를 생성합니다.

Universal Adversarial Attack on Attention and the Resulting Dataset DAmageNet, Chen et al., TPAMI 2020

이런 것을 활용하여 다른 feature도 관찰할 수 있게 유도한 논문을 통해 다른 feature를 관찰할 수 있는 exploration method를 선택하면 단순히 teacher를 따라하지 않아도 된다! 라고 생각한 것이라고 할 수 있겠습니다.

 

Proposed Method

 

이러한 inheritance(KD)와 exploration을 같이한 framework를 제시한 것의 구조는 다음과 같습니다.

제시한 loss term은 다은과 같습니다. $L_{goal}$은 classification의 CE Loss나 object detection에서 일반적으로 사용하는 loss term입니다.

$$L=L_{goal}+\lambda_{inh} L_{inh}+\lambda_{exp} L_{exp}$$

 

즉 추가한 두 loss term을 통해서 이를 조절한다는 것입니다.

$L_{inh}$: teacher의 feature를 따라하는 loss(inheritance) , $L_{inh}=||{F_{inh}}/{||F_{inh}||_2}-(F_T)/{||F_{T}||_2}||$

$L_{exp}$: teacher의 feature대신 다른 feature를 배우는 loss(exploration) $L_{exp}=||{F_{exp}}/{||F_{exp}||_2}-(F_T)/{||F_{T}||_2}||$

위 두 loss는 encoding 된 latent vector를 비교함으로써 사용되고

여기서 Encoder는 teacher의 경우, pretrained model을 사용하므로 auto-encoder를 통해 미리 학습한 후 사용하며, student는 학습과 동시에 사용합니다.

 

Auto-encoder

- Auto-encoder는 이 논문에서 teacher와 student간의 shape이 다른 것을 해결하기 위해서 제시하였습니다. (Tecaher만 사용하고 Student는 학습과 동시에 진행합니다) 동일 latent space로 옮겨서 확인하려고 만들었습니다. 논문에서는 아래의 구조로 사용했다고 합니다. Loss term의 경우 reconstruction loss인 L2 norm을 사용하였으며 식은 $L_{rec}=||f_T-R(f_T)||^2$ 을 사용하였습니다. 

 

이러한 구조를 사용하여 학습하는 방법은 다은과 같습니다.

1. 먼저 reconstruction loss를 사용하여 teacher's factor를 학습하는 auto-encoder를 만듭니다.

2. Student의 encoder와 backbone network를 동시에 학습합니다.

 

IE-KD in Deep Mutual Learning(IE-DML)

- Online learning에서는 IE framework를 적용하기엔 pretrained_model이 존재해야 teacher의 faeture를 학습하는 auto encoder 먼저 학습하므로 다른 방식이 필요합니다. DML의 경우 AutoEncoder까지 동시에 학습시킵니다. 

$$L_{\theta_1}=L_{goal1}+\lambda_{inh1} L_{inh1}+\lambda_{exp1} L_{exp1}+\lambda_{exp} L_{exp1}$$

 

Experiments

IE-KD의 경우 feature 기반 Knowledge transfer에 모두 적용할 수 있습니다. 그래서 본 논문에서는 SOTA였던 모든 method에 대해 적용하여 성능을 비교하였습니다.

- Attention Transfer(ICLR 2017) -> IE-AT

- Factor Transfer(NIPS 2018) -> IE-FT

- Overhaul of Feature Distillation(ICCV 2019) -> IE-OD

Ablation Study

저는 개인적으로 진짜 feature들이 보는 곳이 보기만 하는 것이 맞는지 궁금했습니다. Ablation Study에서 이를 보여주고 있는데 기존 baseline에 대비해서 Centered Kernel Alignment (CKA)를 측정한 결과, 기존보다 다소 낮은 것을 확인할 수 있었습니다. 그리고 baseline에 비해서 더 많은 neuron들이 activate됨을 통해 효율적으로 사용하고 있음 또한 확인할 수 있었습니다.

그리고 앞서 언급한 epsilone greedy와 같이 exploration과 exploitation 비율이 어느정도일 때 적절한지 확인한 실험도 존재하였습니다. 적절하게 balanced 되어있을 때, 더 좋은 성능을 보여줌을 확인할 수 있었습니다.

 

Conclusion

Knowledge Distillation이라는 분야에서 단순히 지식을 넘겨주는 측면 뿐만 아니라 새로운 것 또한 배울 수 있어야 발전한다고 제시한 논문입니다. 그 크기에 비해서 성능 개선폭이 낮은 것은 아쉽지만, 관전의 변환을 준다는 점에서 흥미로운 논문이라고 생각합니다.

 

자세한 내용은 논문을 참조하시거나 댓글로 남겨주시기 바랍니다.

코드는 official code가 없어 제가 구현해둔 코드에서 성능을 확인해보셔도 좋을 것 같습니다.

댓글을 달아 주세요

이번 글에서는 CVPR 2021에 accept된 Pruning 논문 중 하나인 Manifold Regularized Dynamic Network Pruning 을 리뷰하도록 하겠습니다. 

 

먼저 Dynamic pruning에 대해 알아보겠습니다. 기존의 channel pruning 방식들은 channel을 static하게 제거하기 때문에 모든 sample에 같은 구조의 network를 사용합니다. 하지만 실제로는 filter/channel의 중요도는 input에 따라 매우 다릅니다. 아래 그림은 Dynamic pruning을 처음 제안한 Dynamic channel pruning: Feature boosting and suppression 에서 가져왔습니다.

Pretrained ResNet-18로 imagenet sample을 추론해 보면, 특정 채널(114, 181)의 아웃풋은 이미지에 따라 많은 차이를 보입니다. 또한 (c)에서 볼 수 있듯이 20개 channel의 maximum activation의 분포를 그려보면, 채널 간에 큰 편차가 있는 것을 알 수 있습니다. 

 

기존 Dynamic pruning 방법들은 개별 instance마다 channel을 독립적으로 pruning 했기 때문에 instance간의 관계를 고려하지 않고, 또한 instance의 복잡도(complexity)에 상관없이 모두 같은 sparsity constraint를 사용한다는 단점이 있습니다. 저자들은 이러한 문제점을 극복하기 위해 임의의 instance에 상응하는 network redundancy를 극대화할 수 있는 dynamic pruning 방법론인 ManiDP를 제안합니다. 

 

이 논문의 핵심 아이디어는 각 input image의 manifold 정보를 학습 과정에서 활용하여 image간의 관계가 각각에 대응하는 sub-network 간에도 유지되도록 하는 것입니다. 학습 과정에서 두 가지 관점, complexity와 similarity 측면에서 manifold 정보를 활용합니다.

 

Manifold Regularized Dynamic Pruning

Preliminaries

논문의 수식을 이해하기 위해 먼저 기존 channel pruning과 dynamic pruning의 formulation을 소개하겠습니다. 기존 channel pruning의 optimization objective는 다음과 같습니다.

첫 번째 term은 각 sample의 cross entropy loss이고 두 번째 term은 convolution filter간의 channel-sparsity를 만들기 위한 식입니다. $\lambda$값을 증가시킬수록 더 sparse한 network가 생성됩니다.

 

Dynamic pruning에서는 output channel의 중요도가 어떤 input이 들어오는지에 따라 달라지게 됩니다. 따라서 개별 input(sample/instance)마다 다른 sub-network를 가집니다. input $x_i$에 대해 $l$번째 layer의 상황을 가정하겠습니다. input feature를 $F^{l-1}(x_i)$라 하고 channel saliency를 control하기 위한 모듈은 $G^l$라고 notation합니다. 그러면 channel saliency $\pi(x_i, w)\in \mathbb{R}^{c^l}$을 $G^l(F^{l-1}(x_i))$라고 할 수 있습니다. 

따라서 dynamic channel pruning의 optimization objective는 다음과 같습니다.

Complexity

직관적으로 생각해보면 간단한 sample을 분류하기 위해서는 작은 network로 충분할 것이고, 복잡한 sample을 분류하기 위해서는 더욱 복잡한 network가 필요할 것입니다. 따라서 이 논문에서는 instance와 sub-network의 complexity를 각각 측정하고 이를 정렬하기 위한 adaptive objective function을 제안했습니다.

 

Instance의 complexity를 측정하기 위해서는 Task-specific (i.e., Cross entropy) loss를 사용합니다. CE loss가 클수록 그 instance를 잘 학습하지 못했다는 뜻이고, 따라서 복잡한 instance로 볼 수 있습니다.  Sub-network의 sparsity를 측정하기 위해서는 channel saliencies($\pi$)의 sparsity를 사용합니다. 즉 network의 channel 중요도를 나타내는 벡터가 sparse할수록 적은 channel이 존재하므로 간단한 network라고 볼 수 있습니다.

 

앞에서 설명했다시피 기존 연구들에서는 모든 instance에 대해 같은 weight coefficient, 즉 $\lambda$가 사용되었습니다. 하지만 여기서는 CE loss가 높으면 더 낮은 $\lambda$값을 사용하고, CE loss가 낮으면 더 높은 $\lambda$값을 사용함으로써 각 instance마다 adaptive하게 sparsity penalty를 적용합니다. 또한 $\beta = \{\beta\}_{i=1}^{n} \in \{0,1\}^N$이라는 binary learnable parameter를 사용하는데 이는 $i$번째 instance에 대응하는 sub-network가 pruning 되어야 하는지 여부를 의미합니다. 최종적으로 optimization objective는 다음과 같이 정의됩니다. $C$는 instance complexity threshold로서 사전에 정의됩니다. 실험적으로 이전 epoch에서 구한 전체 dataset에 대한 cross entropy 평균을 사용한다고 합니다.

따라서 sparsity loss의 coefficient $\lambda(x_i)$는 다음과 같이 정의됩니다.

$\lambda(x_i)$의 값은 항상 $[0,\lambda']$의 범위 안에 있고, 값이 커질수록 $x_i$가 간단한 instance라는 것을 의미합니다.

 

Similarity

ManiDP의 두번째 목표는 instance간의 similarity를 sub-network간에도 잘 유지하는 것입니다. 즉 두 instance가 비슷하면 상응하는 sub-network도 비슷해야 합니다. 이를 반영하는 loss term을 만들기 위해 먼저 instance간, sub-network간의 similarity를 측정합니다.

 

Instance similarity는 intermediate features $F^l(x_i)$간의 similarity로 정의됩니다. intermediate features가 input sample $x_i$의 특징을 잘 대표한다고 할 수 있기 때문입니다. $F^l(x_i)$를 average pooling으로 flatten한다음 cosine similarity를 측정하여 similarity matrix $R^l$을 만듭니다. 이 matrix는 $N \times N$의 shape을 가집니다.

한편 Sub-network similarity는 어떻게 측정할 수 있을까요? $\pi(x_i)$는 특정 sub-network의 channel saliency, 즉 sub-network의 architecture를 표현합니다. 따라서 $\pi(x_i)$간의 cosine similarity를 sub-network similarity로 사용합니다. 이 matrix는 instance similarity와 마찬가지로 $N \times N$의 shape을 가지고 식은 다음과 같습니다. 

최종적으로 추가되는 loss term은 instance similarity $R^l[i,j]$와 sub-network similarity$T^l[i,j]$간의 Frobenius norm으로 정의됩니다.

Final Objective

최종 학습 objective는 다음과 같습니다. 2번째는 instance와 sub-network간의 complexity를 정렬하기 위한 term이고 위에서 소개한 $\lambda(x_i)$에 의해 통제됩니다. 세번째는 similarity를 유지하기 위한 term이고 hyperparameter $\gamma$에 의해 통제됩니다. 

추론 시에는 $\pi^{l}(x_i)$의 각 element값이 threshold보다 큰 경우에만 channel을 남깁니다. 각 instance마다 다른 $\pi^{l}(x_i)$ 값을 학습하기 때문에 모두 다른 sub-network를 갖게 됩니다. 

 

Experiments

ImageNet으로 학습했을 때 ResNet과 MobileNet 모델 성능

ManiDP-A와 ManiDP-B는 각각 다른 pruning rates를 가지는 모델입니다. ManiDP는 다른 방법론들과 비슷한 수준으로 FLOPs를 줄이면서도 가장 좋은 성능을 보입니다. 

 

CIFAR-10으로 학습했을 때 ResNet 모델 성능

 

Effectiveness of Manifold Information

또한 complexity와 similarity를 고려하는 것이 얼마나 효과적인지를 알아보기 위해 ablation study를 수행했습니다. 두 경우에서 complexity와 similarity를 모두 고려하는 것이 가장 좋은 성능을 보였습니다.

 

Visualization

이 논문에서 의도한 대로 간단한 instance에 가벼운 sub-network가 대응되는지를 확인하기 위해 visualization을 수행했습니다. 

FLOPs가 적은 sub-network일수록 그에 대응되는 이미지가 간단한 것을 볼 수 있습니다. FLOPs가 높아질수록 object가 명확하지 않고 어려운 이미지를 판별하게 됩니다.

 

이상으로 Manifold Regularized Dynamic Network Pruning 논문 리뷰를 마치겠습니다. 궁금한 점은 댓글로 달아주세요. 감사합니다.

 

Woojeong Kim 

댓글을 달아 주세요

이번 글에서는 CVPR 2021에 oral로 선정된 Representative Batch Normalization with Feature Calibration”이란 논문을 소개합니다. 본 논문은 기존의 Batch normalization의 문제를 분석하고 이를 보완하는 Representative Batch normalization을 제안합니다. 

 

Introduction

Batch Normalization의 효과를 감소시키는 요인

 Batch Normalization(BN)은 convolution 연산의 결과로 나온 feature들을 mini-batch의 통계 정보를 사용하여 normalize 된 분포로 제한하는 과정을 수행합니다. 이 과정은 학습의 어려움을 낮춰 CNN 모델의 성능을 가져왔습니다. 하지만, BN이 가정하는 "서로 다른 인스턴스 feature의 채널별 분포가 모두 같다"는 2가지 문제점이 존재합니다.

  1. Training 단계에서의 mini-batch statistics와 testing시 사용하는 running statistics 사이의 불일치.
    • training 단계에서 mini-batch 단위로 누적 계산되는 statistic은 추론 시에 사용할 running statistics에 완벽하게 적합하지 않습니다.
  2. testing dataset의 인스턴스가 항상 훈련 세트의 분포에 속하지는 않을 수 있음.

이러한 두 가지 불일치 문제는 BN의 효과를 감소하게 합니다.

 

기존의 연구들

몇몇 연구들에서는 이를 해결하기 위해 normalize 단계에서 mini-batch 단위의 statistic 정보 대신 instance 단위의 statistic 정보를 활용하였습니다. 하지만 이는 batch 정보의 부족으로 학습의 불안정을 발생시켜 많은 경우에서 기존의 BN보다 안 좋은 성능을 보였습니다. 또 다른 연구에서는 여러 개의 normalize 기법을 조합하거나 attention 메커니즘의 도입으로 해결하였으나 많은 overhead를 도입하여 실용성을 떨어트리게 됩니다. 따라서 본 논문은 적은 비용으로 feature의 normalize 과정에서 mini-batch 이점과 instance 별 representation을 향상시키는 방법을 제안합니다.

 

Statistic의 불일치로 인한 문제 

Batch Normalization(BN)은 feature standardization과 affine transformation 동작으로 이루어져 있습니다. 본 논문은 centering과 scaling 동작으로 이루어진 standardization에 집중하였으며, centering과 scaling 과정은 각각 mini-batch의 statistics(mean, variance)를 기반으로 feature들이 zero-mean property(평균 값이 0)와 unit-variance(분산 값이 1)를 가지도록 합니다. 이때 testing instance와 training 시에 계산된 running mean, variance의 불일치는 몇 가지 문제를 발생시킵니다.

  1. running mean의 불일치
    • running mean > instance mean: 유익한 representation의 손실.
    • running mean < instance mean: feature에 noise의 증가.
  2. running variance의 불일치
    • 특정 채널의 값의 scale을 너무 크게 혹은 작게 만들어 feature의 분포를 불안정하게 만듦.
    • (예를 들어, 특정 channel에서의 running variance의 불일치는 해당 채널의 scale을 다른 channel에 비해 크게 만들어 다음 convolution에서 연산 결과가 그 채널에 지배적(dominant)이게 만듭니다.)

제안하는 Representative Batch Normalization은 feature의 채널별로 3개의 weight를 추가하여 centering, scaling calibration 과정을 수행합니다. 이는 기존의 BN 보다 training loss와 test accuracy를 작게 만들며 기존 BN을 손쉽게 대체 할 수 있습니다.

BN과 RBN의 training loss/test error 그래프

Proposed Method

Revisiting Batch Normalization

제안하는 Representative Batch Normalization(RBN)에 앞서 기존의 Batch Normalization(BN)의 standardization, affine transformation 과정을 수식화하면 아래와 같습니다.

Centering : $ X_m =X-E(X) $

Scaling : $ X_s= \frac{X_m}{\sqrt{Var(X)+\epsilon}} $

Affine : $ Y = X_s\gamma + \beta $

 

$X\in \mathbb{R^{N\times C\times H\times W}}$는 input feature이며 $E(X), Var(X)$는 각각 running mean과 variance를 의미합니다. training 과정에서 running mean과 variance는 dataset으로 부터 mean과 variance를 누적하여 계산됩니다. 이 과정은 아래와 같습니다.

 

$\mu _B=\frac{1}{NHW}\sum_{n=1}^{N}\sum_{h=1}^{H}\sum_{w=1}^{W}X_{(n,c,h,w)}$

$\sigma^{2}_B=\frac{1}{NHW}\sum_{n=1}^{N}\sum_{h=1}^{H}\sum_{w=1}^{W}(X_{(n,c,h,w)}-\mu_B)^2$

 

$E(X)\Leftarrow mE(X)+(1-m)\mu_B$

$Var(X)\Leftarrow mVar(X)+(1-m)\sigma^2_B$

 

Representative Batch Normalization

  • Statistics for Calibration

제안하는 RBN에서 Batch Normalization(BN)의 running statistic을 보정하기 위해 사용한 instance-specific feature의 statistic은 channel 별 정보를 사용하였으며 이는 다음과 같습니다.

$\mu_c = \frac{1}{HW}\sum_{h=1}^{H} \sum_{w=1}^{W} X_{(n,c,h,w)}$

$\sigma ^2 _c = \frac{1}{HW} \sum_{h=1}^{H} \sum_{w=1}^{W}(X_{(n,c,h,w)}-\mu _c)^2$

  • Centering Calibration

BN의 Centering 과정에서  feature 값 중 running mean보다 큰 부분은 유지되어 다음 레이어로 넘어가게 됩니다. 이때 잘못된 running mean은 feature의 유용한 정보를 지우거나 추가적인 noise를 추가하게 됩니다. 이를 해결하기 위해 centering calibration은 BN의 centering 과정 전에 feature의 추가적인 statistic($K_m$)을 채널 별 learnable weight($w_m$)을 통해 feature를 calibration 합니다. 수식으로 표현하면 다음과 같습니다. (논문의 실험에서 $K_m$은 $\mu_c$를 기본값으로 사용하였습니다.)

$X_{cm(n,c,h,w)}=X_{(n,c,h,w)} + w_m\odot K_m$ 

$\odot$: $w_m$과 $K_m$을 같은 shape로 만들고 dot product 수행.

 

Centering calibration이 적용된 X와 적용되지 않은 X의 centering operation 결과 차이를 수식화하면 아래와 같습니다. $w_m$ > 0 그리고 $K_m > E(X)$와 같은 조건에서 centering calibration은 feature의 유용한 정보를 살려주며 $w_m$ < 0 그리고 $K_m > E(X)$와 같은 조건에서는 feauture의 noise를 줄여주는 방식으로 동작하게 됩니다.

$X_{cal}-X_{no} = w_m\cdot (K_m-E(X))$

  • Scaling Calibration

유지할 특징을 조절하는 centering과 다르게 scaling 과정에서는 feature의 명암을 조절합니다. 이때 부정확한 running variance는 특정 channel의 강도를 크게 만들게 됩니다. 이를 해결하기 위해 scaling calibration은 scaling operation 과정 후에 instance statistic($K_s$)을 채널별 learnable weight($w_v,w_b$)를 사용하여 feature를 calibration합니다. 

$X_{cs(n,c,h,w)}=X_{s(n,c,h,w)}\cdot R(w_v\odot K_s+w_b)$

$R()$: out-of-distribution feature 억제용 restricted function($0<R()<1$)

 

Scaling calibration 후 feature의 variance는 아래와 같이 표현됩니다.

$Var(X_{cs})=Var(X\cdot R(w_v\cdot K_s+w_b))$

 

Scaling calibration은 feature의 variance를 작게 만들고 이를 통해 채널 간의 안정적인 distribution을 유지하게 합니다. $w_v$가 작을수록 $Var(X_{cs})$는 작아지며 $w_b$를 통해 restricted function의 제한 위치를 조정하게 됩니다.

 

Centering/Scaling Calibration을 통한 Feature 변화

Experiments

다른 방법들과의 비교 / scaling calibration 전후의 채널별 표준편차

제안하는 RBN은 분류에서의 다른 방식들에 비해 더 나은 성능을 보였으며 scalling calibration이 적용되었을 때 채널간의 분포를 보다 안정적이게 만들어주는 것을 확인 할수 있습니다.

Centering/Scaling Calibration 효과 시각화

Conclusion

Representation Batch Normalization(RBN)은 기존 BN의 장점인 Batch statistic 정보를 유지하며 적은 추가적인 파라미터를 통해 효과적으로 instance의 statistic을 적용합니다. centering calibration은 feature의 유용한 representation을 강화하고 noise를 감소시킵니다. Scaling calibration은 feature의 강도를 제한함으로써 채널간의 안정적인 feature 분포를 형성하게 합니다. RBN은 BN의 centering/scaling operation을 사용하는 기존의 방식들에도 쉽게 적용 가능하다는 장점 또한 가집니다.

 

이상으로 논문 리뷰를 마칩니다.

자세한 내용이나 궁금하신점은 full paper를 참고하시고나 댓글로 남겨주세요.

 

감사합니다.

Dongjin Kim

 

 

댓글을 달아 주세요