일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Class activation map
- 코딩테스트
- Explainable AI
- AI
- 백준
- 딥러닝
- Unsupervised learning
- Score-CAM
- 코딩 테스트
- Artificial Intelligence
- 설명가능한
- coding test
- python
- grad-cam
- meta-learning
- xai
- 인공지능
- keras
- 머신러닝
- Deep learning
- SmoothGrad
- Machine Learning
- 설명가능한 인공지능
- cs231n
- Interpretability
- 기계학습
- Cam
- 시계열 분석
- GAN
- 메타러닝
- Today
- Total
iMTE
Meta-Learning 2. Optimization as a model for few-shot learning 본문
Meta-Learning 2. Optimization as a model for few-shot learning
Wonju Seo 2019. 4. 20. 19:47Paper : OPTIMIZATION AS A MODEL FOR FEW-SHOT LEARNING
Download : https://openreview.net/forum?id=rJY0-Kcll¬eId=ryq49XyLg
Abstract
큰 data domain에서 deep neural networks는 큰 성공을 보여주었지만, few-shot learning tasks에서는 성능이 별로 좋지 않았다. (이는 각 class의 매우 적은 example을 보고 빠르게 일반화를 해야하기 때문이다.) 큰 network (e.g., high capacity classifier)에서 gradient-based optimization은 많은 example에 많은 iteration을 해야 성능이 잘나온다는 것이 일반적인 믿음이다. 이 논문에서 저자는 few-shot 접근으로 learner neural networks를 학습하는데 사용되는 optimization algorithm을 학습하는 LSTM 기반의 meta-learner를 제안한다. 저자의 모델의 parameterization을 통해 정해진 양의 update가 이루어지는 시나리오에 대해 적절한 parameter update를 학습하는 동시에 학습을 신속하게 convergence할 수 있는 learner (e.g., classifier)의 general initialization을 학습할 수 있다.
Introduction
Deep learning이 많은 labeled data에서 좋은 성능을 보인 것은 최적화 알고리즘이 많은 labeled data에 대해서 많은 iteration 요구한다는 점에 의존한다. 하지만, 만약 few labeled examples만을 학습에 사용하는 경우에는 이런 종류의 optimization은 문제가 생긴다. 데이터가 많은 데이터를 갖고 있는 경우와 달리 각 class에 대해 적은 labeled (or annotated) examples을 갖고 학습을 시킨다. 이 task의 주요 동기는 사람, 심지어 아이들까지도 주어진 물체에 대해 적은 example을 갖고도 '일반화'를 할 뿐만 아니라, 이 탁월한 모델이 많은 유용한 응용을 가질 수 있기 때문이다. 첫번째로, reasonable한 성능을 얻기 위해, 수백만 개의 label이 있는 example이 필요하지 않기 때문에, data collection에 대한 부담을 줄일 수 있다. 그리고, 많은 분야에서, data는 다양한 class를 갖는 특징을 나타내지만, class당 example이 별로 없다.
Few labeled examples이 주어졌을 때, gradient-based optimization이 실패하는 두가지 주요 이유가 있는 것으로 보인다. 첫째로, momentum, adagrad, adadelta, adam과 같은 gradient-based optimization algorithm의 변형들은 지정된 수의 update 제한 조건에서 잘 수행하도록 설계되지 않았다. 구체적으로, non-convex optimization problem에 적용이 될 때, reasonable한 hyper-parameters를 사용하면, 이러한 알고리즘들은 좋은 solution으로 수렴되는 속도를 훨씬 뛰어 넘는 수렴 속도를 보장하지 못한다. 두번째로, 고려해야 할 개별 data set에 대해서 network의 parameter는 random initialization으로 시작해야한다. 이는 몇 가지 update 이후, 좋은 solution으로 수렴 할 수 있는 기능을 상당히 손상시킨다. Transfer learning은 더 많은 labeled data를 갖는 다른 task로 부터 학습된 network를 fine-tuning 함으로써, 이 문제를 해결하는데 적용될 수 있다. 하지만, pre-trained network의 장점은 target task와 다를 수록 감소한다. 어느 data set에 대한 학습을 시작하기에 좋은 point가 될 수 있는 유익한 common initialization을 학습하는 체계적인 방법이 필요하다.
Meta-learning은 learning problem을 two levels로 구성하는 것을 제안한다. 첫번째는, 제시된 각각의 분리된 task 내에서 knowledge를 빠르게 획득하는 것이다. 이 프로세스는 모든 task에서 학습된 정보를 더 느리게 추출하는 두번째 process에 의해 guide된다.
저자는 few-shot learning의 문제의 gradient-based optimization으로 학습된 neural network의 약점을 해결하는 meta-learning 방법을 제시한다. 저자는 learner neural network classifier를 최적화 하는 것을 학습한 LSTM 기반의 meta-learner를 제안한다. 이 meta-learner는 task 내의 short-term knowledge와 모든 task 내의 common long-term knowledge를 얻어낸다. 설정된 update 횟수만큼으로 좋은 generalization 성능을 얻을 수 있는 최적화 알고리즘의 기능을 directly capture하는 objective를 사용함으로써, meta-learner model은 learner classifier를 빠르게 좋은 solution으로 수렴하도록 학습된다. 또한, meta-learner의 formulation은 learner classifier를 위한 task-common initialization을 학습할 수 있으며, 모든 tasks가 공유하는 fundamental knowledge를 capture 한다.
Task Description
전형적인 machine learning setting에서, dataset D는 D_train과 D_test로 나뉜다. 그러나, Meta-learning에서는 여러개의 regular dataset을 포함하는 meta-sets을 다루는데 다음의 조건을 만족한다.
(meta-set을 표현하기 위해서 delta를 사용했는데, 논문에서는 다른 형태의 문자를 사용하고있다. Tistory는 지원하지 않음으로 delta로 나타내겠다.)
k-shot, N-class classification task는, 각 N개의 class에서 k개의 labeled sample을 선택하는 것을 의미한다. 따라서, D_train은 k*N개의 examples을 포함한다. training과 test set으로 구성된 각 dataset을 설명하기 위해서 episode라는 용어를 사용한다.
Meat-learning에서 meta-training, meta-validation, meta-testing과 같은 서로 다른 meta-set을 얻는다.
1) D_meta-train에서, meta-learner를 학습시키는 과정에 흥미가 있으며, learner를 학습시키는 D_train과 성능을 계산하는 D_test를 포함한다.
2) D_meta-validation을 사용해서, meta-learner의 hyper-parameter selection을 수행하고 D_meta-test에서 generalization performance를 계산한다.
Few-shot learning setting에 대응하도록, 각 training set은 적은 labeled example을 포함하며, corresponding test set에 좋은 성능을 일반화하는데 사용되어야 한다.
Model
Model Description
각 single dataset (e.g., episode)에 대해 고려해보자. parameter theta를 갖는 learner neural network를 D_train으로 학습시키는 것을 가정해보자. Deep neural networks를 학습시키는데 사용되는 standard optimization algorithm은 gradient descent의 변형이고 다음과 같은 update rule을 갖는다.
위의 식을 잘 보면 LSTM의 cell state update 식과 비슷 하다라는 것을 알 수 있다.
따라서, neural network를 학습하는 update rule을 학습하는 LSTM 기반의 meta-learner를 저자는 제안하였다. LSTM의 cell state를 learner의 parameter로 정하였다. 저자는 i_t와 f_t를 parameteric form으로 정의하고, meta-learner가 update의 과정을 통해서 optimal value를 결정하도록 하였다.
위의 식은, learning rate가 위의 여러 value의 함수라는 것을 의미하고, 이 정보를 통해서 meta-learner는 divergence를 피하면서 learner가 빠르게 학습할 수 있도록 learning rate를 finely control할 수 있게 된다.
f_t에 대해서, optimal choice는 1이 아닌 것 처럼 보인다. 직관적으로, learner의 parameter를 줄이고, 이전 값의 일부를 잊어버리는 것을 정당화하는 것은 learner가 현재 bad local optima 에 있어서 탈출을 해야할 필요가 있을 경우이다. 이것은 loss가 크지만, gradient가 0에 가까운 상황이다. 따라서, forget gate에 대한 하나의 제안은 forget gate의 이전 값 뿐만 아니라 'loss' 정보의 함수가 되도록 하는 것이다.
또한, LSTM의 cell state c0의 initial value를 학습하여 meta-learner의 parameter로 처리할 수 있다. 이 initial value를 학습하면 meta-learner가 learner의 최적 initial weights를 정할 수 있으므로 학습이 빠르게 진행할 수 있는 유익한 초기점에서 학습이 가능하다. 마지막으로, meta-learner의 update rule이 LSTM의 cell state update와 일치하지만, meta-learner는 GRU 와 비슷하게 hidden state update와 유사하지만, forget과 input gate가 하나로 묶여있지 않다.
Parameter sharing & preprocessing
수많은 parameter를 갖는 deep neural networks를 update를 meta-learner가 생산하길 원하기 때문에, parameter sharing을 사용해서 meta-learner parameter의 explosion을 방지한다. 따라서, Learner gradient의 coordinates에 걸쳐 parameters를 공유한다. 즉, 각 coordinate에는 own hidden and cell states가 있지만, LSTM parameter는 모든 coordinates에서 동일하다. 이를 통해 저자는 compact LSTM을 사용할 수 있으며, 추가적으로 각 coordinate에 동일한 update rule이 적용되지만, 최적화 중에는 각 coordinate의 개별 history에 의존하는 'nice property'를 갖는다. 저자는 입력이 각 dimension i에 대해 gradient coordinate 및 loss inputs 을 다음과 같이 정의함으로써, parameter sharing을 쉽게 구현하도록 하였다.
Gradient와 loss가 매우 다른 magnitude를 갖게 될 수 있으므로, 값을 normalizing하여 meta-learner가 학습중에 제대로 사용할 수 있도록 주의해야 한다.
이 전처리 과정은 gradient와 loss의 scale을 조정하는 동시에 magnitude와 sign 정보를 분리한다. p=10을 사용할 때 저자의 실험이 잘 동작함을 발견하였다.
Training
few-shot learning tasks에 효과적으로 LSTM meta-learner를 학습을 어떻게 시키는게 좋은가? 이 task를 잘 수행하기 위해서는 testing time과 training condition을 일치시키는 것이 중요하다. Meta-learning을 평가하는 과정동안, 각 episode에서 good meta-learner model은 D_train 의 learner의 gradient와 loss가 주어졌을 때, D_test에 좋은 성능을 내도록 classifier의 update를 제안한다.
그러므로, test time condition을 맞추기 위해서, 각 dataset을 고려할 때, 학습의 목적은 D의 test set인 D_test에서 생성된 classifier의 L_test이다. D_train의 example을 반복하면서, meta-learner는 각 시간 단계 t 마다 classifier (e.g., learner)로 부터 loss, gradient 등의 정보를 받고 새로운 parameter 집합을 제안한다. 이 과정은 T번 정도 반복되고, classifier와 최종 매개변수가 test set에 평가되어 meta-learner를 학습하는데 사용이 될 loss 정보를 얻어낸다. Training algorithm은 알고리즘 1에 설명되어 있고, computation graph는 밑의 그림에 나와있다.
Initialization of meta-learner LSTM
LSTM을 학습할 때, small random weights로 LSTM을 초기화를 하고 forget gate bias를 큰 값으로 정하기 위해서 forget gate를 1에 가깝게 초기화를 한다. forget gate bias setting에 더해서, input gate value를 작게 초기화할 필요가 있다. 이러한 초기화 과정을 통해서, meta-learner는 small learning rate를 갖고 normal gradient descent에 가깝게 시작하고 이는 안전한 초기 학습을 도와준다.
Batch normalization
Batchnormalization은 learner's hidden layers 사이의 internal covariate shift를 줄임으로써, deep neural networks의 학습의 속도를 향상시키는 방법이다. 각 layer의 pre-activation을 정규화함으로서 covariate shift를 제거할 수 있다. 학습과정에서는, mean과 standard deviation이 학습되고, 평가과정에서는 training set에서 계산된 통계값이 사용된다. 하지만, meta-learning에 적용할 때, episode 사이에 information leak가 발생하므로, batch-normalization을 사용할 때 주의해야한다. 이 문제를 방지하기 위해서는 meta test 단계에서 statistical 값을 계산하지 않고, meta-training의 mean을 사용하는 것이다. meta-training과 meta-testing 조건이 변경되어 meta-learner가 meta test에 없는 bath statistical value에 의존하는 optimization method를 학습하기 때문에 성능에 나쁜 영향을 준다. 최대한 두 단계를 유사하게 유지하기 위해서 저자는 D_meta-test 중 각 data set에 대한 statistical value를 수집하는 것이 좋은 접근이지만, 다음 data set을 고려할 때 실행중인 statistics을 지우는 것이 더 좋은 전략이라는 것을 알았다. 따라서, meta-testing 중에는 meta-training과 test set 모두에 batch statics를 사용하고 running average를 사용한. 이로 인해 다른 data set간에 누출되는 정보가 없지만, meta-learner는 training과 test간에 일치하는 조건에 대해 학습할 수 있게 된다. 마지막으로, 저자는 거의 훈련 단계를 수행하지 않기 때문에, 더 높은 preference가 이후 값에 주어지도록 running average를 계산하였다.
Related work (skip)
Evaluation
저자는 k-shot, N-class classification setting을 고려하였다. 첫번째로, 모든 클래스 목록을 분리된 집합으로 분리하고 meta-training, meta-validation, meta-test에 할당한다. k-shot, N-class task dataset D=(D_train, D_test)를 생성하기 위해서 저자는 다음의 과정을 제시한다. 1) 먼저 고려하는 meta set에 해당하는 class 목록에서 N개의 class를 sampling 한다. 2) 각 class에서 k 개의 example을 sampling 한다. 3) k examples은 함께 D_train을 구성한다. 그런 다음 나머지 example의 고정된 양을 sampling 하여 D_test를 생성한다. 4) 일반적으로 test set는 class 당 15개의 example이 있다. 5) meta-learner를 교육 할 때 반복적으로 이러한 dataset (episode)를 sampling하여 반복한다. 그러나, 각 method를 평가하기 위해서 고정된 수의 dataset를 생성해야한다. (meta-validation, meta-testing) 저자는 mean accuracy의 신뢰 구간이 작아지도록 충분한 dataset을 생산하였다.
Learner에 대한 내용은 생략.
Experimental Results
본 논문에서는 Mini-ImageNet dataset을 사용하여 저자의 meta-learner의 성능을 평가하였다. 저자는 64, 16, 20개의 class를 학습과 검증과 testing에 각각 사용하였고. 1-shot과 5-shot을 5개의 class에 적용하였다. 각 test set에는 평가를 위해서 각 class마다 15개의 example이 사용되었고, 두개의 baseline과 최근 metric-learning technique (matching networks, few-shot learning에서 state-of-the-art를 이루었다.)를 비교하였다.
각 baseline models에 대한 설명은 생략.
Meta-learner는 1-shot, 5-shot 작업에 대해 12개와 5개의 update로 각각 다른 모델을 학습했다. 논문에서는 meta-learner가 명시적으로 meta-test 중에 사용되는 meta-training 중에 정해진 update 횟수를 수행하도록 훈련 받은 경우 각 task의 성능이 향상되었음을 확인했다. 논문에서는 5-shot의 경우 matching network보다 훨씬 성능이 좋고, 반면 1-shot의 경우 performance의 신뢰구간은 matching network의 간격과 교차한다.
Visualization of meta-learner
위의 그림3에서 meta-learner가 학습한 optimization strategy를 시각화하였다. 각 update 단계에서, 학습도중 i_t와 f_t의 값을 확인하여 meta-learner가 learner를 update하는 방법을 이해할 수 있다. 저자는 서로 다른 dataset D_train에 대한 교육을 하는 동안 gate 값을 시각화하여 training set간에 다양성이 있는지를 관찰하였다. Meta-learner가 각각 10 건 및 5건의 update를 수행하는 1-shot, 5-shot을 고려한다. 두 작업에 대한 gate 값을 잊어 버리기 위해 meta-learner는 서로 다른 계층에서 일관성있는 weights 감소 전략을 채택한 것으로 보인다. input gate 값은 meta-learner의 전략을 수집하기위해 해석하기가 더 어렵다. 그러나, 서로 다른 dataset 사이의 많은 variability는 고정된 optimization strategy를 간단하게 학습하는 것이 아닌 것을 지시하는 것처럼 보인다. 추가적으로 meta-learner가 각 설정의 여러 조건을 다루기 위해 서도 다른 방법을 선택했다는 점에서 두 작업간에 차이가 있는 것으로 보인다.
Conclusion
이 논문에서는 gradient descent optimization algorithm으로 제안되는 parameter updates로 부터 영감을 받은 LSTM-based meta-learning model을 제안했다. 제안된 meta-learner는 classifier의 parameter의 학습 update를 나타내는 state를 사용했다. Learner의 parameters에 대한 좋은 초기화와 새로운 classification task에 대해 small data가 주어졌을 때의 성공적인 parameter updating가 학습되었음을 확인했다. 논문에서의 few-shot learning에 대해 metric learning의 state-of-the-art와 견줄 수 있으며 natural baseline보다 더 나은 접근이라는 것을 실험을 통해 증명했다.
이 논문에서, few-shot과 few-classes setting에 대한 연구를 집중했다. 그러나, "few or lots of training examples and for few or lots of possible classes"와 같은 full spectrum of setting에 걸쳐 잘 동작하는 meta-learner를 학습시키는 것이 가치가 있다.
개인의견
많은 내용이 다루어졌지만, 핵심은 learner를 학습하는 meta-learner를 LSTM의 형태로 제안을 하였고, 제안된 LSTM meta-learner는 metric learning에서 기존의 state-of-the-art보다 더 나은 성능을 보였다는 것이다. 논문의 flow를 보면서 어떻게 논지가 흘러가고, 또한 몇가지 valuable한 technique들이 어떻게 설명되었는지 보면 좋을 것 같다.