본문 바로가기
ML | DL | Big data/Data Engineering

지식 베이스(Knowledge base)에 대해 알아보자

by 썽하 2021. 10. 8.

지식 그래프(Knowledge graph)보다 지식 베이스(Knowledge base)를 먼저 알아봤어야 순서상 맞았던 것 같다. 지식 베이스의 기본적인 정보에 대해 알아보자.

 

 

약어

* KB : Knowledge base

 

Knowledge base란?

지식 베이스(Knowledge base)는 분석 시스템 중 하나이다. AI 에이전트가 사용될 분야와 관련된 지적 활동과 경험을 통해서 축적한 전문 지식 그리고 문제 해결에 필요한 사실과 규칙 등이 저장되어 있는 데이터 베이스이다.

 

초기에는 'Knowledge base'란 용어는 'database'라는 용어와 구별하기 위해서 만들어졌다. 1970년대에 사실상 모든 대형 관리 정보시스템은 데이터를 관계형 혹은 계층적 데이터베이스 시스템(RDMBS)에 저장했다.

 

Database의 속성

  • 플랫 데이터: 문자열 또는 숫자로 표 형식으로 표시된 데이터.
  • 다중 사용자: 동일한 데이터에 동시에 로그인된 둘 이상의 사용자 또는 시스템을 지원한다.
  • Transaction : 동시 사용자가 액세스 한 데이터 간의 무결성과 일관성을 유지해야 한다. 즉, 흔히 말하는 ACID 특성을 켜야 한다. * 원자성, 일관성, 격리성 및 내구성(Atomicity, Consistency, Isolation, Durability)
  • 수명이 길고 큼 : 많은 양의 데이터를 저장할 수 있어야 하고, 해당 데이터베이스를 쓰는 프로그램보다 수년에서 수십 년 이상 유지될 수 있어야 한다.

 

 

Knowledge base system이란?

지식 기반 시스템(knowledge base system)은 세상에 존재하는 사실로 새로운 사실을 추론하거나 거짓을 구분해내기 위해 추론 방법을 나타내는 시스템이며, Knowledge base로 구성된다.

 

초기의 분석 시스템은 여러 사용자가 필요하거나 데이터 트랜젝션이 필요한 등 복잡성이 거의 없었고, 의료진단 분자 설계, 비상사태에 대한 대응 같은 특정 결론이나 답변에 도달하기 위해 사용되었다고 한다.

 

또한 기존의 데이터베이스와는 대조되게 Knowledge base에 대한 요구사항도 달랐다. KB는 '모든 생명체는 죽는다' 같은 세상에 존재하는 진실을 알아야 한다. 데이터베이스는 일반적으로 이러한 일반적인 사실을 추론하지 않고 대신 각각의 생명채에 대한 정보를 나타내는 수천 개의 정보를 테이블에 저장한다. 

 

예를 들어 '모든 인간은 죽는다'라고 추론하는 것은 KB의 영역이고,

철수, 영희 등의 사람들의 나이, 성별, 주소 등을 나타내는 것은 데이터베이스의 영역이다.

 

시간이 지나면서, 분석 시스템이 프로토타입에서 기업의 시스템으로 이동하면서 데이터 스토리지에 대한 요구사항은 트랜잭션을 지원하는 분산형 데이터베이스 요구사항과 빠르게 겹치기 시작했다. 이때부터 KB는 데이터베이스 서비스도 지원하도록 설계되기 시작되었다고 한다. 

 

 

Knowledge base construction

그래서, 지식 베이스는 어떻게 구축할까?

텍스트, 오디오, 비디오, 다이어그램, 표 등에서 추출한 사실로 KB를 채우는 프로세스를 통해서 할 수 있다. 예를 들어, 약물과 질병 사이의 상호작용에 대한 의학 KB, 공룡이 언제 어디에서 살았는지 이해할 수 있는 고생물학 KB, 배우자 부모 또는 형제자매와 같은 사람들의 관계에 대한 KB를 구축하는 것을 KBC라고 한다.

 

구체적으로 예를 들자면, 문장으로 부터 배우자 관계를 추출하는 소프트웨어를 구축할 수 있다. 아래 그림처럼 버락 오바마, 미국 전대통령, 부인, 미셸 오바마와 같은 단어가 있는 문장으로 구성된 문서를 통해 '버락 오바마'와 '미셸 오바마'가 결혼했다는 사실을 나타내는 has_spouse 튜플이 있는 테이블을 구축할 수 있다. 또한 아래 그림에서는(DeepDive 시스템이라고 한다)  사실일 확률 'Prob'도 하나의 튜플로 구성해 놓았다.

출처 : DeepDive

 

KBC 용어

KBC 용어에 대해 알아보자.

  • Entity : Entity(개체)는 사람, 동물, 기간, 장소 등과 같은 현실 세계의 물체이다. 예를 들면 "버락 오바마"라는 사람은 Entity이다.
    Entity-level data : 개념적 개체의 영역에 걸친 관계형 데이터이다. 예를들어 "버락 오바마"라는 실제 entity를 담고 있는 글자 그대로의 문구를 entity-level data라고 한다.
  • Mention : mention은 '버락 오바마는 미셸과 결혼했다'라는 문장에서 '버락 오바마'와 같은 entity에 대한 언급을 뜻한다.
  • Mention-level data : '버락 오바마는 미셸과 결혼했다' 같이 entity에 대한 언급이 있는 데이터를 뜻한다.
  • Entity linking : 어떤 enitity를 언급하는지 알아내는 과정이다. 예를 들어 "버락", "오바마", "전 대통령"은 동일한 앤티티 "버락 오바마"를 지칭할 수 있으며, entity linking 은 이것을 알아내는 과정을 말한다.
  • Metion-level relation : entity가 아닌 mention 간의 관계이다. 예를 들어서 "버락과 미셸은 결혼했다"라는 문장에서 "버락"과 "미셸"은 has_spouse의 mention-level relation을 가지고 있다.
  • Entity-level relation : entity 간의 관계이다.  예를 들어서 "버락 오바마"와 "미셸 오바마"는 entity-level의 관계를 가지고 있다.

출처 : DeepDive

 

말이 어려운데, 그림을 보는 게 훨씬 이해가 편할 듯하다.

 

 

KBC data flow

일반적인 KBC 애플리케이션에서 시스템의 입력은 텍스트 형식의 Raw 데이터인데 시스템의 출력은 각 entity 간의 관계를 포함한 데이터베이스이다.

 

이렇게 하기 위해서는 다음 단계를 거쳐야 한다.

  1. data preprocessing / 데이터 전처리
  2. feature extration / 특징 추출
  3. factor graph generation by declarative language / 선언적 언어에 의한 요소 그래프 생성
  4. statistical inference and learning / 통계적 추론과 학습

 

구체적으로 설명해보자면

  1. 전처리 단계에서는 입력 데이터(텍스트 형식의 article)를 가져와서 데이터베이스에 로드하고 각 문장의 단어, POS 태그, 엔티티 태그 등을 포함한 문장 수준의 정보를 얻기 위해서 문서를 구문 분석한다.
  2. 특징 추출 단계에서 DeepDive는 개발자가 작성한 추출기(extractor)를 실행하여 입력 데이터를 증거(evidence)라는 관계 신호로 변환한다. 증거 : (1) 후보군에 대한 mention-level relation, entity-level relation; (2) 언어적 특징을 뜻한다.
  3. 증거를 사용하여 요소 그래프를 생성한다. Deepdive에서 이 요소, 그래프를 생성하는 방법에 대해 알려주기 위해 개발자는 SQL과 유사한 선언적 언어를 사용하여 추론 규칙을 지정한다.
  4. 다음 단계에서는 생성된 요소 그래프에 대해 학습 및 통계적 추론을 자동으로 수행한다. 학습, 추론 규칙에 지정된 요소 가중치 값이 계산된다. 이 가중치는 규칙에 대한 신뢰도를 뜻한다. 추론 단계에서 변수의 한계 확률이 계산되며, 특정 사실이 참일 확률을 뜻한다.

 

추론 후 결과는 데이터베이스 테이블에 저장된다. 개발자는 SQL 쿼리를 통해 결과를 얻고, calibration plot 등으로 결과를 확인한 후, 오류 분석을 수행하여 결과를 개선한다. 

다음 그림이 앞서 말한 프로세스를 그대로 따르고 있다.

출처 : DeepDive

 

 

 

 

댓글