iMTE

Meta-Learning 1. Learning to learn by gradient descent by gradient descent 본문

Deep learning study/Meta-Learning

Meta-Learning 1. Learning to learn by gradient descent by gradient descent

Wonju Seo 2019. 4. 20. 14:34

Paper : Learning to learn by gradient descent by gradient descent

Download : http://papers.nips.cc/paper/6460-learning-to-learn-by-gradient-descent-by-gradient-descent

Meta-Learning을 공부하고 연구에 적용해볼 생각으로 정리해보려고 한다. 꽤 재밌는 아이디어고, 어느 tasks에 적용할 수 있다는 점에서 매우 강력한 알고리즘이 될 것이라고 생각한다. 

Abstract

기존의 hand-crafted features 대신에 학습된 features로의 변화는 꽤 큰 성공이었다. 하지만, 최적화 알고리즘 (e.g., optimization algorithm)은 여전히 hand로 디자인이 되어야한다. 이 논문에서는, 최적화 알고리즘을 학습의 문제로 디자인을 하는데, 이는 자동적으로 어떤 문제들에 대해서 학습 구조를 학습하는 방법을 허가한다. LSTM으로 구현된 이 학습된 알고리즘은 hand-designed 최적화 알고리즘과 비교되었고, 같은 구조를 갖는 새로운 task에 대해서 잘 일반화가 되는 것을 확인하였다.

Introduction

machine learning에서의 주된 일은 objective function f를 최소화 하고, f를 최소화하는 parameter를 찾는 것이다.

미분가능한 (differentiable) 함수에 gradient를 적용하면 f를 최소화 할 수 있는데, update 알고리즘은 다음과 같이 나타낸다.

그러나, 이 간단한 gradient descent 알고리즘의 성능은 gradient만 사용하고 second-order information을 사용하지 않는 다는 점으로 인해서 방해를 받는다. Second-order partial derivatives의 Hessian matrix를 사용해서 gradient step에 curvature information을 반영하는 방법이 있다. (하지만, 2차 미분이라니! 계산량이 늘어날 수 밖에 없다. 그리고 수많은 parameter를 갖는 deep neural networks에서는 더 많은 계산이.. 필요하다. 그러니 다른 방법으로 Momentum, Adam, RMSProp등이 사용되는 것이다.)

쨋든, 다양한 industry에서 designed된 최적화 알고리즘은 다른 분야에서는 낮은 성능을 보인다는 것이 문제이다. 이 논문에서는 '학습된 update rule을 갖고 hand-designed update rule을 대체하는 learning rule'을 제시한다. 다음 식을 보자.

기존의 update rule을 단순히 learning rate와 gradient를 곱한 형태 (linear)가 아닌, phi로 parameterized된 g라는 optimizer로 update rule 자체를 학습하는 것을 이 논문에서 제시하고 있다. 

위의 그림이 high level로 본 update rule의 학습을 나타내고 있다. Optimizee로 부터 performance에 대한 정보를 받고 (Loss, gradient 등), 이 정보를 사용하여 optimizee를 최적화 하도록 optimizer가 update rule을 update한다.

이 논문에서는 update rule인 g의 구조로 RNN을 사용했는데, 이는 RNN이 각자의 state를 유지하고, 매 실행마다 dynamically update할 수 있다는 점 때문이었다. (Sequential한 정보를 계속적으로 받으면서 수정해야하기 때문에, RNN 구조를 선택한 것은 탁월하다.)

1.1 Transfer learning and generalization (Skip)

"The goal of this work is to develop a procedure for constructing a learning algorithm which performs well on a particular class of optimization problems. Casting algorithm design as a learning problem allows us to specify the class of problems we are interested in through example problem instances. This is in contrast to the ordinary approach of characterizing properties of interesting problems analytically and using these analytical insights to design learning algorithms by hand"

"One of the great success stories of deep-learning is that we can rely on the ability of deep networks to generalize to new examples by learning interesting sub-structures. In this work, we aim to leverage this generalization power, but also to lift it from simple supervised learning to the more general setting of optimization."

위 문단들을 한번 잘 읽어보면 좋을 것 같아서, 원문을 그대로 가지고 왔다. "More general setting of optimization"이라는 sentence에 주목해보자!

1.2 A brief history and related work (Skip)

Learning to learn with recurrent neural networks

Optimizee parameters를 optimizer parameter에 대한 function으로 나타내보자.

Optimizer가 좋다라는 것을 어떻게 판단할 수 있을까? 다음 loss 식을 보자.

phi로 parameterized된 RNN (m)의 출력인 update steps gt를 취한다. 그 다음에, objective function은 오직 final parameter value에만 의존하지만, 최적화 알고리즘을 학습시키기 위해서는 전체 trajectory에 의존하는 것이 편리하다.

여기서 wt는 각 time-step에 연관된 임의의 weights이다. wt=1[t=T]일 때, (2)와 (3)은 서로 동일해진다. 나중에 왜 다른 weights을 사용하는것이 유용한지를 증명할 것이다.

L(phi)를 phi에 대한 gradient descent algorithm을 사용해서 최적화 할 수 있고, gradient estimate는 random function f를 sampling하고, computational graph에 backpropagation을 적용하는 것으로 계산을 할 수 있다. 이러한 update 방식은 밑의 그림에 잘 설명되어 있다.

위 그림에서 주목해야하는 점은 optimizee의 gradient가 optimizer의 parameter에 의존하지 않는다는 것이다. 즉,

그러므로, f의 second derivative를 구할 필요가 없어진다. (3)의 objective function을 보면, wt가 0이 아닐 때, gradient가 non-zero라는 것을 알 수 있다. 만약 wt=1[t=T]를 original problem과 match하기 위해서 사용한다면, trajectory prefixes의 gradient는 zero이고, 마지막 optimization step만 optimizer의 학습을 위한 정보를 제공하는 것이 된다. 이로인해서 BPTT (Backpropagation Through Time)은 비효율적이 된다. 따라서, 이 논문에서는 trajectory을 따라, 중간 지점에서 wt>0이 되도록 objective를 완화함으로써, 이 문제를 해결하였다. 이것은 objective function을 변경하지만, partial trajectory에 대해 optimizer를 학습할 수 있고, 단순화를 위해서 이 논문에서의 실험은 wt=1 for every t로 고정하였다.

2.1 Coordinatewise LSTM optimizer

문제는, 수많은 parameter를 최적화 하는 데에 RNN을 적용한다는 것이다. 수많은 parameter와 큰 hidden state를 요구하여, fully connected RNN으로 최적화 시키는 것은 불가능하다. 이러한 어려움을 피하기 위해서 objective function의 parameters에 coordinatewise하게 작용하는 optimizer m을 사용하였다. 이는 RMSProp과 Adam과 같은 common update rule과 비슷하다.

Coordinatewise network architecture는 하나의 coordinate를 보고 optimizer를 정의하고 최적화 알고리즘의 여러 parameters에서 최적화 parameter를 공유하는 매우 작은 network를 사용하도록 한다.

각 coordinate에 대한 다른 behavior는 각 objective function parameter에 대해 별도의 activation을 사용하여 수행이 되는데, 이는 optimizer에는 작은 network를 사용할 수 있도록 하며, 이 설정은 각 coordinate에 대해 동일한 update 규칙이 독립적으로 사용되므로 network의 parameter의 순서에 따라 optimizer가 불변하게 만드는 nice effect를 제공한다.

이 논문에서는, 각 coordinate에 two-layer LSTM network를 사용하여 update rule을 구현하였다.  Network는 이전의 hidden state에 단일 coordinate에 대한 optimizee의 gradient를 입력으로 받아서 해당 optimizee parameter에 대한 update를 출력한다. 밑의 그림이 이를 나타내고 있다.

Recurrence의 사용은 History of gradient에 대한 정보를 통합하는 dynamic update rule을 LSTM이 학습하도록 한다. Optimizer의 입력과 출력은 최적화되는 function의 class에 의존하여 서로 다른 크기를 갖게 된다. 하지만, neural networks는 input과 output이 매우 작지 않거나 크지 않을 때 robustly하게 동작하므로, LSTM optimizer의 입력과 출력을 적절한 상수로 re-scaling하여 이 문제를 피한다.

Experiment

모든 실험에서, 20개의 hidden units을 갖는 two-layer LSTM을 optimizers를 사용하였다. 각 optimizer는 truncated BPTT를 사용하여 식 (3)을 minimizing함으로 학습이 되었고, ADAM을 사용해서 최적화 진행, random search를 사용해 learning rate가 선택되었다. Optimizer의 over-fitting을 피하기 위해서 optimizer를 학습시킬 때 early stopping을 사용하였고, 매 epoch마다 optimizer의 parameter를 고정시키고, 성능을 평가하였다. 저자는 최고의 optimizer를 선택하였고 이 optimizer로 성능을 평가하였다.

저자는 SGD, RMSProp, Adam, Nesterov's accelerated gradient와 같은 standard optimizer와 학습된 LSTM을 비교하였고, 각 optimizer와 각 문제에 대해서 learning rate를 tune을 하였으며, 각 problem에 대해서 가장 낮은 error를 보여주는 결과를 보고하였다. 모든 optimizee parameter의 처음 value는 IID Gaussian distribution에서 sampling 되었다.

3.1~4 Examples

다양한 optimizer에 대한 학습 곡선이 밑의 그림에 나와 있다. 

위의 그림에서 볼 수 있듯이, 제안된 LSTM 기반의 optimizer가 기존의 hand-designed된 optimizer보다 더 성능이 좋았음을 확인할 수 있다.

CIFAR-10에서의 결과도 한번 확인해보자!

마찬가지로, 제안된 LSTM 방법이 기존 방법보다 더 나은 성능을 보였으며, LSTM-sub ("it has been trained only on the heldout labels and is hence transfering to a completely novel dataset")이 CIFAR-2에서는 가장 좋은 성능을 보였다. LSTM-sub의 예에서, LSTM optimizer가 CIFAR-5, CIFAR-2 데이터 셋의 성능을 크게 향상시켜 기본 optimizer보다 빠르게 학습이 된다는 것을 알 수 있다. 또한, data의 불연속 부분 집합에 대해서만 학습된 optimizer는 이런 한계에 영향을 받지 않는 것으로 보이며, 추가적인 data에 잘 전달한다는 것을 확인할 수 있다.

마지막으로, Neural Art에 적용시킨 결과이다.

마찬가지로, LSTM 기반의 optimizer가 기존 방법보다 더 나은 성능을 보임을 증명하였다.

Conclusion

저자는 optimization algorithm의 디자인을 learning problem으로 바뀌는 방법을 보여주었으며, 특정 class의 함수에 특화된 optimizer를 학습시키는 것이 가능함을 보였다. 저자의 실험에서는 'learned neural optimizer'와 state-of-the-art optimization methods를 비교하였다. (성능의 진보를 확인하였다.) CIFAR image labeling task의 결과는 LSTM optimizer가 같은 data distribution으로부터 추출된 dataset에 전달할 때, hand-engineered optimizer보다 더 낫다는 것을 의미한다.


개인 의견

이 논문의 main contribution이라면, learning algorithm (e.g., update rule)을 학습의 형태로 바꾸었다는 점과, dynamic한 learning의 상황을 반영하기 위해서 RNN 구조를 사용했다는 점, 그리고 기존의 optimizer들과 비교함으로써, 더 나은 learning algorithm이라는 것을 증명해냈다. 추가적으로, CIFAR의 예처럼, transfer를 빠르면서도 높은 성능으로 할 수 있다는 것을 증명해냈다는 점이다. 

General하게 사용할 수 있으므로, 각자의 분야에 맞게끔 meta-learning을 사용한다면 state-of-the-art 성능을 낼 수 있을 것으로 기대한다.



Comments