이번 글에서는 지식 그래프의 기본 개념에 대해 알아보고, 관련된 대표적인 태스크로 어떤 것들이 있는지 간단하게 알아보겠습니다. 또 KG와 NLP와의 관련성에 대해서도 간단히 소개하며 마무리하겠습니다.
Knowledge Graph (KG) 기본 개념
KG는 real-world의 객체 (entity) 사이의 관계 (relation)를 그래프 형태로 모델링한 것으로, 구조화된 데이터의 형태를 띕니다. KG는 실세계의 사실 (fact)들을 저장하기 위해 만들어졌다고 생각해주시면 되는데요. 각 객체들은 그래프 상에서 노드 (node)로 표현되고, 이들 사이의 관계는 노드를 연결하는 엣지 (edge)로 표현됩니다.
- 엔티티 (Entity): 실세계의 객체, 어떠한 개념, 사건, 사물, 또는 위치 등을 나타낼 수 있는데, 예를 들어 인물, 도시, 상품, 기업, 도서 등이 여기에 포함됩니다.
- 관계 (Relation): 엔티티 사이의 관계를 나타내는데, KG를 시각화했을 때 한 노드에서 다른 노드로 향하는 화살표 형태로 그려집니다. 예시로 “is”, “located_in”, “president_of” 등이 있습니다.
- 속성 (Attribute): 엔티티와 관계 외에 속성 정보를 담는 KG도 있는데, 엔티티의 디테일한 정보를 표현하기 위한 키-값 페어로 데이터를 저장할 수 있습니다. 예를 들어, 어떠한 인물 엔티티에 대해서 ‘출생년월’이나 ‘국적’ 같은 정보를 추가로 저장할 수 있습니다.
KG 내에는 존재하는 fact들을 (head, relation, tail)과 같은 triple 형태로 편리하게 표현할 수 있는데요, 예를 들어 (Seoul, located_in, South Korea) 라는 triple 형태의 fact를 문장으로 표현하자면 “서울은 한국에 위치해 있다” 인 것이죠.
누구나 이용 가능하게 공개되어 있는 KG로는 위키피디아의 텍스트를 자동 추출하여 KG로 변환하여 구축한 DBpedia, DBpedia와 비슷하지만 보다 정교한 ontology 정보를 담은 YAGO, 구글에서 다양한 소스 데이터를 활용하여 구축한 Freebase, 위키미디어에서 운영하는 Wikidata 등이 있습니다.
세상에 존재하는 사실 정보들을 최대한 모아 담으려다 보니, 이들의 규모는 자연스럽게 굉장히 커졌습니다. 사실을 나타내는 triple 갯수로 보자면, DBpedia만 해도 45억개 이상, YAGO는 100개 이상을 보유하고 있죠. 그렇다면 “이미 세상에 존재하는 KG들도 충분한 것 아닌가요” 하는 의문을 품으실 수도 있는데요. 곰곰히 생각해보면, 현존하는 KG들은 여러모로 완벽하게 만드는 것이 불가능에 가깝습니다. 예를 들어, 시간에 따라 바뀌는 “사실”들이 존재하기 때문에 KG도 그에 따라 업데이트 되어야 하는 문제, 틀린 정보를 담은 KG 문제, 정보 부족 문제 등 정말 다양한 문제점을 찾아낼 수 있습니다. 따라서 KG 분야의 연구 주제도 다양한 것이고요. 모든 KG 분야의 태스크를 이 포스팅에 모두 담을 수는 없지만, 대표적인 태스크들을 알아보며, KG 분야에 대해 이해해보는 시간을 가져보도록 하겠습니다.
KG 관련 다양한 태스크 소개
1. Link Prediction (LP)
LP는 지식 그래프 내에서 두 엔티티 사이에 존재할 수 있는 관계를 예측하고자 하는 태스크입니다. 예를 들어, KG가 A와 B 사이의 관계 정보는 이미 담고 있지만 A와 F 사이의 관계는 실제로 존재함에도 불구하고, 정보를 누락하고 있을 가능성이 있는데요, 바로 이 누락된 정보 (link)를 채우는 것이 LP 태스크의 목표입니다.
이와 비슷한 태스크로 Knowledge Graph Completion (KGC)이 있는데, 누락된 엔티티를 추가하거나, 새로운 관계를 파악하고 보완하여 KG를 완성시키고자 하는 태스크입니다. 이렇게 이야기하고 보니 LP를 KGC의 sub-task로 보아도 크게 무방할 것 같다는 생각이 듭니다.
앞서 소개한 triple을 (h, r, t)로 표현한다면, KG 내에서 비어있는 정보를 찾아내기 위해 문제 정의를 (h, r, ?), (?, r, t), (h, ?, t) 와 같이 해볼 수 있겠습니다. (h, r, ?) 문제로 예를 들자면, h=”Joe Biden”와 r=”President_of” 가 주어졌을 때, t에 해당할 entity, 즉 “America”를 찾아내야 합니다.
딥러닝 모델로 해당 문제로 푼다고 한다면, 주어진 정보 (e.g., head, relation)를 input으로 했을 때 전체 entity 집합에서 가장 가능성이 높은 entity를 확률 계산을 통해 찾아내어, 이것이 정답 (e.g., tail)이 되게끔 학습을 시키는 것이 일반적인 지도학습 방법입니다. 관련 벤치마크와 대표적인 방법론들은 여기에서 확인해보실 수 있습니다.
2. Entity Resolution (ER)
공개되어 있는 다양한 KG나 데이터셋들을 합쳐서, 보다 완벽에 가까운 하나의 KG (또는 데이터셋)를 구축하고자 하는 시도들도 있는데요, 여기에서 중요한 연구 태스크 중 하나가 ER입니다. ER 태스크는 다양한 데이터 소스에서 추출된 정보에서 중복되는 내용을 통합하거나, 엔티티 표현에 대한 일관성 문제를 해결하고자 합니다.
예를 들어, 한 KG에서 “Barack Obama”라고 저장되어 있는 엔티티가 다른 KG에서는 “Obama, Barack”, 또는 “Barack H. Obama” 등으로 표현되어 있을 수 있는데요, 이 엔티티들은 다르게 표현되어 있지만, 전부 실세계에서는 동일한 대상인 “미국의 44번째 대통령”을 가리키고 있습니다. Exact Matching을 통해 두 개의 다른 KG를 합치려고 시도한다면, 이렇게 실질적으로 같은 대상을 가리키고 있는 엔티티들이 잘 merge되지 못하고, KG의 가짓수만 늘어나는 결과를 초래하게 될지도 모릅니다.
그럼, 엔티티들이 실제로 동일한 대상을 가리키는지 여부를 알아내려면 어떻게 해야할까요? 마찬가지로 딥러닝 방법론에서는 두 개의 KG 내의 entity 들의 유사성을 확률로 계산하여 점수화하는 방식으로 접근할 수 있습니다. ER 관련 벤치마크와 대표적인 연구들은 여기에서 확인해보시기 바랍니다.
3. Entity Alignment (EA)
다음으로, ER 태스크와 굉장히 비슷해 보이는 태스크인 EA를 소개해 보겠습니다. 마찬가지로 두 개의 다른 KG가 있다고 가정할 때, EA는 다른 소스 (KG) 내에 존재하며 실제로 동일한 실세계의 객체를 나타내는 엔티티를 식별하고 매핑하는 태스크입니다. 즉, 여러 지식 그래프에 걸쳐 있는 엔티티 간의 일치 여부를 파악하여, 서로 다른 소스의 엔티티들을 매핑함으로써, 지식 그래프를 통합 또는 연결하는 데 초점을 맞춥니다.
ER과 다른 점은, ER은 KG 뿐만 아니라 다른 형태의 데이터셋 간에 중복되거나 다른 표현으로 나타나는 같은 객체를 식별하여 통합하고자 하는데, EA가 객체 간의 매핑에 보다 중점을 둘 때, ER은 다른 소스의 엔티티들을 merge 하기 위한 데이터 정제와 통합에 중점을 두는 느낌입니다. 과정은 비슷하지만 최종 목표가 조금 다른데, EA는 연결된 entity pair을 찾아내어 여러 그래프 간의 연결성을 강화하는 그 자체를 중시하는 반면, ER은 실질적인 데이터의 정제와 품질 향상을 위해 통합된 데이터셋을 output으로 내는 데 포커스를 맞추는 것 같습니다.
최신 EA 연구와 관련 벤치마크는 여기에서 확인해보시면 되겠습니다.
4. Temporal KG (TKG) Completion
우리가 알고있는 “사실”들은 시간이 지남에 따라 바뀌는 경우가 아주 흔합니다. 예를 들어, 한 때 명왕성은 태양계의 일원이었지만 더 이상 아니며, 5년 전에 미국 대통령이 누구냐 물어본다면 정답은 “Donald Trump” 였겠으나 현 시점에서 같은 질문에 대한 정답은 “Joe Biden” 입니다.
시간에 따라 달라지는 사실들을 업데이트 하여 기존의 사실을 ‘덮어쓰는’ 것도 하나의 방법이지만, 시간적 차원까지 고려하여 엔티티 간의 관계가 시간에 따라 변화하는 것을 KG의 형태로 모델링하고자 하는 TKG 태스크가 있습니다. 그러니까, 기존의 (h, r, t)에 ‘시간’ 이라는 요소가 추가되어 (h, r, t, time) 이라는 새로운 문제가 정의됩니다.
TKG 관련 문제를 푸는 것이 어려운 이유는 그것의 복잡한 구조, 시간적 차원의 통합, 최신 정보 획득의 어려움 등이 있는데요, 시간이라는 정보 하나가 추가되었을 뿐이지 난이도는 크게 향상되었기 때문에, 다양한 연구들이 진행되고 있음에도 불구하고 아직까지도 해결해야 하는 문제가 많이 남아있습니다. TKG 관련 대표적인 논문들은 여기에서 확인해보시면 좋을 것 같습니다.
KG와 NLP와의 관계성
그나저나, KG와 NLP는 상당히 밀접한 관계를 가지고 있습니다. 이 둘의 차이점부터 짚고 넘어가자면, KG는 구조화된 (structured) 형태의 데이터인 반면, NLP는 비구조화된 데이터 형태를 띄고 있습니다. 이 둘은 상호 보완적인 관계를 가지는데요, 예를 들어 NLP를 통해 KG의 표현력을 향상시킬 수도 있고, 거꾸로 KG를 통해 NLP의 성능을 향상시키기도 합니다.
KG가 수혜자인 시나리오
앞서 소개한 다양한 예시에서도 보시다시피, KG의 node와 edge 자체가 자연어로 표현되어 있으며, 딥러닝을 통해 관련 태스크를 수행하고자 한다면 NLP의 embedding 사용은 필수나 마찬가지입니다. 또, 자연어로 작성되어 있는 뉴스 기사나 SNS 포스트와 같은 데이터에서 fact triple을 추출하여 KG를 확장시키는 경우에도 NLP는 없어서는 안되는 존재입니다.
KG가 NLP의 수혜를 받아온지는 사실 꽤 오래 되었는데요, 최근들어서는 거꾸로 NLP 분야가 KG의 도움을 받는 경우가 많아지고 있습니. 그의 배경에는 ChatGPT와 같은 LLM의 범용화가 있고요.
NLP가 수혜자인 시나리오
ChatGPT가 사실적인 텍스트만을 생성해내지 않는다는 사실은 이제 누구나 아는 유명한 사실인데요(…)
반면 KG는 애초에 사실적인 정보를 잘 표현하고 저장하기 위해 태어났습니다. 따라서 최근에는 LLM이 사실적인 정보를 내뱉게끔 날개를 달아주는 존재로 많이 활용되고 있는 추세입니다. LLM에게 사용자의 query와 그에 관련된 KG triple을 retrive 한 뒤 LLM에게 전달하여, 사실에 기반한 텍스트를 생성하게끔 하는 연구가 특히 활발하게 진행되고 있습니다. 유명한 연구로는 Awesome-LLM-KG가 있습니다.
마무리
KG 연구 관련 글을 쓰면서 KG 기본 개념과 대표적인 태스크에 대해 정리하고 싶다는 생각을 했었는데, 이번에 그 숙제를 마쳤습니다. 이번 포스팅은 개요 정도로만 봐주시면 좋을 것 같습니다. 각 태스크에 대한 자세한 정의와 관련 연구는 따로 또 작성해보겠습니다:)
Entity Alignment 태스크 및 벤치마크, 데이터셋 알아보기 - Jaein's Lab
[…] (EA)에 대해 보다 자세히 알아보겠습니다. KG 개념에 익숙하지 않으시다면 지난 글을 읽고 오시면 도움이 […]