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

NTN으로 시작하는 자연어처리와 딥러닝 (1) - 핵심개념 살펴보기

by 싸코 2018. 2. 7.


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



개념을 이해하기 위해서 간단하게 짚고 넘어가고자 핵심 키워드와 용어 들을 정리하였습니다. 이후에 소개하게 되는 내용에 대한 간략하게 먼저 설명하는 것이므로 쭉 읽어보고 넘어가시면 됩니다. 일종의 부록 사전 느낌으로 정리하였습니다.


NTN에서 다루는 NLP, Deep Learning 핵심 개념


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




핵심 Keywords & Terms

논문에서 사용된 핵심 KEYWORDS는 다음과 같습니다. 내용의 이해를 위해서는 각 keyword, term들이 의미하는 바에 대한 사전 이해가 필요합니다.


NLP를 위한 기법으로 딥러닝을 사용하기 때문에 사실 NLP와 Deep Learning을 명확하게 구분지을 수 없으나 여기에서는 자연어처리와 관련된 문제에 대한 것과 관련이 있으면 NLP로 머신러닝의 일반적인 Learning technique과 가까운 것들을 Deep Learning으로 분류하였습니다.


NLP

  • Word Vector Representation
  • Semantic Word Vector Space
  • Distance model
  • Single Layer model
  • Hadamard model
  • Bilinear model
  • contrastive max-margin objective function
  • link prediction / relationship prediction

Deep Learning

  • nonlinearity function
  • scoring function
  • L2 regularization
  • L-BFGS, AdaGrad Optimization
  • non-convex objective function
  • threshold
  • cross-validate



1. NLP keywords and terms 살펴보기

1-1) Word Vector Representation

우리가 사용하는 언어가 가진 단어의 개수는 굉장히 많기 때문에 one-hot encoding 방식으로는 수 많은 단어 차원(feature)에 대한 표현이 어려습니다(+ 단어 벡터 내적의 합이 0이 되어 단어가 유사성 발견이 어려운 문제 등을 포함)

일반적으로 단어의 의미적인 특성을 포함하는 분산화된 형태로 저차원의 벡터로 표현(word representation)하는 방법을 말합니다.


1-2) Semantic Word Vector Space

단어들은 서로 연관성을 가집니다. 각 단어는 독립적으로 존재하지 않으며 서로 간의 유사성이나 연관성이 있습니다. (호텔과 모텔은 숙박이라는 개념 안에서 공유하는 것이 있는 것처럼 유사성이 있음). 벡터로 표현(representation)된 단어들은 N차원의 벡터공간에서 저마다의 공간을 차지할 것이며 분산된 형태로 저차원의 벡터공간에서 표현될 경우 각 단어들의 유사성에 대한 정보가 포함된 벡터 형태로 단어들의 벡터 공간이 만들어집니다.

☞ NTN에서는 각 relation(관계)가 고유한 semantic word vector space를 가져 해당 relation 안에서 서로 다른 entity(단어)들이 벡터로 표현됩니다.

1-3) Distance model

유사도를 구하기 위해 사용하는 distance입니다. 유클리디안(Euclidean), 자카드(Jaccard) 등의 유사성을 계산하는 거리(distance) 모델이 있습니다. 일반적으로 가까운 거리일 수록 거리 계산의 score 값이 작게 나오나 word vector space에서는 유사성이 높을수록 score 값이 크게 나옵니다.

☞ NTN에서는 entity(word) 간의 유사성을 거리 계산으로 표현하는 Distance based model 입니다. score 값이 높을수록 word vector간 거리가 가깝고 유사성이 크다고 할 수 있습니다.


1-4) Single Layer model

신경망 모형에서 말하는 퍼셉트론입니다. 퍼셉트론은 다음 포스트에서 상세한 내용을 살펴볼 수 있습니다. 일반적으로 g(Θ*W)의 형태를 말합니다.


☞ NTN에서는 거리 모델이 선형적이어서 nonlinearity를 위해 neural network를 사용하였고 이는 또 이후에 다루도록 하겠습니다.



1-5) Hadamard model

hadamard product 방식이라고 있으며 entity 간의 유사도 계산을 위해서 (triplet is correct?) 모델의 표현력(expressiveness)와 복잡도(complexity)를 높인 방식으로 보면 됩니다.


1-6) Bilinear Model

☞ NTN에서는 Neural tensor network를 사용하게 된 이유를 bilinear form에 기인한다고 하였으며, 이에 대해서는 추후 다른 모델과  비교하고 발전 방향에 따라서 상세하게 설명하도록 하겠습니다.


1-7) contrastive max-margin objective function

검색을 해도 이 objective function(목적 함수)에 대한 내용을 찾기 어려울 것입니다. 그 이유는 이 목적 함수에는 독립적인 두 개념이 들어간 내용이기 때문입니다. 목적 함수는 손실 함수라고도 하는데 모델의 성능을 측정하는 하나의 지표입니다. 정확하게는 모델의 loss를 계산하고 이를 학습에 참조하여 이를 최소화하는 것을 목표로 하는 지표입니다.

다시 돌아와서 NTN의 목적 함수는 크게 hinge loss라는 Support Vector Machine에서 사용하는 목적함수와 Skip-gram 알고리즘에서 사용하는 Negative Sampling 학습 방법에 사용하는 목적함수로 구성되어 있습니다.


1-8) link prediction / relationship prediction

이후의 포스트에서도 설명하겠지만 NTN 모델의 목표는 Relation(관계)를 중심으로 entity(단어)들이 함께 연결되는지 같이 발생하는지(co-occurred) 관계가 있는지를 분류 예측해주는 것입니다. 그래서 link prediction의 문제라고도 합니다.






2. Deep Learning keywords and terms 살펴보기

2-1) nonlinearity function

비선형함수를 사용하는 여러 이유가 있습니다.

아주 간단하게는 선형 함수는 분류 문제에서 좋은 성능을 보이지 못하기 때문이라고 볼 수 있습니다. 예를 들어, 이진분류의 경우 0과 1로 결과가 제한되어 있지만 선형함수를 출력으로 사용할 경우에는 이를 벗어나는 결과가 나와 분류 상의 성능에 문제가 생기게 됩니다.

다른 이유는 Socher 교수가 bilinear model를 neural tensor 방식으로 발전시킨 것과 비슷한 이유입니다. linear function은 여러번 사용하더라도 모델의 표현력과 복잡도(complexity)가 올라가지 않습니다. 선형 함수를 activation 함수로 사용하는 경우 다층 신경망(multi layer)을 사용하더라도 선형 함수가 여러번 사용되어도 하나의 선형 함수 형태로 나오기 때문에 다층으로 여러 개의 레이어를 사용해도 차이가 없어집니다. 자세한 내용은 다음의 포스트를 참조바랍니다.

게다가 hyper tangent를 비선형 함수를 사용하는데 back propagation을 사용하는 모델의 특성상 미분이 가능해야 하고, 미분 오차의 값을 전달했을 때 정보 손실이 적어야 하기 때문에 비선형 함수를 사용한다고 볼 수 있습니다.



2-2) scoring function

scoring function은 score를 계산하는 함수라는 의미인데 여기서 score라 함은 입력된 변수의 값과 파라미터의 값의 계산에 의해서 나타나는 singular 값이라고 할 수 있습니다. 해결하는 문제에 따라서 score 역시 정의가 달라집니다.


☞ NTN에서는 score가 의미하는 것은 거리상의 가까움을 뜻합니다. 앞에서 말한 것처럼 score가 클수록 거리가 가깝고 유사성이 높은 것으로 봅니다.



2-3) L2 Regularization

L2 Regularization은 과적합(Overffiting) 문제를 피하기 위해 사용되는 정규화 기법 중 하나로 parameter(또는 feature)들이 미치는 영향력을 줄여서 미세하지만 중요한 역할을 하는 변수/요인들의 영향도 고려할 수 있도록 하는 기법입니다. L2는 그러한 정규화 기법중 하나로 손실함수 또는 목적함수를 계산할 때 미리 설정한 λ(람다)에 오차를 더해 전체 손실(loss) 값을 높이는 것으으로 일종의 noise 또는 bias를 추가하는 방법이라고 볼 수 있습니다. 람다 값이 너무 커지면 underfitting 될 수 있어 초기 람다 값 설정이 중요합니다.



2-4) L-BFGS, AdadGrad

머신러닝에서 학습한다는 의미는 설정한 모델의 파라미터들을 조정하면서 최적의 모델을 만들어 나가는 것이라고 할 수 있습니다. 최적의 모델을 만들기 위한 최적화 Optimization는 머신러닝에서 중요한 문제입니다. 주로 사용하는 방법은 Gradient Descent 방법으로 학습 시점마다의 손실에 대한 기울기를 계산하여 손실이 적어지는 방향으로 파라미터를 조정하는 것입니다.


처음에는 Gradient Descent 방법을 사용했지만 전체 한 번의 학습을 위해서 전체 데이터 셋에 대하여 손실을 계산하기 때문에 계산이 많아 학습 데이터가 큰 경우에는 사용하기 어렵다는 문제가 있습니다. 따라서 더 빠른 최적화 기법들이 등장하였고 L-BFGS와 AdadGrad가 그러한 최적화 기법들입니다.최근에는 Stochastic Gradient Descent 방법, Adam 등이 많이 사용되고 있습니다.




2-5) Non-convex function

convex function(위)과 non-convex function(아래)은 그림으로 하는 설명이 가장 이해가 잘됩니다.

아래의 그림을 보면 convex function은 가장 아래 지점이 한 군데로 수렴(convergent)합니다. 이를 global optimum은 있고 local optimum은 없다고 합니다.


non-convex function은 울룩불룩한 형태로 최저 지점이 여러 개가 있고 local optimum이 여러 개가 있습니다. Gradient Descent 경사 하강법을 사용하게 되면 local optimum에 빠질 수 있는 이슈가 있습니다. 손실함수의 값이 더 내려가야 하는데 어떤 지점에서 기울기가 0이 되어 더 이상 내려가지 않는 문제라고 간단하게 말할 수 있습니다.


Related image



2-6) threshold

임계치를 주로 말하는데 선형 분류에서 많이 사용되며 어떠한 값보다 크면 a, 작으면 b 이런식으로 분류 할 때 threshold라는 개념을 많이 사용합니다.

☞ NTN에서는 최종적으로 relation classification을 위한 기준 임계값을 설정할 때 threshold를 계산합니다.


2-7) cross-validate

교차 검증이라고 불리는 것으로 모델 간의 비교 검증을 통해서 적절한 모델 학습을 위한 적절한 hyper parameter를 찾아내기 위해 하는 검증 방법입니다. Model Selection을 위해 검증(validation) 단계에서 많이 사용됩니다.


댓글