티스토리 뷰
지식그래프는 주어-술어-목적어로 구성되어 데이터의 엔티티를 의미적인 관계로 표현함
최근 LLM에 사실정보를 추가하기 위한 방안으로 KG를 사용하면서 '지식그래프 임베딩 (Knowledge Graph Embedding, KGE)' 기법에 대한 글, 논문이 생겨나고 있음
관련 프로젝트를 진행해야해서 참고할만한 글을 스크랩하려고 한다.
대부분 medium의 메일링을 통해서 얻는 정보이고, 종종 논문에 대한 것도 함께 있다.
Knowledge Graph Embeddings: Unraveling the What, Why, and How
- 링크 예측: 연구원을 위한 잠재적 협력자를 식별하거나 고객을 위한 관련 제품을 제안하는 등 엔터티 간의 누락된 연결을 예측합니다.
- 엔터티 분류: 엔터티를 KG 내 인맥을 기반으로 새로운 음악가를 "재즈 가수"로 인식하는 등 특정 유형으로 분류합니다.
- 지식 기반 완성: 알려진 연관성을 기반으로 역사적 인물의 출생지를 추론하는 등 KG에서 누락된 정보를 채웁니다.
- KGE 모델: TransE, RotatE, ComplEx, TuckER
Simple Schemes for Knowledge Graph Embedding
- 머신러닝과 딥러닝의 기본 원리를 숙지합니다.
- 복소수에 대한 지식과 허수 곱셈을 사용하여 회전을 표현하는 방법.
복소수 관련 연산에 익숙하지 않은 경우 YouTube 채널 3Blue1Brown에서 복소수에 대한 훌륭한 소개를 볼 수 있습니다 . - "TransE 및 RotatE 코딩 튜토리얼"이라는 제목의 마지막 섹션에서는 PyTorch에 대한 실무 지식이 필요합니다. 그 전에는 PyTorch에 대한 지식이 필요하지 않습니다.
- 코딩 튜토리얼은 튜토리얼 섹션에도 링크되어 있는 이 colab을 기반으로 합니다.
- TransE에 대해 알기 쉬운 예시를 들어 구체적으로 설명해주고 있음. 삼중항(head, relation, tail)이 기본 개념임. 삼중항을 벡터화해서 관계를 찾을 때, 손실함수를 어떻게 구성할 것인가에 대해 설명함.
- TransE는 대칭관계(symmetric)에 대한 한계가 있음. 이를 개선하기 위해 RotatE 방식을 소개함. TransE는 합의 공식을 통해 이루어지는 반면, RotatE는 곱의 공식을 통해 임베딩을 학습함
- 퍼포먼스 평가: The first is called Mean Reciprocal Rank(MRR). MRR이 높을 수록 좋음. 정렬된 목록에서 상위k개의 요소 중 랭킹을 정렬하기 위해..? 사용하는 것이 We also use a metric called Hits@K. 최종 Hits@K 값은 모든 긍정적인 세 쌍에 대한 평가의 평균
- 하지만 TransE, RotatE 모두 효과적으로 모델링할 수 없는 관계가 존재함. N-to-1 관계임. N-to-1 관계 는 삼중항( h1, r1 ,t )이 존재하고 삼중항(h2 , r1 ,t )도 존재하는 관계 r1 입니다 . 즉, 여러 엔터티가 동일한 방식으로 다른 엔터티와 관련됨. 아 N:1관계로 예씨에서는 배우1, 배우2가 모두 같은 작품을 해서 (r:starsIn)이라는 속성으로 하나의 영화를 가르키는 관계를 말함
- 위 한계를 개선한 TransR, ComplEx 등 다른 모델들이 등장하고 있음
Q. 누락된 정보를 지식그래프 안에서 유사도를 찾고, 임베딩 과정을 찾아서 채워넣는 것. 장점이 될 수 있지만, 사실 기반의 데이터를 위해서라면 위험성을 가지고 있을 수 있음
Q. 삼중항 관계를 데이터로 다루려면 ttl보다 nt 파일이 보편적인가?
Introducing DistMult and ComplEx for PyTorch Geometric
- KGE(지식 그래프 임베딩)는 엔터티와 관계를 얕은 임베딩을 사용하여 벡터로 저차원 표현으로 변환하는 모델로, 엔터티 간의 관계가 유지되도록 설계
- 각 지식 그래프 임베딩 방식의 비밀 소스는 주어진 트리플의 점수를 매기는 방법, 즉 점수 기능에 있음
- 흑흑..너무 어려워..
- 수학적인 지식이 많이 필요함
- 코드와 함께 설명하고 있어 구현을 통해 이해하기에 도움이될 듯
- 이미 pytorch에서 KGE model을 지원하기 때문에 필요한 모델을 사용할 수 있음
KGEModel | An abstract base class for implementing custom KGE models. |
TransE | The TransE model from the "Translating Embeddings for Modeling Multi-Relational Data" paper. |
ComplEx | The ComplEx model from the "Complex Embeddings for Simple Link Prediction" paper. |
DistMult | The DistMult model from the "Embedding Entities and Relations for Learning and Inference in Knowledge Bases" paper. |
RotatE | The RotatE model from the "RotatE: Knowledge Graph Embedding by Relational Rotation in Complex Space" paper. |
논문
Stanford CS224W Graph Machine Learning 튜토리얼
https://medium.com/stanford-cs224w
- 스탠포드의 캡스톤 프로젝트로 그래프 머신러닝 코드와 튜토리얼을 볼 수 있음 (2022년 기준)
- 그래프 신경만, 지식그래프 임베딩에 대한 프로젝트를 소개함
Github
- https://github.com/totogo/awesome-knowledge-graph : KG의 전반적인 내용을 소개
- https://github.com/DeepGraphLearning/KnowledgeGraphEmbedding: 지식그래프 임베딩을 위한 RotatE모델의 PyTorch 구현
'지식그래프(Knowledge Graph)' 카테고리의 다른 글
[RDFlib] 파이썬으로 RDF 지식그래프 생성 후 CSV 또는 데이터프레임으로 저장하기 (0) | 2024.11.06 |
---|---|
[스크랩] Going Meta - RAG with Knowledge Graphs (with Neo4j) (0) | 2024.05.20 |
[rdflib] 네임스페이스(namespace) 추가하기(feat. schema1) (1) | 2024.01.11 |
[SPARQL] URI를 '/'로 구분하고 마지막 문자열만 추출 (0) | 2023.08.11 |
[SPARQL] GROUP_CONCAT 여러 행을 단일 행으로 출력 (0) | 2023.08.11 |
- Total
- Today
- Yesterday
- knowlegegraph
- Vue3
- 지식그래프임베딩
- psycopg
- TextRank
- PostgreSQL
- knowledgegraph
- Encoding
- KRworkrank
- p-tuing
- python'
- vscode
- 3d-force-graph
- v-tooltip
- volar
- rdflib
- MongoDB
- python
- writerow
- pandas
- SPARQL
- 지식그래프
- 키워드추출
- LLM
- hadoop
- Postgis
- polars
- elasticsesarch
- difflib
- PEFT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |