이번에 소개해 드릴 논문은 데이터 없이 트레이닝된 모델만 있을 때, 우리가 knowledge distilling을 통해서 새로운 모델을 얻을 수 있을까하는 문제를 다루고 있습니다. 여러가지 문제 - 보안 레벨이라든지, 개인 정보 보호라든지 - 때문에 원 모델을 학습시킨 데이타가 접근 가능 하지 않을 경우를 가정해본다면, 충분히 생길 수 있는 문제일 것 같습니다.

 

일단, 원 모델을 학습시킨 데이타가 접근 가능하지 않기 때문에, 다음과 같은 상황에 유사하다고 할 수 있겠습니다. 선생님과 학생이 있는데, 사용가능한 교재가 없는 것이죠. 다음과 같은 문제들을 해결해야, 학생을 가르칠 수 있을 겁니다.

  1. 교재를 어떻게 준비할까요? (우리가 데이타 포인트들을 만들 수 있을까요?)
  2. 교재의 양이 충분치 않을 경우, 어떻게 잘 가르칠 수 있을까요?

이와 같은 문제를 해결하기 위해, 저자들은 다음과 같은 구조의 뉴럴 네트워크를 제안합니다.

M은 학습된 모델입니다. (따라서 고정되어있습니다) 학습되는 부분은 G와 D인데, 다음과 같이 동작합니다.

  • D는 z hat 을 x hat으로 부터 생성하는 역할입니다. z hat은 x hat의 dimensional representation이라고 볼 수 있습니다. z bar 와 z hat, y bar 와 y hat의 차로부터 네트워크를 업데이트 할 loss function을 구합니다.
  • 위 네트워트 (저자들은 KegNet 이라고 이름 붙였습니다)가 학습이 끝나면, 이젠 학생 네트워크를 학습시킬 수 있습니다. G는 학생 네트워크를 학습시킬 데이타 포인트들을 만들어네는 네트워크 역할을 하게 됩니다.
  • 학생 네트워크는 M에서 tensor decomposition을 통해서 만들어냅니다. 저자들은 많은 방법 중에서 Tucker decomposition을 선택했구요. Tensor decomposition을 통해서 만들어낸 경량화된 모델은 fine tuning이 필요한데, fine tuning을 위한 데이터를 KegNet을 통해서 만들겠다는 것입니다.
  • 만들어지는 데이타 포인트들이 너무 유사해 지는 것을 방지하기 위해, loss function에 diversity를 고려한 항이 추가되어 있습니다.
  • KegNet을 y와 z를 만들기 위한 auto-encoder의 형태를 하고 있다고 이해할수 있다고 합니다.
  • 또한, 학습시키기위한 데이타 포인트들을 만들기 위한 Generative Adversarial Network (GAN)의 형태로 볼 수도 있다고 합니다.

생성된 이미지들을 보면 저자들이 의도한대로 구현된 것을 보실 수 있습니다. 물론, 사용한 데이터셋이 다른 데이터셋들에 비해 상대적으로 작은 편을 감안하면, 발전시킬 여지가 많은 것이 아닐까 추측해봅니다.

 

정량적으로 성능 분석한 결과 일부를 발췌해 보았습니다. Tucker decomposition후에 생긴 성능 손실을 상당한 수준으로 복구하신 것을 볼 수 있습니다. 괄호 안의 숫자는 Tucker decomposition후에 얼마나 모델 사이즈가 줄었나하는 것을 표시하기 위한 scaler입니다.

 

더 자세한 부분을 알고 싶은 분들을 위해 원문 링크를 첨부합니다.

댓글을 달아 주세요

본 게시물은 필자가 2019년 12월 8일부터 진행되었던 NeurIPS 논문중에서 인상깊었던 논문 및 아이디어를 포스팅 한 것입니다. 본 포스팅은 논문에 첨부된 그림을 첨부했으며 문제가 될 시 삭제하도록 하겠습니다. 또한 본 포스팅은 Deep Q Network에 대한 기본 지식을 가지고 있다는 전제하에 작상된 포스팅입니다. Deep Q-Network에 대한 내용은 아래의 링크를 참조하시길 바랍니다. 논문 링크는 이곳을 클릭해주세요.

 

Sample-Efficient Deep Reinforcement Learning via Episodic Backward Update


 

강화학습을 실제 환경에 적용하기에는 쉽지 않습니다. Aracade Learning 환경에서 Deep Q-Network를 사용하여 학습을 시킬 시 2억개의 프레임을 사용하며 이는 실제로 39일동안 이루어집니다. 이는 사람이 실제로 게임에서 높은 점수를 받기까지와의 시간차이가 많음을 의미합니다. 본 논문에서는  Deep Q-Network에서 랜덤하게 한스텝 이동에 대한 샘플을 추출하는 샘플링 방법에 효율성이 떨어지는 이유를 다음과 같이 2가지 제시했습니다.  

  • sparsity하게 보상을 갖는 환경에서 의미있는 reward 값을 가지는 한 스텝에 대한 샘플을 뽑을 확률이 적습니다. 
  • 학습 초기에는 학습이 되지 않아 모든 reward의 값이 0이므로 한스텝 이동으로 Q 값을 업데이트 하는것으로는 학습을 할 수 없습니다. 따라서 0이 아닌 reward 값이 나올때까지 전혀 학습이 되지 않는 현상을 가지게 됩니다. 

위의 문제를 아래의 간단한 예시를 통해 표현할 수 있습니다. 현재 agent가 s1에서 시작하여 s4에 도착하기까지 총 5번의 step을 가지게 됩니다. 이때 5번째 스텝이 agent의 목표인 terminal state에 도달했으므로 reward 1점을 얻고 한번의 에피소드가 끝나게 됩니다. 기존의 Deep Q Network는 에피소드가 끝난 후 얻어진 5개의 샘플을 replay memory에 저장한 후 uniform random 샘플링을 수행합니다. 이 과정에서 가장 최대의 값을 가지는 reward에 해당하는 샘플이 우선적으로 샘플링 되지 않습니다. 또한 모든 terminal state를 제외한 모든 state의 reward 값이 0이므로 한스텝으로 학습이 불가능합니다. 따라서 본 논문에서는 하나의 에피소드가 끝나면 terminal state에서부터 순차적으로 backward 하며 샘플링 하는 방식을 사용하여 학습 시 최적의 path를 찾는것을 목표로 Episodic Backward Update 방식을 제안했습니다.  아래의 b 그래프에서는 Uniform random하게 샘플링 하는 방식보다는 EBU 방시을 사용하였을때 바로 최적의 path를 찾는 결과를 보여줍니다. 

 

uniform sampling 방식과 EBU 방식의 비교 

본 논문에서는 Episodic Backward Update (EBU) 방식을 제안했습니다. EBU 방식은 기존 Deep Q Network에서 사용하는 replay memory로부터 전체 에피소드를 샘플링하고 샘플링 된 에피소드 전체를 backward 방식으로 순차적으로 전파합니다. EBU 방식을 사용하면 에피소드 내 모든 트랜지션을 업데이트함으로써 reward 전파 속도를 높일 수 있습니다. 위의 예시에서는 오직 5번의 업데이트 후에 최적의 path를 찾게 됩니다. 아래는 Q table을 사용하는 Q-learning 방식에 EBU를 적용한 수도코드 입니다. 

Tabular Q-learning Pesudo code

하지만 실제상황에서는 state와 action의 수가 많으므로 Q table을 사용하는 방식을 사용하는 데 한계가 있습니다. 따라서 신경망을 사용하여 Q value를 근사하는 Deep Q Network를 사용하고 있으며 DQN에 EBU를 적용한 수도코드는 아래와 같습니다. 코드의  beta 파라미터는 (0,1) 값을 가지며 "backwardness' 의 정도를 의미합니다. beta 0으로 설정할 시 아무런 값도 전파하지 않겠다는 뜻이 되며 1로 설정하면 리워드를 전파 하겠다는 의미로 해석할 수 있습니다. 

Deep Q Network pesudo code 

아래의 그림은 replay memory를 시각화 하여 EBU의 원리를 보여주는 그림입니다. 계산 효율적인 재귀 알고리즘을 통해, sparsitiy한 reward가 샘플링된 에피소드의 모든 스텝에 직접 전달되는 것을 알 수 있습니다. 

EBU를 적용했을때 기존의 DQN 대비 성능개선이 얼마나 되었는지를 보여주는 결과를 아래에 제시했습니다. 49개의 Atari 게임 도메인에서 39개의 게임에서 기존 DQN보다 좋은 성능을 보였습니다. 또한 약 20배 적은 수의 샘플 수 (200M -> 10M)로 기존 DQN의 성능과 유사한 성능을 보임을 알 수 있었습니다. 

Atari 도메인에서의 기존 DQN 대비 EBU의 성능 개선

 

댓글을 달아 주세요

"Relational Knowledge Distillation" Review

카테고리 없음 2019. 11. 27. 17:34 Posted by 랏츠베리

본 포스팅은 과거 제가 포스팅하였던 모델 압축 기술의 한 가지인 Pruning에서 화제를 전환하여 Knowledge Transfer의 일부인 Distillation 에 대한 연구 결과를 리뷰하도록 하겠습니다. 포스팅에 앞서, 주제와 관련된 모든 연구 내용은 Relational Knowledge DistillationAuthor의 YouTube를 참조했음을 먼저 밝힙니다.

 

Preliminary


Knowledge Transfer는 크게 Knowledge Distillation과 Transfer Learning으로 구분할 수 있습니다. 차이점을 설명하기 위해, Transfer Learning은 A라는 도메인에 대해 학습된 A'라는 모델이 준비가 된 경우, 그리고 A가 매우 크고 복잡한 데이터라고 가정합시다. 이 때, A'라는 모델을 보다 단순한 B라는 도메인에 대해 학습시키고자 할 때, A'으로부터 미리 일반화된 파라미터를 전이하는 과정을 말합니다. 한편, Knowledge Distillation은 A라는 도메인에 대해 학습된 A'라는 모델이 존재하는 경우, 이 A'라는 모델이 매우 잘 일반화되었다고 가정합시다. 이 때, 같은 A라는 도메인에 대해 B'으로 정의된 모델을 학습하고자 할 때, A'에서 학습된 정보를 B'에 전이하는 과정을 말합니다. Knowledge Distillation은 같은 domain에 대하여 일반화가 잘 된 모델과 유사하도록 다양한 모델의 성능을 확보할 수 있는 기회가 있다는 장점이 있는데요. 이를 통해, 최근 연구를 살펴보면, 경량화의 한 축으로 Knowledge distillation을 활용하는 사례도 다수 등장하였습니다. 또한, Knowledge Distillation은 일반화가 잘 된 모델 (Teacher model)로부터 보다 작은 사이즈의 모델 (Student model)에 학습 내용을 전이할 때 Student model의 성능을 잘 이끌어낼 수 있다는 장점도 있지만, Teacher model과 같은 규모의 모델로 전이하는 경우에는 기존 모델보다 더 우수한 성능이 나타나는 가능성도 확인이 되었습니다.

 

History


Knowledge Distillation의 전략은 몇 가지 Methodology로 구분할 수 있습니다. 먼저, Teacher model과 Student model이 규모 차이가 있는 경우, Hinton et al., NIPS, 2015에서는 아래의 그림.1처럼 Class Probability를 Transfer하여 Student model을 학습하였습니다. Softmax의 결과를 Temperature로 더욱 Smoothing하여 Feature를 추출할 물리적인 node 개수가 적은 Student model의 classifcation 성능을 일반화가 잘되도록 Support 요소를 적용한 부분이 인상적입니다.

그림.1 Transfer Class Probability

 

한편, Romero et al., ICLR, 2015처럼 Hidden Activation을 Transfer하는 방식도 소개되었습니다. 규모가 큰 Teacher model의 hidden activation (C')과 보다 규모가 작은 Student model의 hidden activation (C)이 아래의 그림처럼 주어질 때, 본 방식의 목적은 C'과 C가 같아지도록 만드는 것을 목표로 합니다. 그러나, C'과 C는 기본적으로 서로 다른 채널 개수를 갖기 때문에 L2-distance를 구할 수가 없으므로, C'을 C와 같은 벡터 공간으로 transform하기 위해 적절한 transform layer를 선택해야하는 조건이 있습니다.

그림.2 Transfer Hidden Activation

 

또 하나의 방법으로는 Zagoruyko et al., ICLR, 2017처럼 Attention을 Transfer하는 방법이 있습니다. 아래의 그림처럼 Convolution Output Tensor가 존재할 때, 이를 Channel wise하게 평균을 취하여 Special attention Matrix를 생성하고 이들 간의 Transfer를 하는 방식입니다.

그림.3 Transfer Attention

 

이와 다르게, 규모가 유사한 모델 간의 Knowledge Distillation에 대한 방법들이 있습니다. (본 포스팅에서는 첨부하지 않겠습니다.) Furlanello etl al., ICML, 2018, Bagherinezhad et al., arXiv, 2018.

 

 

Summary


본 논문은 이와 같은 유형의 Distillation기법 즉, Teacher model의 Output을 Student model의 Output에 전이하는 방식을 일반화 하여 Individual Knowledge Distillation (IKD)라 정의하였으며, 이러한 방식과는 다르게 아래의 그림.4처럼 Relational Knowledge Distillation (RKD)을 통한 Knowledge Distillation을 제안하였습니다.

그림.4 IKD and RKD Idea

 

이는 그림.5에서 의미하 듯, Teacher model과 Student model 간의 output vector를 individual하게 mapping하는 것이 아니라 이들의 관계 즉, distance와 angle 두 가지 측면을 고려한 potentiality를 전이하도록 하여 보다 student model이 output의 상관관계는 이해하지만 mapping 결과는 주도적으로 만들도록 하였습니다. 본 논문의 전이 방식에서 제안하는 2가지 loss function (distance, angle)은 해당 논문을 확인해주세요.

그림.5 IKD and RKD Knowledge Distillation

 


기술한 내용 외에 본 논문에 대한 궁금한 점은 댓글로 남겨주세요.

 

감사합니다.

Mincheol Park

댓글을 달아 주세요

본 게시물에서는 "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 신고  댓글주소  수정/삭제  댓글쓰기

    감사합니다.