인공지능/다양한 인공지능

[Meta-Learning] Meta-Learning in Neural Networks: A Survey 논문 리뷰

전공생 2023. 8. 10. 12:03

meta learning에 대해 공부하려고 Meta-Learning in Neural Networks: A Survey 논문을 참고하여 meta-learning의 개념과 어떤 방법들이 있는지 봤다. 후에는 관련 유명한 논문들을 하나씩 읽으면서 좀더 자세한 방법을 공부할 예정이다. 

개념

지금까지의 머신러닝 모델은 손수 설계된 고정된 학습 알고리즘을 사용하여 특정한 task를 해결하기 위해 scratch로부터 학습된다. 반면 meta-learning은 관련된 task의 분포까지 커버할 수 있도록 많은 학습을 통해 얻은 경험을 이용하여 모델을 향상시킬 수 있게된다.

meta-learning은 ‘학습하는 법을 학습’하는 방법으로 보통 이해되는데, 이는 많은 학습들(multiple learning episodes)을 통해 학습 알고리즘을 향상하는 것을 가리킨다. 그와 반대로 전통적인 ML은 많은 데이터들을 통해 모델의 예측 능력을 향상한다.

meta-learning은 base learning과 meta-learning, 이 두개의 학습으로 이루어진다고 볼 수 있다. base learning에서는, base 학습 알고리즘은 데이터와 objective로 정의된 task를 해결한다. meta-learning에서는, outer 학습 알고리즘이 base 학습 알고리즘을 업데이트하여 모델을 학습하고 outer objective를 향상한다. 예를 들자면 이 outer objective는 inner 알고리즘의 성능 일반화 혹은 학습 속도가 될수 있다. base 학습 알고리즘은 inner 혹은 lower 학습 알고리즘이라고도 하며, outer 학습 알고리즘은 upper 혹은 meta 학습 알고리즘이라고도 한다.

Formalizing meta-learning

Conventional Machine Learning(전통적인 머신러닝-흔히 알고있는 머신러닝)

전통적인 supervised 머신러닝에서 우리는 데이터셋 $D$를 사용하여 $\theta$로 파라미터화 된 모델을 다음과 같은 식을 해결함으로써 학습한다.

$L$은 정답 라벨과 모델로 학습된 것 사이의 에러를 측정한 loss function이고, $\omega$$\theta$에 대한 최적화 알고리즘이나 모델을 구성하는 함수에 대한 선택과 같은 ‘어떻게 학습할지’에 대한 방법에 따라 달라지는 변수다.

전통적인 ML에서는 모든 문제 $D$에대해 scratch로부터 성능을 내며(어떠한 사전지식도 사용하지 않고 성능을 낸다는 의미로 쓰이는것 같다) $\omega$는 미리 지정된다고 가정한다. 반면 meta-learning은 학습 알고리즘을 학습한다—즉, $\omega$를 미리 지정하거나 고정하지 않고 학습을 통해 갱신한다. $\omega$에 따라 정확도나 데이터 효율성과 같은 성능 척도가 극적으로 바뀔 수 있기 때문에 meta-learning은 전통적인 ML 방법보다 훨씬 좋은 학습법이라고 할 수 있다.

Meta-Learning:Task-Distribution View

meta-learning의 일반적인 관점은 작업 전반에 걸쳐 일반화할 수 있는 범용 학습 알고리즘을 학습하는 것과 이상적으로 각 새로운 작업이 지난 작업보다 더 잘 학습될 수 있도록 하는 것이다.

task의 distribution인 $p(T)$를 통해 $\omega$의 성능을 평가할 수 있는데, 이때 task는 데이터셋과 loss function으로 정의된다($T=\left\{ D,L\right\}$). 학습하는 법($\omega$)을 학습하는 것은 다음 식으로 나타내어진다.

이때 $L\left(D;\omega\right)$$\omega$를 사용하여 데이터셋 $D$로 학습되는 모델의 성능을 측정한다. ‘어떻게 학습할지’를 나타내는 $\omega$는 across-task knowledge 혹은 meta-knowledge 라고도 불린다.

이 문제를 실제로 해결하기 위해 $p(T)$로부터 source task의 set를 샘플링하기도 한다. meta-learning에 사용되는 이 샘플링한 M개의 source tasks의 set를 $D_{source}=\left\{\left(D^{train}_{source}, D^{val}_{source}\right)^{(i)}\right\}^{M}_{i=1}$라고 하고 이는 학습 데이터와 validation 데이터를 가진다. 이 데이터셋을 각각 support sets, query sets이라고도 한다.

meta-training 단계는 다음과 같은 식으로 나타낼 수 있다.

meta-testing에 사용되는 Q개의 target tasks의 set를 $D_{target}=\left\{\left(D^{train}_{target}, D^{test}_{target}\right)^{(i)}\right\}^{Q}_{i=1}$라고 하고 이 set는 학습 데이터와 test 데이터를 가진다. meta-testing 단계에서는 학습된 meta-knowledge인 $\omega^{*}$를 전에 본적없던 target task i로 base model을 학습시는데 사용한다.

전통적인 ML의 식(Eq.1)과 대조적으로, target task에 대한 학습은 사용할 알고리즘에 대한 meta-knowldege $\omega^*$로부터 이득을 받는다. 그리고 각 target task의 test 데이터를 사용하여 계산한 $\theta^*$의 성능으로 meta-learner의 정확도를 평가한다.

Meta-Learning:Bilevel Optimization View

앞서 설명한 부분에는 meta-training을 해결하기 위한 방법을 특정화하지 않았다. 흔히 이 방법으로 bilevel optimization을 사용하여 문제를 해결한다. bilevel optimization은 계층적 최적화 문제를 말하는데, 이는 어떤 조건 혹은 제한과 같은 또다른 최적화 문제를 포함하여 문제를 최적화 하는 경우를 말한다. 이러한 방법을 반영하여 meta-training 식을 세우면 다음과 같이 표현될 수 있다.

$L^{meta}$$L^{task}$는 각각 outer objective, inner objective를 가리킨다. Eq.6이 inner-level 최적화에 해당되고 Eq.5가 outer-level의 최적화에 해당된다. outer-level에서 $\omega$를 최적값으로 갱신하고, 이 값을 inner-level의 최적화에 (고정한채로) 사용한다. 이렇게 학습된 모델 $\theta^*$는 validation 데이터를 사용하여 성능을 평가한다.