[컨텐츠 연재] #03 Graph와 GNN 스터디, 어디까지 해봤니?

김소연
Written by 김소연 on
[컨텐츠 연재] #03 Graph와 GNN 스터디, 어디까지 해봤니?

안녕하세요!! 오랜만에 뵙겠습니다! 가짜연구소 커뮤니티 빌더 김소연입니다. 오늘은 가짜연구소에서 오랫동안 진행된 graph 스터디를 이끌어준 빌더님과 graph 스터디원들과 나눈 간략한 회고 내용을 전해드리려합니다 :)

본격적인 내용에 앞서 여러분은 Graph 라고 하면 어떤 것이 떠오르나요? 먼저 그래프 는 무엇일까요?

  1. 그래프(graph)는 다음을 가리키는 말이다.
  2. 그래프(도표)는 직선, 곡선, 도형 등 그래픽의 요소에 의해 시각화된 차트를 말하며 넓은뜻으로는 다이어그램도 포함한다.
  3. 그래프는 수학에서 꼭짓점의 집합과 변의 집합을 이루는 순서쌍이다.
  4. 함수의 그래프는 주어진 함수가 나타내는 직선이나 곡선을 말한다.
  5. 그래프 (자료 구조)

위키백과가 말하는 그래프는 위와 같은데요[1]. 오늘 주요하게 다룰 그래프는 1번과 5번 맥락인 그래프 를 생각하시면 되겠습니다 ㋡⎠ 지루할 수 있지만 오늘의 내용을 좀더 잘 이해하기 위해 3번과 5번에 대한 정의를 좀더 살펴볼게요.[2-4] 위키백과에서는 수학 측면의 그래프와 자료구조 측면의 그래프를 나누어 설명하는데요. 합쳐서 이야기하자면, 그래프는 일부 객체들의 쌍들이 서로 연관된 객체의 집합을 이루는 구조로 정점(Vertex)과 정점들을 연결하는 변(Edge)으로 구성됩니다. 그래프는 그래프 이론이 있을만큼 수학적으로 굉장히 발달해 있어요. 4색 문제, 한붓 그리기와 같은 문제를 비롯해 최단거리를 구하는 다익스트라와 같은 유명한 알고리즘까지 한번쯤은 들어봤을 법한 문제가 모두 그래프 이론과 관련되어 있답니다. 그래프는 서로 연관된 객체를 다루는 구조인만큼 방대한 정보로부터 인사이트를 얻고자하는 최근에 더욱 그 쓰임새가 중요해지고 있는 것 같습니다(!-!)

gnn_def

한편, 그래프를 처리하기 위해 고전적 알고리즘을 사용할 수 있지만 그래프 역시도 패턴을 가진다면 딥러닝으로 처리할 수 있겠단 생각이 드시죠? 대표적으로 이미지==CNN, 언어==RNN 과 같이 데이터 특징을 고려한 대표적 뉴럴네트워크가 있듯(트랜스포머는 제외했습니다..!) 그래프가 갖는 특징을 고려한 뉴럴네트워크 계통을 Graph neural network(GNN)라고 보시면 되겠습니다. 사실 이미 몇년 전부터도 학계에서 GNN을 다루는 열기는 심상치 않았습니다. AI 탑티어 학회 중 하나인 ICLR 2021년도 top 50 키워드 중 GNN은 4위까지 했습니다..![4]

gnn_stats

물론 다른 분야보다 상대적으로 최근에 관심을 얻게된 분야다보니 한국에서 생각보다 graph나 gnn에 대한 자료를 얻고, 공부하기는 쉽지 않았는데요. 오늘 소개드릴 수민 빌더님은 가짜연구소에서 graph와 GNN과 관련한 총 3개의 스터디나 이끄신 분입니다 :) 아시겠지만 스터디를 이끄는게 쉬운 일은 아닌데요..! 무려 한 개의 큰 주제로 3번이나 이끄신 분이라 기대도 되었고, 인터뷰 질문에 대한 답변을 보았을 때 리더십과 꼼꼼함을 함께 겸비한 분이라는걸 많이 느꼈답니다.

그럼 오늘 글에 필요한 간단한 백그라운드를 설명드렸으니 Graph와 GNN 스터디, 어디까지 해봤니?로 세번째 컨텐츠를 시작하겠습니다. GNN에 대해서는 특정 부분의 깊이 있는 설명보다 GNN이 무엇이고, 왜 필요하고, 어떤 테스크를 할 수 있는지, gnn에 어떤 어려움이 있는지의 개괄적 내용을 다뤄요. 수민님의 이야기에서는 graph와 gnn 공부를 위한 팁과 온라인 스터디 운영팁까지 알아갈 수 있으니 처음부터 끝까지 재미있고 알차게 읽으시길 바랍니다 :)

Contents



안녕하세요, 수민님! 간단하게 자기 소개 부탁드려요!

안녕하세요. 저는 가짜연구소에서 아카데믹 빌더와 커뮤니티 빌더를 함께 하고 있는 한수민이에요.

저는 ‘가짜연구소’란 이름도 정해지지 않았을 때, 페이스북에서 머신러닝 커뮤니티를 함께 만들어 볼 사람을 찾는다는 글을 봤었어요. 글을 보고 재밌겠다 싶어서, 깊게 고민하지 않고 합류하고 싶다고 연락을 드렸어요. 물론 1기 활동을 진행할 때에만 해도, 커뮤니티를 만드는 활동을 통해 바라는 점이나 기대하는 점이 없었어요. 단순히 다른 사람들과 온라인으로 이야기하는게 재밌어서 활동했었어요. 그런데 1기 이후로 계속 활동을 해올 수 있던 건, 단순한 재미도 있지만, 함께 하시는 분들에게서 받는 긍정적인 자극을 제일 커요! 빌더님들은 물론이고, 같이 공부 하난 러너님들께도 많이 배우고 있어요. 머신러닝 지식뿐만 아니라, 삶에 대한 자세(?)까지도요.

수민님은 어떤 계기로 graph에 관심을 갖게 되셨는지 궁금해요.

저는 GNN에 관심이 있기보다는 그래프에 관심이 있었어요. 머신러닝 분야에서 일을 하다보니, 그래프에 대한 관심이 자연스럽게 GNN으로 이어졌어요. 그래프에 관심을 갖게 된 건, 전공 때문이에요. 수학이랑 컴퓨터공학을 전공했는데, 두 전공의 공통된 부분 중 하나가 그래프에요. 매일 수식만 보다가 그래프 그림 그리면서 공부하니까 재미있었어요.

GNN은 무엇인가요? Network Embedding과 GNN은 어떤 차이가 있죠?

저도 궁금해서 정리된 내용이 있는지 찾아보았는데요. 2020년 서베이 논문 [5], [6] 내용 일부를 참고해서 공유드려요.
Network Embedding은 네트워크 구조와 노드 정보를 모두 보존하면서, 네트워크의 노드를 저차원 벡터로 표현하는 것을 목표로해요. 그래프 정보를 담은 임베딩 벡터를 만든 후, 기존 머신러닝 알고리즘을 이용해서, 다양한 그래프 분석 task (e.g., classification, clustering, …)를 수행할 수 있어요. 그 예로 DeepWalk, node2vec 같은 것이 있겠는데요. 즉, 꼭 딥러닝을 이용하지 않은 matrix factorization이나 random walk같은 방법도 사용해요.

Graph Neural Network (GNN)는 그래프 도메인에서 작동하는 딥러닝이에요. 즉, end-to-end 방식으로 그래프 관련 tasks를 다뤄요. 또한, direct network embedding 방법에는 단점들이 있는데요. 예를 들어, 파라미터의 수가 node 수에 따라 선형적으로 증가하여, computationally inefficiency 하다는 것과 dynamic graphs를 처리하거나 새로운 그래프에 generalize 되기 어려운 점이에요. 이러한 부분을 GNN이 극복할 수 있어요.

이렇게 간단하게 설명드리지만, 좀더 알고 싶다면 위의 서베이 논문을 참고하면 좋을 것 같아요!

CNN, RNN과 다르게 GNN이 갖는 특징이 있을까요?

그래프는 기존의 머신러닝, 딥러닝 모델이 잘 처리하지 못하는 non-Euclidean 데이터에요. 그래프를 처리하기 어려운 이유는 기존의 모델들은 상대적으로 단순한 데이터 유형에 특화되어 있기 때문인데요. 예를 들어, 스탠포드 수업 자료를 참고해서 설명드리자면 이미지나 텍스트/스피치는 아래와 같은 구조로 표현될 수 있어요.

gnn_data

이미지는 인접한 픽셀간 모두 연결되어 있고, 텍스트/스피치 역시 전,후 순서와 모두 연결되어 있어요. 하지만 그래프는 더욱 복잡한 구조를 갖고 있어요. 특정 노드의 상하좌우에 어떤 노드가 있을지 정할 수 없고, 노드의 고정된 순서도 없기 때문이에요. 저는 이렇게 기존의 모델들이 집중하지 않은, 다루기 어려운 그래프를 처리할 수 있다는 점이 GNN의 가장 큰 특징이라고 생각해요.

GNN의 주요한 테스크는 어떤 것이 있나요?

다양한 task에 GNN이 활용되고 있어서 특정 task를 고르기 어려워요. 우선 GNN으로 예측하게 되는 대상은 노드, 엣지, 그래프 전체가 돼요.

gnn_graphs

이를 토대로 생각하면, node classification, edge prediction, graph classification 이라고 볼 수 있을 것 같아요.

gnn_task

실제로 GNN은 정말 다양한 분야에서 적용되고 있어요. 서베이[6]의 테이블을 예시로 보여드리는데, 저 역시 GNN이 어디까지 확장될지 정말 기대가 되어요!

gnn_task2

이런 많은 테스크들 중 저희 스터디원들이 관심있는 쪽은 GNN을 이용해 NLP, CV, anomaly detection 과 같은 기존의 딥러닝 테스크를 수행하는 것도 있구요. 관심 적용 도메인으로는 사회학, 센서 데이터를 이용한 물리, 신약 개발, 추천 시스템에서 교통까지 다양해요.

GNN이 갖는 주요한 challenges는 무엇일까요?

크게 Over smoothing, Over squashing, 인프라 구축 문제가 있는 것 같아요.

Over smoothing은 MPNN (Message Passing Neural Network)에서, layer 수가 증가할수록 node의 representation이 유사해지는 경향이 있어서, 예측 성능이 떨어지는 문제가 있어요. 정보가 유사해지는 것을 smoothing 되는 것으로 표현한 것 같아요. 같은 over를 가진 또다른 문제로는 over squashing이 있어요. Over squashing은 아주 많은 nodes가 bottleneck node를 지나면, messages가 지나치게 squashing/compression이 되어 messages가 손상되는 문제에요.

이러한 모델 측면 외에 인프라 자체에 대한 문제도 빼놓을 수 없어요. 그래프는 정말 정말 크게 만들 수 있는데, 이러한 그래프를 처리할 수 있는 인프라가 잘 구축되어야 한다고 생각해요. 데이터가 너무 커서, 데이터 압축 분야와 모델 경량화 분야도 연구가 많이 되지 않을까 해요.

그래프에서 가장 의미있다고 생각하거나, 재미있게 읽은 논문이나 프로젝트가 있을까요? 간단하게만 소개해주세요!

먼저 그래프 관련 컨퍼런스가 올해에 새로 생겼어요. 자문 위원으로, CS224W 교수님 (Jure Leskovec), GAT 1저자 (Petar Veličković) 등등 유명하신 분들이 참여합니다. 올해 하반기에 논문 제출도 가능하고, 컨퍼런스도 열리니, 관심있게 지켜보시면 좋을 것 같아요.

흥미롭고 중요하다고 생각하는 논문으로는 PinSAGE[7]가 있어요. 추천시스템을 공부한다면 꼭 읽어보시면 좋을 것 같아요. 모델 이야기 외에도 실제 현업에서 어떻게 적용하는지도 적혀있어요.

GraphML을 공부할 때 느낀 어려운점은 어떤 것인가요?

음, 어떤 자료로 공부해야할 지 몰라서 막막했던 것이 제일 힘든 점이였어요. 잘 정리된 자료나 커리큘럼(?)이 있으면 좋겠다고 생각해요. 요즘에는 관련 강의들도 많이 공개되고 있으니, 좋은 자료를 알고 계시면 다같이 모아보아도 좋을거 같아요. 제 개인적으로 추천드리고 싶은 순서는 아래와 같아요.

  1. Stanford CS224W 강의
    • 처음 공부할 때, 가장 좋은 학습 자료인 것 같아요. 교수님이 기초부터 심화까지 직관적으로 잘 설명해주세요.
  2. Stanford CS224W 강의에서 다룬 논문 + 논문 구현 코드
    • CS224W 강의를 다 듣거나, 들으면서, 강의에서 다룬 논문과 구현 코드를 공부하면 좋아요.
    • 저도 강의에서 다룬 논문을 읽는 스터디를 진행하고 있어요. 확실히 논문을 읽으니까 강의를 들을 때보다 더 잘 이해 되더라고요.

Graph 스터디 운영동기와 수민님의 스터디 역사가 궁금해요.

저는 게으른 편이라서 혼자 공부하는 것보다, 스터디를 선호해왔어요. 조금의 강제성이 저한테는 도움이 많이 되더라고요. 스터디의 장점은 정말 많지만, 다양한 관점의 이야기를 나눌 수 있는 것이 가장 큰 장점이라고 생각해요. 다양한 관점의 이야기도 듣고, 토론을 할 수 있어서, 혼자 공부할 때보다 훨씬 넓은 폭으로 이해할 수 있어요.

제가 현재까지 진행한 그래프 관련 스터디들은 총 3개 진행해왔고, 진행하고 있어요. 첫번째 스터디는 GNN하면 가장 유명한 스탠포드 수업 자료를 이용한 스터디였고, 두번째는 네트워크 사이언스에 유명한 책을 바탕으로 스터디한 것이에요. 현재 진행하고 있는 스터디는 graph representation learning에 관한 논문 스터디에요. 해당 스터디는 블로그도 있으니, 관심있게 지켜봐주세요!

  1. Stanford CS224W: Machine Learning with Graphs (종료)
  2. Network Science (종료)
  3. Graph Representation Learning 논문 스터디

여담이지만, 효과적인 온라인 스터디 운영 방식의 노하우가 궁금해요!

제가 생각했을 때 온라인 스터디를 진행할 때 가장 신경 써야하는 부분은 팀원들의 참여도인 것 같아요. 오프라인 스터디에 비해 시간과 장소에 대한 제약이 덜하지만, 그만큼 자유도가 크기 때문에 어떻게 진행해야 할지 고민이 많았어요.

제가 진행해보았을 때, 성공적이었던 몇 가지 규칙을 소개해드릴게요!

  1. 카메라 켜기

카메라를 켤 때, 발표자가 혼자 이야기한다는 느낌이 덜 한 것 같아요. 팀원들의 표정을 보지 않으면, 발표자가 혼자 이야기하는것 같은 기분이 크게 드는 것 같아요. 그리고 얼굴을 보고이야기하니 훨씬 더 친밀감이 생겼어요.

  1. 자유롭게 질문할 수 있는 분위기 만들기

스터디 내용을 모두 이해하시고 질문을 안 하시는 것이면 정말 좋지만, 질문이 있지만 질문을 못 하시는 분이 계실 수도 있어요. 질문이 너무 기초적인 것 같아 질문을 못 하시는 분들이 계실 것 같아서, 초반에는 제가 질문을 많이 하려고 하는 편이에요! 초반에는, 아는 내용도 질문으로 준비하면서,스터디 분위기를 잡는 데에 도움이 많이 됐어요.

  1. 스터디 중간 회고

익명으로 스터디 중간 피드백을 받으면, 스터디가 잘 진행되고 있는지 점검할 수 있고, 앞으로 진행 방향을 정하는 데에 많은 도움이 돼요. 예를 들어, 스터디 난이도, 진행 속도, 전체적인 스터디 만족도, 아쉬운 점 등 여러 질문을 할 수 있어요.

끝으로 어떤 계획이 있으신가요?

지금 그래프 기초 논문 읽는 스터디는 구현 코드는 다루지 않고, 논문만 읽고 있어요. 스터디가 6월에 종료되면, 구현 코드를 보는 스터디를 만들려고 계획하고 있어요. 확정은 아니에요~

글을 마무리하며

저는 수민님이 하나의 주제(심지어 자료도 많지 않은 주제)에 대해 연속적으로 3개의 스터디를 만드셔서 꼭 인터뷰를 하고 싶었습니다 :) 스터디를 계획하고 잘 마무리하는 것은 생각보다 큰 신경과 노력이 필요한데요. 특히, 참고자료가 많지 않은 스터디 경우는 빌더의 책임감이 좀더 중요하게 작용하는데, 꾸준히 여러개를 하셨던 분이라 더욱 인상깊었던 것 같습니다. 인터뷰 요청 후에도 좀더 풍부하게 대답해주기 위해 스터디 크루분들과 회고한 내용을 함께 담아 알려주셨는데요. 그 덕분에 다양한 이야기를 바탕으로 글을 작성할 수 있었던 것 같습니다.

더불어, 가짜연구소에서 기획하는 이벤트에서도 수민님의 손길이 많이 닿아있는데요. 대표적인 예로는 sorting hat이 있습니다. 가짜연구소에서 진행하는 마법학교에서 활동하려면 기숙사 배정을 위해 sorting hat을 거쳐 본인에게 적합한 기숙사를 배정받게 되는데요.
수민님이 비슷하지만 다양한 사람들이 함께 할 수 있도록 고안해주셨답니다. 이참에 어떤 것인지 궁금하신 분들은 한번 해보시면 좋을 것 같아요!

이렇게 책임감 강하신 수민님이 계획하는 다음 스터디 굉 장 히 기대가 되는데요. Graph와 GNN 에 관심있으신 분들이라면 위에 추천해준 자료와 정리된 내용을 참고해서 공부하셨다가 다음 스터디에 참여해보면 어떨지 조심히 추천드려봅니다. 그럼 이제 풍부한 인터뷰와 가짜연구소에 묵묵히 힘을 실어주시고 계신 수민님께 감사의 말씀을 전해드리며, 오늘 컨텐츠글을 마무리하겠습니다!


References

[1] : https://ko.wikipedia.org/wiki/%EA%B7%B8%EB%9E%98%ED%94%84_(%EC%88%98%ED%95%99)

[2] : https://namu.wiki/w/%EA%B7%B8%EB%9E%98%ED%94%84(%EC%9D%B4%EC%82%B0%EC%88%98%ED%95%99)

[3] : https://ko.wikipedia.org/wiki/%EA%B7%B8%EB%9E%98%ED%94%84(%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0)

[4] : https://github.com/evanzd/ICLR2021-OpenReviewData

[5] : Wu, Zonghan, et al. “A comprehensive survey on graph neural networks.” IEEE transactions on neural networks and learning systems 32.1 (2020): 4-24.

[6] : Zhou, Jie, et al. “Graph neural networks: A review of methods and applications.” AI Open 1 (2020): 57-81.

[7] : Ying, Rex, et al. “Graph convolutional neural networks for web-scale recommender systems.” Proceedings of the 24th ACM SIGKDD international conference on knowledge discovery & data mining. 2018.

[8] : http://web.stanford.edu/class/cs224w/slides/01-intro.pdf

[9] : https://distill.pub/2021/gnn-intro/


가짜연구소 페이지 : https://pseudo-lab.com/
가짜연구소 discord: https://discord.gg/HeHbFAvmSZ
문의 : pseudolab.operator@gmail.com

김소연

김소연

/ 3-4기 / Think globally, act locally.

LG AI NLP Federated learning