본문 바로가기
Data Science/NLP with Deep Learning

NTN으로 시작하는 자연어처리와 딥러닝 (2) - 일단 NTN 알기 : 새로운 사실의 발견

by 싸코 2018. 2. 7.


『NTN으로 시작하는 자연어처리와 딥러닝』



NTN을 통해 자연어처리(NLP)와 딥러닝을 알아보기 전에 NTN이 무엇인지 조금 더 알아야 NTN 모델에서 사용하는 자연어처리 개념과 딥러닝 기법들에 대한 이해가 가능할 것 같습니다.


이번 포스트에서는 NTN 모델이 무엇인지, 어떤 목적으로 만들어졌고, 활용될 수 있는지 등을 중심으로 개략적인 내용에 집중해서 소개하고자 합니다.

 


일단 Neural Tensor Network 무엇인지 알기

Relation을 중심으로 텍스트 Entity들 간의 관계를 분석하는 NTN


NTN은 Neural Tensor Network의 약자로 스탠포드 대학교 교수인 Richard Socher (2013)가 "Reasoning With Neural Tensor Networks for Knowledge Base Completion"에서 지식을 넘어선 추론(Reasoning Over Knowledge)을 위해 제시한 딥러닝 모델입니다.



나의 지식을 넘어서 새로운 사실 발견 : Knowledge Base Completion


논문의 제목을 보면 Knowledge Base Completion이라는 말이 있습니다. 이는 두 개의 Entity간의 관계를 파악하는 작업을 말합니다. 새로운 정보는 계속 발생하고 모든 정보에 대해서 데이터베이스로 가질 수는 없으며 일정한 불완전한 면을 가지고 있을 수 밖에 없습니다.


예를 들어, 노랑말콩 원숭이라는 새로운 원숭이가 발견되었다고 합시다. 우리는 이 노랑말콩 원숭이가 꼬리를 있을 것이라고 추론(reasoning)해 볼 수 있습니다. 이 때 원숭이와 꼬리라는 entity는 있다(신체의 일부)라는 relation을 중심으로 관계를 가지게 됩니다. 이를 정보추출 영역에서는 triplet에서 보통 표현합니다. (e1, R, e2). 우리의 예에서는 <노랑말콩 원숭이, 있다, 꼬리> 와 같이 두 entity에 대한 relation을 중심으로 표현됩니다. 이 때의 정보는 참(True)이 될 것입니다. 우리는 <원숭이, 있다, 꼬리>를 알고 있으며, <노랑말콩 원숭이, 이다, 원숭이>도 알고 있기 때문입니다.


만약, '홍길동'이라는 사람이 있다고 합시다. 이 사람은 꼬리가 있다고 추론할 수 있을까요? 이 때의 관계는 다음과 같이 표현됩니다. <홍길동, 있다, 꼬리> 우리는 홍길동은 꼬리가 있지 않다고 쉽게 추론하게 됩니다. 사람은 꼬리가 없기 때문입니다. 따라서 이 때의 관계는 거짓(False)이라고 할 수 있습니다. 




하지만 우리가 세상의 모든 entity들 간의 관계를 어떤 relation을 중심으로 관계가 있는지(T), 없는지(F)를 알 수는 없습니다. 그리고 새로운 정보가 있기 때문에 그 사실에 대한 진위를 가리기가 어렵습니다.


Neural Tensor Network는 노랑말콩 원숭이는 꼬리가 있어!! 라고 말해주는 신경망 모델입니다. 간단하게 생각하면 벡터화된 거대한 지식 창고입니다. 지식 창고를 어떻게 학습시키느냐에 따라서 우리는 새로운 사실을 추론해주는 자신만의 지식창고를 만들어 다양한 도메인의 QA나 관계 예측 등을 할 수 있습니다.


그리고 이는 단순히 통계적인 확률이나 단어의 생김 유사성에 의한 것이 아니라 벡터 공간 안에서 의미적인 유사성을 고려하기 때문에 새로운 정보들에 대한 관계 추론이 더욱 용이하다는 측면이 있습니다.




아래는 논문에서 사용된 그림은 두 개의 entity가 relation을 중심으로 어떻게 관계가 예측되는지를 보여줍니다. Bengal tiger가 tiger의 종류이기 때문에 개념적 유사성이 있고, tiger는 tail을 가지고 있기 때문에 Bengal tiger 역시 꼬리가 있을 것이라고 예측할 수 있는 것입니다.





Neural Tensor Network의 목표

어떤 사실(fact)이 주어졌을 때 (e1, R, e2)라는 관계가 참(True)인지, 그리고 어느정도 확신을 갖고 참이라고 하는지 알려주는 것입니다.



NTN에 대해서 간략하게 한글로 설명하고 싶었지만 의미 전달에 있어서 오류가 생길 것 같아서 간단한 영어로 표현하겠습니다. 그리고 그 내용은 아래와 같습니다.




Neural Tensor Network is

  • to identify for a relationship between entity pair
  • to explore the additional relationship among entities
  • to capture how probable it is part of certain relation



다음 포스트부터는 앞의 핵심개념 부분에서 다루었던 자연어처리와 딥러닝 등의 개념들을 자세하게 다룰 예정입니다. 여기서 한 호흡 쉬도록 하겠습니다!

댓글