2017년 CVPR에서는 수많은 딥러닝 관련 논문들이 쏟아져 나왔습니다. 그 중에 학습 데이터가 부족한 상황에서 fine-tuning 성능을 끌어올릴 수 있는 방법을 제안한 논문이 있어 소개드리려고 합니다. 특히, 의료 데이터의 경우 supervision 학습을 위한 데이터를 확보하기에는 비용과 시간적인 측면에서 어려운 경우가 많습니다. 이 논문에서는 기존에 공개되어 있는 양질의 large-scale supervision 데이터셋으로부터 현재 학습하려는 문제에 도움이 될 만한 데이터들을 선별적으로 가져와 학습에 함께 활용하는 방법을 제안합니다.

Introduction

파라미터의 개수가 많은 Deep Neural Network (DNN) 을 학습하기 위해서는 많은 양의 학습 데이터가 필요합니다. 하지만, 많은 데이터를 확보하기에는 현실적으로 어려운 경우가 다반사입니다. 이러한 경우 가장 흔하면서도 정석적으로 사용되는 방법이 fine-tuning 기법입니다. 학습하고자 하는 모델의 파라미터 값을 랜덤값으로 초기화하는 대신에, ImageNet과 같은 데이터에서 학습된 모델의 파라미터로 초기화하여 학습을 진행하는 것입니다. 그럼에도 불구하고, 학습하고자 하는 문제의 데이터 개수가 적기 때문에 학습 횟수를 반복할수록 금방 오버피팅이 발생하고 성능의 저하가 발생합니다.

이 논문에서는 학습 데이터가 적은 상황에서, ImageNet이나 MS COCO와 같은 large-scale supervision 데이터로부터 학습에 도움이 될 만한 데이터들을 선별적으로 가져와서 활용하자고 제안합니다. 그렇다면, 어떤 데이터가 풀어야 할 문제에 도움이 될 만한 데이터인가 를 정하는 것이 큰 문제로 다가오게 됩니다. 여기서는 low-level 특성이 풀고자 하는 문제의 이미지들과 비슷한 정도를 기준으로 학습 데이터를 선별하게 됩니다.

즉, 해결하려고 하는 target learning task  T_t 가 적은 양의 학습 데이터  D_t 를 가지고 있을 경우,
외부의 다른 source learning task  T_s 가 상대적으로 많은 양의 데이터  D_s 를 가지고 있으므로,
low-level 특성이  D_t 와 비슷한 이미지들을  D_s 로부터 선별적으로 가져와서 학습을 진행하자는 것이 본 논문의 핵심 내용입니다.

Selective Joint Fine-Tuning

[20170907] Research seminar - Google Slides 2017-09-11 16-25-12

학습에 도움이 될 만한 데이터들을 선별하고, 선별된 데이터들과 기존의 데이터를 함께 학습하기 위해 selective joint fine-tuning 이라는 방법을 논문에서 제안하고 있습니다. 기본적인 학습 구조는 multi-task learning 이라는 방법을 사용합니다. 여러 개의 task를 하나의 공유된 convolutional neural network (CNN) 로 학습을 진행하는 방법입니다.

Similar Image Search

Source domain image와 low-level 특성이 비슷한 이미지들을 target domain data로부터  selective하게 가져오기 위해서, 논문에서는 이미지들을 low-level을 잘 표현할 수 있는 feature vector로 변환하고, feature vector 간의 유사도를 계산하여 이를 기반으로 각 target data의 nearest neighbor을 source data로부터 찾게 됩니다.

Feature: Histograms of filter responses

[20170907] Research seminar - Google Slides 2017-09-11 16-52-54

우선, 이미지를 feature vector로 변환하기 위해 Garbor filter 또는 Convolutional filter를 사용합니다. Convolutional filter의 경우, ImageNet에서 미리 학습된 AlexNet의 1~2번째 layer가 사용됩니다. Gabor filter와 Convolutional filter를 보면, 유사한 특성을 지님을 위 그림에서 확인할 수 있으며, 이러한 특성은 이미지로부터 low-level 특성을 뽑아내기에 적절하다고 볼 수 있습니다.

이미지를 위의 필터들 중 하나로 연산을 수행할 경우, 필터를 통과한 filter response map (feature map)을 얻을 수 있습니다. 특성만을 남기고 위치정보를 없애기 위해 feature map의 값들을 histogram으로 변환시킵니다. 한 계층의 convolutional layer에는 여러 개의 filter가 존재하므로 각 filter로 생성되는 feature map의 histogram을 모두 concatenate 함으로써 해당 layer의 feature vector를 얻을 수 있습니다.

Measure the Distance

Target image와 source image의 low-level 특성이 얼마나 유사한지를 계산하기 위해, 본 논문에서는 아래와 같은 수식을 통해 유사도를 계산합니다.

 H(x_i^t,x_j^s) = \sum _{h=1} ^{D} w_h[\kappa(\phi_h^{i,t},\phi_h^{j,s}) + \kappa(\phi_h^{j,s},\phi_h^{i,t})]

여기서  w_h = 1 / N_h 이며,  N_h h번째 layer의 convolutional kernel 개수를 의미합니다. CNN에서 각 convolution layer의 kernel 개수가 다를 수 있으므로, 이를 normalization 하는 역할을 하게 됩니다. target task ti번째 이미지  x_i^t 의 low-level feature vector는  \phi_h^{i,t} 로, source task sj번째 이미지의 low-level feature vector는  \phi_h^{j,s} 로 나타냅니다.  \kappa (\cdot,\cdot) 은 두 확률분포가 얼마나 diverge한지를 계산하는 KL-divergence를 나타냅니다. 위 계산을 통해 특정 source task image와 가장 유사한 이미지들을 target task image들로부터 찾아낼 수 있게 됩니다.

Hard Samples in the Target Domain

각각의 source data에 대해 몇 개의 유사한 target data를 가져올 것인가 에 대한 고민 또한 논문에서 보여주고 있습니다. 가장 naive한 방법으로는 모두 동일한 개수를 샘플링할 수 있겠지만, 성능 향상의 관점에서 봤을 땐 현재의 classifier가 잘 학습하지 못하는 어려운 데이터에 대해서 더 많은 유사 target data를 가져오는 것이 유리합니다. 따라서 저자는 특정 target data에 대한 classification uncertainty를 entropy 계산을 통해 측정합니다.

 H_i^m = -\sum_{c=1}^C p_{i,c}^m \log (p_{i,c}^m)

여기서 C는 클래스의 개수를, p_{i,c}^mi번째 학습 샘플이 c번째 클래스에 속할 확률을 의미합니다. entropy 값이 높을수록 불확실성이 높아 classifier 입장에서 어려운 데이터라고 볼 수 있습니다. 위 엔트로피 계산을 활용해 m번째 학습 단계의 각 데이터 x_i에 대한 source data 샘플 개수를 아래와 같이 계산합니다.

[20170907] Research seminar - Google Slides 2017-09-12 13-29-18

위 샘플링 방식의 의도를 직관적으로 이해하자면, 현재의 classifier가 잘 구별해내지 못하는 어려운 target data들(classification uncertainty가 높거나, 정답을 틀린 경우)에 대해서 더 많은 support source data를 추가함으로써 다음 번 학습에는 이전에 어려웠던 target data들이 좀 더 쉽게 학습할 수 있도록 도와주는 역할을 한다고 볼 수 있습니다.

Experiments

본 논문은 제안하는 방법의 효과를 입증하기 위해 다양한 실험을 진행 하였습니다.

[20170907] Research seminar - Google Slides 2017-09-12 13-41-41.png

우선, 첫 번째 실험은 Gabor Filter와 Conv Filter의 성능 비교와 더불어, low-level feature와 high-level feature의 성능 비교 또한 진행하였습니다.

결과를 보면, Gabor filter보다는 Conv filter가 성능이 더 높고, high-level feature보다는 low-level feature를 활용하는 것이 성능이 더 높음을 볼 수 있습니다.

위 실험은 일반적으로 활용되는 fine-tuning (fine-tuning w/o source domain)의 성능에 비해 제안하는 selective joint fine-tuning을 활용할 경우 2%에서 많게는 10% 까지 성능 향상이 가능하다는 것을 보여주고 있습니다. 물론, 실험에 사용된 Stanford Dogs 120와 Oxford Flowers 102는 카테고리가 많은 반면 각 카테고리당 제공되는 학습 데이터가 100장 미만인 데이터입니다.

[20170907] Research seminar - Google Slides 2017-09-12 13-49-07.png

Caltech 256 데이터셋에서도 마찬가지로, 각 class 당 학습 데이터의 개수를 15, 30, 45, 60개로 늘려가며 성능을 기존의 fine-tuning과 제안하는 selective joint fine-tuning에 대해 비교하였으며 보시는 바와 같이 2~4% 가량의 성능 향상이 있음을 보여주고 있습니다.

[20170907] Research seminar - Google Slides 2017-09-12 13-51-20.png

MIT Indoor 67 데이터셋에 대해서는 source data를 무엇을 택하느냐에 따라 성능 향상에 차이가 있음을 보여주고 있습니다. ImageNet 보다는 Places 데이터셋을 source data로 사용했을 때 더욱 많은 성능 향상을 가져다줍니다. 이는 target data와 source data가 유사할수록 제안하는 방법론의 성능 향상이 더 극대화될 수 있다는 것을 보여줍니다.

[20170907] Research seminar - Google Slides 2017-09-12 13-53-27.png

위 이미지들은 ImageNet source data에서, 제안하는 similarity distance를 활용해 유사한 이미지들을 찾아낸 결과를 보여줍니다. 서로의 classification label이 상당히 다름에도 불구하고 이미지가 가지고 있는 low-level 특성이 꽤나 유사함을 볼 수 있습니다. 예를 들어 두 번째 행의 Pink Primrose와 Bee는 전혀 다른 label이지만, 이미지 안에 존재하는 꽃의 텍스쳐나 색상이 비슷합니다. 따라서, 선택한 Bee 이미지가 Pink Primrose 이미지를 구별하기 위한 좋은 low-level feature를 형성하는데 도움을 줄 수 있다는 것을 간접적으로 보여준다고 볼 수 있겠습니다.

Conclusion

지금 보편적으로 활용되고 있는 ImageNet pre-trained 모델 기반의 fine-tuning 방법이 학습 데이터 부족 문제를 어느정도 해결해주고 있지만 최선의 방법은 아닙니다. 학습하려는 target task의 데이터가 ImageNet 데이터와 유사성이 적을수록 fine-tuning의 효과 또한 더욱 떨어지게 됩니다. 특히, 의료 영상은 일상에서 수집되는 이미지 데이터와는 유사성이 훨씬 적기 때문에 CNN에서 의료영상을 구별하기 위한 견고한 low-level feature를 학습하기가 만만치 않습니다. 이처럼 학습 데이터가 부족한 상황에서 기존에 존재하는 양질의 데이터들을 최대한 활용함으로써, 추가적인 labeling 비용 없이 성능 향상을 꾀할 수 있는 좋은 연구주제라고 생각합니다.

Posted by:byungjae89

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s