"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들이 훨씬 다양한 양상을 보입니다.