EGNN
2.Edge-Labeling Graph Neural Network for Few-shot Learning을 소개합니다.
2019/12/09 by 이수경, 김종민

지난 블로그 1편에서 퓨샷 러닝(few-shot learning)에 대한 개념을 간략하게 소개하고 거리 학습(metric learning)과 그래프 신경망(graph neural networks, GNN)에 관한 최신 6편의 연구를 살펴봤습니다.

카카오브레인도 퓨샷 러닝을 연구합니다. 김종민 연구원은 인간의 개입을 최대한 줄이고 기계가 주어진 데이터만으로도 스스로 학습 규칙을 익히게 한다는 비전을 가진 AutoLearn 연구팀의 일원이 되어 퓨샷 러닝 연구를 주도했습니다.

AutoLearn 연구팀의 초기 연구 방향은 MAML(model-agnostic meta learning)과 같은 메타 러닝 알고리즘을 GNN에 적용해보기였습니다. 파이선(Python) 기반 딥러닝 프레임워크인 파이토치(Pytorch)를 활용해본 경험이 많지 않았던 김종민 연구원은 ‘few-shot learning with graph neural networks’ 논문 코드를 파악하고 실험 결과 재현에 가장 먼저 집중했습니다. 그 뒤 수개월의 연구개발을 거쳐 기존 논문보다 약간 더 높은 성능을 얻는 데 성공했습니다.

하지만 김 연구원은 단순히 MAML을 GNN을 적용하면 성능 향상이 있을지를 검증하는 수준의 연구로는 새로운 가치 창출은 어렵겠다고 판단했습니다. 이후 수차례 논의 끝에 기존 GNN과 완전히 다른 구조의 모델인 'Edge-Labeling Graph Neural Network for Few-shot Learning(EGNN)'을 구상했습니다. 

EGNN을 소개하기에 앞서 기존 방법론의 한계점에 대해 다시 한 번 짚어보고자 합니다.

다양한 상황에 적용할 수 있는 유연한 퓨샷 러닝 모델이라면 범주 수에 최대한 영향을 받지 않아야 합니다. 그런데 GNN은 범주 수에 많은 영향을 받습니다. 이는 다범주 분류(multiclass classification) 문제를 풀 때처럼 GNN 또한 N개의 범주와 완전히 연결된 FC 층(fully connected layer)을 통과 시켜 점수(확률)가 가장 높은 범주를 고르는 구조에서 기인합니다. 이 구조에서는 범주 수에 따라 모델의 매개변수(가중치) 값이 변하죠. 이런 이유로 훈련과 테스트에 주어지는 범주 수가 서로 다르면 모델을 처음부터 다시 훈련해야 하는 번거로움이 발생합니다.

아울러, GNN은 같은 범주의 데이터 사이 거리(유사도)를 더 가깝게, 다른 범주의 데이터 간 거리를 더 멀게 만드는데 최적화돼 있지 않습니다. 특징 공간에 쿼리 벡터를 정답 범주의 영역에 매핑(mapping)하는 것에 불과하기 때문입니다. 이로 인해 GNN은 소수 훈련 데이터에만 지나치게 적응할 가능성이 높습니다.

AutoLearn 연구팀은 다음처럼 개선 방향을 설정했습니다. 첫번째, 모델은 같은 범주의 데이터 간 거리(유사도)를 더 가깝게, 다른 범주의 데이터 간 거리를 더 멀게 만드는 거리 학습에 기반을 두어야 합니다. 더 높은 범주 예측 성능을 달성할 수 있을 뿐만 아니라, 범주 수가 임의로 결정되는 상황에서도 모델 재학습이 필요없는 유연성을 갖출 수 있을 거라 판단했습니다. 두번째, 주어진 태스크의 데이터(서포트+쿼리) 간 상호 작용이 가능해야 합니다. 데이터 간 복잡한 관계 정보를 활용한다면 적은 양의 데이터만으로도 분류 성능을 극대화할 수 있을 거라 봤습니다.

[ 표 1 ] EGNN에서는 태스트에 주어진 모든 데이터가 상호작용하며 같은 범주의 거리(유사도)는 더 가깝게, 다른 범주는 더 멀도록 훈련한다.


EGNN의 구조와 학습 과정

AutoLearn 연구팀이 제안한 EGNN의 추론 과정은 다음과 같습니다. 우선, [그림 1-a]에서처럼 노드 값을 해당 데이터의 특징 벡터로 초기화하고, 모든 노드가 서로 연결된 밀집 그래프를 구성합니다. 아울러 간선 값도 초기화합니다. 서로 연결된 두 노드의 범주가 같으면 [1,0], 다르면 [0,1]로, 또는 범주가 설정되지 않은 노드가 최소 1개 이상이라면 [0.5,0.5]로 설정합니다.

[ 그림 1 ] EGNN에서 노드와 간선 값을 반복적으로 업데이트하면서 같은 범주를 연결하는 간선 값은 1에, 다른 범주의 간선 값은 0에 가까워지도록 훈련된다.

그다음 EGNN은 노드 값과 간선 값을 반복적으로 업데이트하면서 그래프 안에 존재하는 노드 간의 상호 작용을 반영합니다. 먼저 노드 업데이트 단계([그림 1-b-1])에서는 이웃 노드의 값에 간선 값을 가중치로 두고 선형결합(linear combination)[1]합니다. 그 결과, 해당 노드는 주변 정보를 반영하게 됩니다. 간선 업데이트 단계([그림 1-b-2])에서는 업데이트된 두 노드의 유사성을 새로 계산하고 나서, 여기에 기존 간선 값을 곱하는 방식으로 진행됩니다. 이 과정을 거치면 두 노드의 범주가 같으면 간선 값은 1에 가까워지고, 두 노드의 범주가 서로 다르면 간선 값은 0에 가까워집니다.

이처럼 노드와 간선 업데이트를 여러 번 반복하게 되면 그래프 내에 존재하는 쿼리 노드와 서포트 노드를 연결하는 간선 값은 다른 모든 노드와 간선으로부터 영향을 받으며 점차 정답에 가까워지게 됩니다([그림 1-c]). 즉, 모델은 훈련을 통해 쿼리 노드가 각 서포트 데이터와 얼마나 가까워져야 하는지를 직접 최적화하는 거죠.

그렇다면 쿼리 노드의 범주는 최종적으로 어떻게 정해지는 걸까요? 범주를 예측하려는 쿼리 노드에 연결된 간선값 중 같은 범주에 해당하는 것끼리 더합니다. 더한 값의 크기가 가장 큰 간선이 걸정되겠죠? 이 간선에 연결된 서포트 노드가 바로 쿼리 노드의 범주를 결정합니다.


EGNN의 성능

AutoLearn 연구팀은 EGNN의 성능을 평가하고자 퓨샷 러닝 기본 벤치마크(benchmark)인 Mini-ImageNet과 tiered-ImageNet 데이터셋을 가지고 비교 실험을 진행했습니다. 자세한 실험 내용은 깃허브(github)를 참고해주시길 바랍니다.

Mini-ImageNet은 블로그 1편에서 소개한 ‘Matching Networks for one-shot learning’의 저자가 만들어서 배포한 데이터셋입니다. 이름에서 보다시피 기존 이미지넷(ImageNet)로부터 훈련 데이터셋과 테스트 데이터셋을 구성하는 데이터의 범주가 서로 다르도록 데이터를 샘플링했습니다.

tiered-ImageNet은 역시 블로그 1편에서 소개한 ‘Prototypical Network’의 저자가 후속으로 쓴 논문인 ‘Meta-Learning for Semi-Supervised Few-Shot Classification’에서 처음 제시한 데이터셋입니다. Mini-ImageNet과 비교했을 때 2가지 차이점이 있습니다. 첫번째, 데이터 수가 훨씬 많습니다. 두번째, 훈련 데이터셋과 테스트 데이터셋을 구성하는 데이터의 범주를 단순히 다르게 구성하는 것에서 더 나아가, 상위 카테고리 또한 다르게 구성했습니다.

특히 두번째 특징은 퓨샷 러닝 모델이 완전히 새롭게 주어진 범주도 잘 예측하는지를 측정하는 데 큰 도움이 됩니다. 기존 Mini-ImageNet이라면 훈련 태스크에 ‘피아노’라는 범주가 있다면 테스트 태스크에 ‘오르간’이라는 범주가 존재할 수 있습니다. 훈련 때 피아노를 본 모델은 테스트에서 같은 건반악기에 해당하는 오르간을 더 잘 예측할 수 있을 것입니다. 이런 문제를 방지하고자 tiered-ImageNet은 범주의 상위 카테고리가 중복되지 않도록 했습니다.

[ 표 2 ] 카카오브레인 AutoLearn 연구팀이 EGNN 성능 평가에 활용한 데이터셋의 종류

모델의 성능은 각 데이터셋에서 무작위로 샘플링한 600개의 N-way K-shot 테스트 태스크에서 모든 쿼리 데이터에 대한 범주 예측 정확도(범주를 맞춘 쿼리 수/전체 쿼리 수)로 평가하게 됩니다.

[그림 2A], [그림 3C]는 두 데이터셋에 비변환 학습(non-transductive learning) 방식을 적용했을 때의 결과입니다. 즉, 각 그래프에 쿼리 노드가 한 개씩만 있을 때의 상황인 거죠. EGNN이 기존 알고리즘보다 약간 더 향상된 성능을 내고 있음을 볼 수 있습니다. [그림 3B]와 [그림 3D]는 주어진 데이터 모두로 구성된 단 하나의 그래프로 쿼리의 범주를 한꺼번에 예측하는 변환 학습의 결과입니다 AutoLearn 연구팀은 EGNN이 노드와 간선 값을 반복 업데이트하면서 데이터의 복잡한 관계 정보를 더 잘 고려할 수 있기에 퓨샷 러닝에서 더 좋은 성능을 내는 것으로 분석했습니다.

[ 그림 2 ] 두 데이터셋을 상대로 성능을 평가해본 결과, EGNN은 퓨샷 러닝에서 기본 방식보다 더 좋은 성능을 내고 있다.

AutoLearn 연구팀은 훈련 데이터가 모두 라벨링 데이터만 구성된 감독학습(supervised learning)과 비라벨링 훈련 데이터도 주어지는 준감독 환경(semi-supervised setting)에서의 모델의 성능도 측정했습니다([표 3]). 이 실험은 현실에서 쉽게 구할 수 있는 라벨이 없는 데이터를 활용했을 때 쿼리 데이터의 범주 예측 성능을 높일 수 있을지를 알아보고자 설계됐습니다. 전체 훈련 데이터 중 라벨링 데이터의 비율을 100%에서 20%로 줄일수록 성능이 감소하는데, 제안한 EGNN은 GNN보다 항상 좋은 성능을 보이고 있습니다. AutoLearn 연구팀은 노드 뿐만 아니라 간선도 업데이트함으로써 데이터 군집화와 데이터간 복잡한 관계 정보를 반영한 덕분이라고 분석했습니다.

[ 표 3 ] mini-imagenet, 5-way 5-shot 퓨샷 태스크에서 성능 비교 결과, 제안한 EGNN은 감독학습과 준감독학습에서 GNN보다 항상 더 좋은 성능을 보이고 있다.

마지막으로, AutoLearn 연구팀은 메타 훈련 때와 테스트 때 주어진 범주 수가 다른 상황에서의 모델 성능도 평가했습니다. 5-way로 훈련한 모델을 재훈련하지 않고 10way 태스크에 적용하거나 또는 그 반대로 훈련을 진행했습니다. 앞서 설명한대로, 기존의 GNN에서는 두 상황에서 태스크 범주 수가 다르면 반드시 모델을 재훈련해야 합니다. 이 실험에서 EGNN은 [표 4]에서처럼 (5-way 훈련, 10-way 테스트)에서의 정확도(56.35%)와 (10-way 훈련, 10-way 테스트)에서의 정확도(57.61%)는 거의 유사한 성능을 보이는 등 모델을 재훈련하지 않고도 새로운 태스크에 바로 적응한다는 사실을 확인해볼 수 있었습니다.

[ 표 4 ] EGNN은 훈련 때와 다른 범주 수가 주어졌을 때 모델을 재훈련하지 않고도 새로운 태스크에 바로 적응한다.


앞으로의 과제 및 연구 방향

CNN(convolutional neural networks)은 이미지 분류와 분할(segmentaton), 객체 감지(detection)과 같은 비전 문제에서 탁월한 성능을 냅니다. 그런데 한계는 있습니다. 예를 들어, 모든 픽셀의 범주를 예측하는 분할 문제에서는 가까이에 위치한 픽셀 뿐만 아니라 좀 더 멀리 떨어진 픽셀 정보가 좋은 단서가 될 수 있습니다. 그런데 CNN은 지역적 맥락만을 고려합니다. 이는 컨볼루션 층(convolution layer)[2]의 필터(filter)가 물리적으로 가까운 위치에 있는 픽셀만을 고려하기 때문입니다. 컨볼루션 층을 아무리 깊게 쌓더라도 서로 멀린 떨어진 픽셀끼리 서로 정보를 교환하기는 어렵습니다.

따라서 이런 이미지 관련 딥러닝 모델의 성능을 끌어 올리기 위해서는 서로 멀리 떨어진 픽셀 정보까지 고려할 수 있어야 합니다. 전세계적으로 이미지 픽셀을 노드로 하는 그래프를 입력받는 GNN을 사용해 픽셀 간 정보를 교환하며 전체 픽셀을 참고하는 모델링을 통해 성능을 끌어 올리는 연구가 진행되는 추세입니다. AutoLearn 연구팀 또한 관련해 연구를 진행한다는 계획입니다. 후속 연구에 대한 구체적인 내용은 추후 알려드리겠습니다. 감사합니다. 


참고
[1] 주어진 m개의 벡터집합(a1,a2,...am)을 활용해 새로운 합 벡터를 표현하는 방식. c1a1+c2a2+...+cmam이다.(c1,c2...는 임의로 주어진 스칼라다.)
[2] 이미지에서 숨은 특징을 추출하는 층
이 글을 쓴 사람들
samantha.lee
이수경 | 작성,편집
지난 2016년 3월 알파고와 이세돌 9단이 펼치는 세기의 대결을 취재한 것을 계기로 인공지능 세계에 큰 매력을 느꼈습니다. 인공지능을 알고 싶어하는 사람들을 위한 콘텐츠를 쓰고자 카카오브레인에 합류했습니다. 현재는 분야별 인공지능 전문가와 함께 기술 콘텐츠를 생산하는 재미에 푹 빠져 있습니다. 인공지능을 만드는 사람들의 이야기와 인공지능이 바꿀 미래 사회에 대한 글은 누구보다 쉽고, 재미있게 쓰는 사람이 되고 싶습니다.
lukas.kim
김종민 | 감수
수많은 동물을 직접 키워보며 어른이 되면 꼭 식물학자가 되리라는 꿈을 안고 자연 속에서 유년기를 보냈습니다. 어쩌다가 4차 산업혁명이라는 시대적 흐름에 휘말려(?) 자연 대신 인공지능과 청년기를 보내고 말았군요. 세상의 수많은 것을 정말 빠른 속도로 혁신하는 인공지능에 그저 감탄할 뿐입니다. 현재 카카오브레인에서 AutoLearn 팀원들과 함께 스스로 학습 규칙을 익히는 인공지능 기술을 연구하고 있습니다. 우리의 미래, 다음 세대의 미래를 지금보다 아름답게 만드는 데 이바지하고 싶습니다.