January 31, 2017

(딥 러닝) 자연어 처리의 4가지 주요 공식: Embed, Encode, Attend, Predict

자연어 처리 관련 딥 러닝 아키텍처를 보면 대게 Embed, Encode, Attend, Predict 4가지로 구성된다. 때문에 이 4가지만 제대로 알아도 이해가 가능하다.

 그러면, 제일 먼저 Embed. 단어를 n차원 실수 공간으로 옮기는 작업을 말한다. Image 따위를 vector로 변환하는건 다른 위상 공간으로 embedding하는 것이 아니므로 그냥 encoding이라는 표현을 쓴다. 여튼 수학표기는 다음과 같지:

\(W: \mathrm{words} \to \mathbb{R}^n\)


 다음은 Encoding 작업인데, "embedded vectors"를 sentence matrix로 계산하는 과정이다. 여기서 s는 (zero-padded) sentence length이고, d는 embedding의 dimensionality를 뜻한다:

sentence matrix \(A \in \mathbb{R}^{s×d}\)


 다음으로 Attend. "attended vector" 라는 표현을 자주 볼 수 있는데, 이는 행렬이 다시 single vector로 차원 축소되었다는 얘기다. max-pooling, sum-pooling 뭐 그런 방법을 사용하는데, MathJax에 익숙치 않아서 대강 적어보면 요정도 되시겠다:

attention vector \(σ\) = SumPool\((A_{i,1})\), ..., SumPool\((A_{i,K})\)


 마지막으로 Predict. 위 단계에서 구한 "attended vector"가 출력층에 전달되는 과정이다. SoftMax 뭐 그런 확률 모델 등이 있는데 너무 많으니 생략. NLP 모델은 대게 feed-forward 구조라서 보통 이 4가지의 단계를 따른다. Training은 back propagation이 있겠는데 최적화 이론은 조금 긴 얘기라 역시 생략. 

 그림으로 표현해서 구독자들께 전달하고 싶긴하나 귀찮고 어려운 작업이라 .. 검색한 이미지를 가져다 붙이면 대략 이런 느낌이다:


 최근 논문 중 paraphrase detection, factoid Q&A, 기타 등등 대부분은 이 4가지로 끝나는걸 볼 수 있다.

No comments:

Post a Comment