[EGNN]1.퓨샷 러닝(few-shot learning) 연구 동향을 소개합니다.
2019/11/06 by 이수경, 김종민

딥러닝 모델은 데이터양에 비례해 그 성능이 향상되는 경향성을 보입니다. 많게는 수백만 개에 이르는 매개변수(가중치)를 훈련할 수 있을 규모의 데이터가 생산됨에 따라 근래의 딥러닝 모델은 데이터 분류 문제를 사람만큼 잘 풀어내고 있습니다. 물론 이를 위해서는 몇 가지 단서가 붙습니다. 현실을 충분히 잘 반영할 정도로 다양하고 품질이 우수한 데이터와 모델 훈련에 필요한 막대한 컴퓨팅 자원이 거의 필수라고 봐야 합니다.

하지만 딥러닝 모델의 훈련 방식은 인간의 것과 비교하면 효율적이지 않습니다. 반면, 우리 인간은 단 몇 장의 사진(훈련 데이터)가지고도 생애 처음으로 본 사물(테스트 데이터)을 구분할 수 있습니다. 기계는 인간처럼 소량의 데이터(few-shot)만으로도 놀라운 학습 능력을 갖출 수 없을까요? 관련해서 진행되는 연구가 바로 퓨샷 러닝(few-shot learning)입니다. 

카카오브레인 AutoML 연구팀에서도 퓨샷 러닝 연구를 진행하고 있습니다. AutoML 연구팀이 고안한 ‘Edge-Labeling Graph Neural Network for Few-shot Learning(EGNN)’은 컴퓨터 비전 및 패턴 인식 컨퍼런스인 CVPR 2019에 승인되기도 했죠. EGNN이 해결하려는 문제와 그 구조, 성능을 소개하기에 앞서, 퓨샷 러닝에 대한 간략한 개념부터 짚어보겠습니다.


퓨샷 러닝이란?

데이터 수가 매우 적은 퓨샷 러닝 문제에서는 데이터셋을 훈련에 사용하는 서포트 데이터(support data)와 테스트에 사용하는 쿼리 데이터(query data)로 구성합니다. 이런 퓨샷 러닝 태스크를 ’N-way K-shot 문제'라고 부릅니다. N은 범주의 수, K는 범주별 서포트 데이터의 수를 의미합니다. 단편적인 예로, [그림 1]처럼 2개의 범주, 범주당 5장의 이미지가 주어진 문제를 2-way 5-shot 문제라고 할 수 있겠습니다. 

[ 그림 1 ] 2-way 5-shot 이미지 분류 문제의 예시 © 카카오브레인

수백만 장의 고양이 사진을 학습한 딥러닝 모델이 고양이를 명확하게 구분한 예에서 보듯이, K가 많을수록 이 범주에 해당하는 데이터를 예측하는 모델의 성능(추론 정확도)은 높아집니다. 퓨샷 러닝은 이 K가 매우 작은 상황에서의 모델 학습을 가리킵니다. 반면, N의 값이 커질수록 모델 성능은 낮아집니다. 5지 선다형 문제에서 답을 모를 때에는 한 번호만 찍어도 평균 20점을 기대해볼 수 있지만, 100지선다형 문제에서의 기대 성적이 1점이 이 되는 것과 비슷한 원리입니다.

다시 정리하자면, 퓨샷 러닝 모델의 성능은 N과 반비례하며 K와는 비례하는 관계에 놓여 있음을 알 수 있습니다. 일반적인 벤치마크(benchmark) 실험에서는 N은 10개 이하, K를 1개 또는 5개로 설정합니다. 쿼리 데이터는 범주당 15개가 주로 활용됩니다. 연구에 많이 쓰이는 5-way 1-shot 문제에서 모델 정확도는 50%대, 5-way 5-shot 문제에서는 70% 수준입니다([표 1] 참고).

[ 표 1 ] 이미지넷에서 샘플링한 5way 1-shot 문제와 5way 5-shot 문제에서의 모델 성능을 비교한 표


퓨샷 러닝 태스크에 메타 러닝 도입

퓨샷 러닝 모델이 완전히 새롭게 주어진 데이터에서도 잘 작동하도록 만들기 위해서는 메타 러닝(meta-learning)[1]이 필요합니다. 퓨샷 러닝 태스크에서는 에피소딕 훈련(episodic training) 방식으로 메타 러닝을 시도합니다. 에피소딕 훈련은 퓨샷 태스크와 유사한 형태의 훈련 태스크를 통해 모델 스스로 학습 규칙을 도출할 수 있게 함으로써 일반화 성능을 높일 수 있게 합니다.

[ 그림 2 ] 퓨샷 러닝 모델의 일반화 성능을 높이기 위해 에피소딕 훈련에 기반을 둔 메타 러닝 방식이 널리 사용된다.

퓨샷 러닝을 위한 에피소딕 훈련에는 훈련・검증・테스트 태스크를 둡니다. 일반 딥러닝에는 데이터를 훈련・검증・테스트 데이터로 구분하지만 서로 같은 범주를 공유하는 대신 데이터만 서로 겹치지 않도록 합니다. 예를 들어, 데이터셋 모두 {고양이, 자동차, 사과, 귤, 원숭이, 자전거}라는 범주에 해당하는 데이터로 구성돼 있죠. 반면, 에피소딕 훈련에서는 각 태스크를 구성하는 범주가 서로 완전히 다릅니다. [그림 2]에서 보듯이 {고양이, 자동차}, {사과, 귤}, … {원숭이, 자전거}처럼 말이죠.

에피소딕 훈련에 대해 좀 더 자세히 설명하자면 다음과 같습니다. 대용량 훈련 데이터로부터 N-way K-shot 훈련 태스크를 여러 개 샘플링합니다. 모델은 다양한 범주로 구성된 훈련 태스크를 통해 최적의 성능을 낼 수 있도록 훈련됩니다. 훈련을 마친 모델은 완전 새로운 데이터로 구성된 테스트 태스크로 그 성능을 평가받습니다.


퓨샷 러닝 연구 동향을 소개합니다

퓨샷 러닝 문제는 다양한 방식으로 해결해볼 수 있습니다. 이번에는 연구팀이 분석한 최신 논문 중 EGNN의 방향성을 설정하는 데 큰 영향을 미친 거리 학습(metric learning)과 그래프 신경망(graph neural networks, GNN)에 관련된 6편의 연구를 소개하고자 합니다. 

1.거리 학습 기반 방식

범주별 훈련 데이터의 수가 적은 퓨샷 태스크에서는 딥러닝처럼 분류기의 가중치를 훈련하는 방식이 적합하지 않습니다. [그림 3]에서 보듯이 한 태스크를 구성하는 N*K개의 소수 훈련 데이터에만 지나치게 적응하는 과적합(overfitting)[2] 현상이 발생할 수 있기 때문입니다.

[ 그림 3 ] 훈련 데이터가 적을수록 과적합 문제가 발생할 가능성이 높아진다. © Julien Despois

그 대신 서포트 데이터와 쿼리 데이터 간의 거리(유사도)를 측정하는 방식을 활용합니다. 모델은 주어진 서포트 데이터를 특징 공간(feature space)에 나타냅니다(특징 추출). 이 공간 상에서 쿼리 데이터의 범주는 유클리디안 거리(Euclidean distance)[3]가 가장 가까운 서포트 데이터의 것으로 예측됩니다(거리 계산+최근린 선택). 모델은 [그림 4]처럼 두 데이터의 범주가 같으면 거리를 더 가깝게 두고, 다를 때는 거리가 더 멀게 만드는 특징을 추출하는 방법을 학습합니다. 퓨샷 러닝 초기에 활용되던 거리 학습은 가장 간단하면서도 효과적인 것으로 잘 알려져 있습니다.

[ 그림 4 ] 모델은 같은 범주의 데이터는 더 가깝게, 다른 범주의 데이터는 멀어지도록 거리를 학습한다. 이렇게 표현된 특징 공간에서 쿼리 데이터의 범주는 이와 가장 가까운 서포트 데이터의 것으로 결정된다. 

(1) Siamese Neural network for one-shot image recognition

이전에는 인간이 직접 설계한 특징 벡터로 거리 학습을 시도했다면, 이 논문은 처음으로 딥뉴럴넷(DNN)을 사용해 거리 학습을 시도했다는 점에서 의의가 있다고 볼 수 있겠습니다. 여기에 사용된 DNN인 샴 네트워크(Siamese network)는 매개변수를 공유하는 동일한 CNN 구조의 특징 추출기를 훈련시켜 두 입력 데이터 간 유사도를 판단합니다.

좀 더 자세히 설명하자면, CNN은 검증 손실 함수(verification loss function) 값을 최소화할 때까지 훈련됩니다. 이 검증 손실 값은 두 입력 데이터의 범주가 같은 상황에서 특징 공간상 거리가 멀면 커집니다. 두 데이터의 범주가 다른 상황에서 거리가 가까워져도 마찬가지고요. 이런 검증 손실 값을 최소화함으로써 모델은 범주가 같은 두 데이터의 거리가 가까워질수록 또는 범주가 다른 데이터의 거리가 멀어지게 하는 특징을 획득하게 됩니다. 

[ 그림 5 ] 샴 네트워크는 두 데이터 간 유사도를 판단하고자 CNN 기반 특징 추출기를 사용한다. ©lilianweng

(2) Matching networks for one-shot learning

샴 네트워크에서 학습된 특징 추출기는 두 개의 입력 데이터 간 거리를 절대적으로 0으로 만들거나 크게 만드는 데 집중합니다. 그러나 이는 테스트 단계에서 주어지는 N-way K-shot 문제를 푸는 데 최적화된 방법론이라고 볼 수는 없습니다. 쿼리의 범주는 상대적으로 더 가까운 서포트 데이터의 것으로 결정되기만 하면 됩니다. 따라서 N-way K-shot 문제에서는 데이터 간 상대적 거리를 잘 표현하는 특징 추출기를 만들 필요가 있습니다.

이 논문에서는 최근린 선택기를 미분이 가능한 형태로 제안함으로써 특징 추출기가 스스로 데이터 간 상대적 거리를 표현하는 방법을 익히도록 했습니다. 아울러 N-way K-shot 훈련 태스크에 기반한 에피소딕 훈련 방식을 하는 등 모델의 범주 예측 성능을 높였습니다.

(3) Prototypical networks for few-shot learning

5-way 5-shot 태스크가 주어졌을 때 기존 방식에서는 서포트 데이터 25개와 쿼리 데이터 간 거리를 일일이 계산했습니다. 반면, 이 논문에서는 범주별 서포트 데이터의 평균 위치인 프로토타입(prototype)이라는 개념을 사용합니다. 결과론적으로 모델은 5개 범주를 대표하는 프로토타입 벡터와 쿼리 벡터와의 거리만 계산하면 됩니다.

저자는 퓨샷 데이터가 주어진 상황에서 프로토타입 네트워크가 Matching networks보다 성능 면에서 더 유리하다고 주장합니다. 쿼리 예측에 필요한 계산량을 N*K에서 N개로 줄이는 한편, 그 구조가 더 단순하다는 걸 근거로 제시하고 있습니다.

[ 그림 6 ] 프로토타입 네트워크는 범주별 서포트 벡터 간 평균 위치인 프로토타입을 활용해 모델의 복잡도를 줄였다.

(4) Learning to compare : relation network for few-shot learning

한 태스크에서 {고양이, 자동차, 사과}처럼 서로 완전히 다른 성격의 범주를 분류하는 문제라면 물체의 모양(shape) 정보만으로도 쿼리 데이터의 범주를 쉽게 예측할 수 있을 것입니다. 하지만 특징 추출기가 같은 범주의 데이터를 더 가깝게, 다른 범주의 데이터를 더 멀게 할 정도로 충분히 복잡하지 않다면 어떨까요? 그렇다면 {러시안블루, 페르시안, 먼치킨}처럼 고양이의 종류를 구분하는 태스크를 풀기 어려울 것입니다.

이 논문에서는 특징 추출기에 CNN을 적용했을 뿐만 아니, 거리 계산 함수에도 다층 퍼셉트론[4]을 적용시켰습니다. 다층 퍼셉트론은 같은 범주 또는 다른 범주의 서포트 데이터와 쿼리 데이터를 분류하는 걸 훈련했습니다.


2.그래프 신경망 방식

최근에는 적은 양의 데이터만으로도 분류 성능을 극대화하고자 데이터의 복잡한 관계 구조 정보를 학습에 활용하는 추세입니다. 가장 많이 연구되는 게 바로 그래프 신경망입니다.

우리가 흔히 아는 일반적인 인공 신경망은 입력값으로 벡터나 행렬 형태를 활용한다면, GNN은 밀집 그래프(dense graph) 구조를 활용합니다. 그래프에서 노드는 데이터를, 노드와 노드를 잇는 간선(edge)은 데이터 간 관계 정보를 나타내며 밀집 그래프는 모든 노드가 서로 완전히 연결된 것을 가리킵니다. GNN은 바로 이 그래프 구조와 각 노드에 해당하는 데이터의 특징 벡터를 입력받습니다.

(1) Few-shot learning with graph neural networks

이 논문에서 GNN의 동작 방식은 다음과 같습니다. 각 노드는 해당하는 데이터의 특징 벡터로 초기화됩니다. 그다음, 특정 노드 V와 이웃 노드와의 유사도를 계산해 이웃 노드 간 가중평균을 계산합니다. 이를 V와 합쳐 새로운 벡터 V’를 얻습니다. 다른 노드에 대해서도 같은 연산을 순차적으로 반복합니다. 가장 마지막에 쿼리 노드 벡터값의 업데이트도 완료합니다. 모델은 N개의 범주와 완전히 연결된 FC(fully connected layer)를 통해 쿼리 데이터의 범주를 예측합니다.

[ 그림 7 ] 한 태스크를 구성하는 데이터 간의 관계를 나타내고자 그래프 신경망 구조를 활용하고 있다.

(2) Transductive propagation network for few-shot learning (TPN)

TPN 또한 GNN을 활용합니다. 기존 GNN처럼 이웃 노드와의 유사성을 계산해 범주에 관한 정보를 전파하는 부분은 같습니다만, 2가지 부분이 다릅니다.

GNN에서는 노드의 특징값이 업데이트됩니다. 노드 간 상대적 거리가 변할 수 있다는 의미입니다. 이렇게 되면 범주 정보는 이웃 노드로 제대로 전달되지 않을 가능성이 높습니다. 이에 TPN은 노드 값을 초기화한 후 더는 업데이트하지 않고, 범주 정보만 전파합니다. 노드 사이 거리를 고정한 덕분에 범주 정보를 안정적으로 전달할 수 있습니다.

아울러 GNN이 단 하나의 쿼리 데이터만을 반영했다면, TPN는 주어진 쿼리를 하나의 그래프 구조에 포함해 추론을 단 한 번만 진행합니다.

5-way 5-shot 문제에 10개의 쿼리 데이터가 있다고 가정해보겠습니다. GNN에서는 25개의 서포트 데이터와 1개의 쿼리 데이터, 즉 즉 26개의 노드로 이루어진 그래프를 각각 10개를 구성합니다. 여기에서 쿼리 데이터의 범주는 다른 9개의 쿼리와는 완전히 독립적으로 예측되죠. 하지만 훈련 데이터가 적을 때에는 쿼리 데이터의 매니폴드(manifold)[5]를 활용하면 쿼리의 범주 분류 성능을 높일 수 있습니다. 결정 경계(decision boundary)를 찾는 데 유리하기 때문입니다. 이런 이유로 TPN은 25개의 서포트 데이터와 10개의 쿼리 데이터, 즉 35개의 노드로 이루어진 단 하나의 그래프를 구성해 쿼리 10개의 범주를 한꺼번에 예측합니다.

[ 그림 8 ] TPN은 주어진 서포트 데이터와 쿼리 데이터를 단 하나의 그래프로 구성하고 쿼리의 범주를 동시에 예측한다. 쿼리의 매니폴드를 활용하면 범주 분류 성능을 높일 수 있어서다.

카카오브레인 AutoML 연구팀이 고안한 EGNN은 거리 학습과 그래프 신경망의 장점을 합쳤습니다. EGNN은 퓨샷 러닝 문제가 주어졌을 때 쿼리 데이터와 서포트 데이터가 그래프 구조 상에서 상호 작용하며 데이터 간 거리를 계산합니다. 이어서 2편에서 EGNN이 해결하고자 한 문제와 구조, 성능 그리고 향후 연구 계획에 대한 이야기를 전해드리겠습니다.


참고
[1] 사람이 통제하던 기계학습 과정을 자동화함으로써 기계 스스로 학습 규칙(메타 지식)을 익힐 수 있게 하는 방법론
[2] 모델이 훈련 데이터에만 지나치게 적응해 테스트 데이터 또는 새로운 데이터에는 제대로 반응하지 못하는 현상
[3] N차원의 공간에서 두 점의 직선 거리를 계산하는 식
[4] 입력층과 출력층 사이에 하나 이상의 중간층이 존재하는 신경망
[5] 두 점 사이의 거리가 국소적으로는 유클리디안을 따르나 대역적으로는 독특한 위상 구조를 갖춘 공간
이 글을 쓴 사람들
samantha.lee
이수경 | 글,정리
지난 2016년 3월 알파고와 이세돌 9단이 펼치는 세기의 대결을 취재한 것을 계기로 인공지능 세계에 큰 매력을 느꼈습니다. 인공지능을 알고 싶어하는 사람들을 위한 콘텐츠를 쓰고자 카카오브레인에 합류했습니다. 현재는 분야별 인공지능 전문가와 함께 기술 콘텐츠를 생산하는 재미에 푹 빠져 있습니다. 인공지능을 만드는 사람들의 이야기와 인공지능이 바꿀 미래 사회에 대한 글은 누구보다 쉽고, 재미있게 쓰는 사람이 되고 싶습니다.
lukas.kim
김종민 | 기술감수
수많은 동물을 직접 키워보며 어른이 되면 꼭 식물학자가 되리라는 꿈을 안고 자연 속에서 유년기를 보냈습니다. 어쩌다가 4차 산업혁명이라는 시대적 흐름에 휘말려(?) 자연 대신 인공지능과 청년기를 보내고 말았군요. 세상의 수많은 것을 정말 빠른 속도로 혁신하는 인공지능에 그저 감탄할 뿐입니다. 현재 카카오브레인에서 AutoML 팀원들과 함께 스스로 학습 규칙을 익히는 인공지능 기술을 연구하고 있습니다. 우리의 미래, 다음 세대의 미래를 지금보다 아름답게 만드는 데 이바지하고 싶습니다.