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

NTN으로 시작하는 자연어처리와 딥러닝 (0) - 들어가기 앞서

by 싸코 2018. 2. 6.

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


왜 NTN으로 NLP와 Deep Learning인가?



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




1) NTN은 자연어처리와 딥러닝의 교집합
2) Word Vector Representation 이해에 도움
3) Neural Network 이해에 도움


1. NTN은 자연어처리와 딥러닝의 교집합이다

NTN 모델에서 다루는 주요 주제는 Question Answering과 Information Retrieval입니다. 이는 NLP의 영역으로 컴퓨터가 인간의 언어를 이해하는 것에서 시작하여 문서 분류나 기계번역, 질의응답 등으로 확장됩니다. 또한, word2vec이나 skip-gram 알고리즘, Negative Sampling 학습 방법 등을 사용하는데 이는 자연어 처리 부분입니다.


그리고 NTN 모델은 일반적인 인공 신경망(Neural Network) 모형으로 순전파와 역전파를 모두 사용합니다. 딥러닝은 인간의 인식을 모방하는 영역(NLP, Computer Vision)에서 많은 성능 상의 우위를 보여왔습니다. 그리고 수 많은 input feature가 있을 때에 가장 적합한 방법이기도 합니다. 따라서 자연어처리 분야에서도 많이 활용되어 왔습니다.


이렇게 NTN은 Natural Language Processing와 Deep Learning의 큰 두 가지 축으로 이루어진 모델입니다. 따라서 데이터를 구성하고 모델을 학습하는 technique에 있어서 자연어처리에서 사용하는 기존의 이론적인 배경과 기법들을 알아야 하며 딥러닝의 상위 범주인 머신러닝의 학습 기법에 대한 이해가 필요합니다.


NLP와 딥러닝에 대해서 정리한 포스트를 먼저 읽는다면 이해에 도움이 될 것입니다.




2. Word Vector Representation을 이해하기 좋다

word2vec에 대한 이해가 없는 사람들에게 실제 word2vec의 활용 사례로서 reference로 그 학습을 시작하는데 좋은 출발점이 됩니다. word2vec은 이전부터 계속 논의됐으며 Tomas Mikolov (2013)를 시작으로 본격적으로 활용되기 시작했고 NTN 역시 여기에 영향을 받은 것으로 보입니다. NTN은 word vector를 Knowledge Base의 입력 데이터로 사용하는 것으로 초기 word vector representation에 대한 개념을 익히기에 좋은 모델입니다.


게다가 relation라는 의미적인(syntactic) 개념을 고려하였기 때문에 단순히 frequency나 similarity에 기반한 분석이나 모델이 아니라 관계를 고려한 모델이라는 점에서 자연어처리 영역에서 의미가 있는 모델이며 자연어의 의미적 분석의 출발로 삼기 좋습니다.


또한 사용되는 NLP 알고리즘이나 학습 기법이 기존 approach에서 발전된 형태로 기존 approach를 알 수 있어 좋습니다. 이와 관련해서는 "Natural Language Processing (Almost) from Scratch"에서 많은 내용을 가져올 것 같습니다. 여기서 다루는 NTN 모델이 어떤 언어학습모델이고 그런 언어 모델에서는 어떠한 학습 기법이나 알고리즘을 사용하는지 어떤 손실함수를 사용하는지 등을 이론적으로 파악하고 깊이를 더 할 수 있을 것으로 기대됩니다.



3. 기초적인 Neural Network를 이해하기 좋다

NTN 모델은 크게 봤을 때 다수의 Perceptron Neuron으로 구성된 Deep Neural Network입니다. 더 자세한 사항은 이후에 소개하겠지만 간단하게 설명드리자면 NTN 모델은 순전파(forward propagation)와 역전파(back propagation)을 사용하는 Single Layer Neural Network가 여러 개가 있는 Multi-Layer Perceptron(MLP)의 형태입니다. 자세한 것은 추후 다루도록 하겠습니다.


NTN 모델은 결국 entity들 간 relationship에 대한 분류 문제(true? or false?)를 해결하는 것을 목표로 하는 분류(classification) 모델입니다. 분류 모델에서 사용하는 머신러닝 알고리즘과 학습 기법들이 사용되며 인공신경망의 초기에 사용하는 방법들이 주로 사용되었습니다. score function, objective function, non-linearity function 등 머신러닝에서 나오는 개념들이 사용되기 때문에 실제 예제로써 이러한 것들을 학습할 수 있습니다.  이 역시 추후 자세하게 다루도록 하도록 하겠습니다.


이 논문이 나오고 난 이후에 수많은 딥러닝 학습 기법들(Weight Initialization, Optimization.... )에 대한 연구가 활발하게 이루어지면서 기존 NTN 모델에서 사용했던 학습 기법들을 대체했을 때 성능의 향상도 기대해볼 수 있습니다. 이 또한 기존 방식과 새롭게 유행하는 학습 기법들을 비교해보도록 하겠습니다.





요약

NTN은 NLP와 Deep Learning을 처음 접하는 사람이 둘 모두에 대한 개념을 익히고 발전시키고 싶을 때 출발점으로 삼기 좋은 모델이다.


Name Entity Embedding과 같은 advanced된 딥러닝 기반의 NLP 기법을 학습할 때 좋은 시작점이기도 하다.


 


*시작하기에 앞서 가능하면 Andrew Ng. 교수의 coursera 머신러닝 강의를 듣는 것을 추천합니다. 또는 인공신경망에 대해 기초 내용을 다룬 다른 포스트를 읽는 것도 이해를 도와줄 수 있습니다.


댓글