reniew's blog
cs and deep learning

Recent trend in NLP

|

Recent Trends in Deep Learning Based Natural Laguage Process (2017)
- 최신의 딥러닝 기반 자연어처리기법 최근 연구 동향



0. 서론

  • 기존의 NLP풀기위한 머신러닝 기법들은 sparse한 feature를 shallow한 model(ex>SVM)이였다.
  • 최근에는 워드 임베딩과 딥러닝 모델 기법의 성공에 힘입어 dense한 vector representation에 기반한 NN가 trend이다.

    • Recurrent neural network based language model

      • http://www.fit.vutbr.cz/research/groups/speech/publi/2010/mikolov_interspeech2010_IS100722.pdf
      • figure0
      • Sequential data모델 위해 Recurrent Neural Network 사용(Simple RNN or Elman network 아키텍쳐 사용)
    • Distributed Representations of Words and Phrases and their Compositionality
      • https://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf
      • Word2Vec
      • 2가지 모델 CBOW(Continuous bag of words)와 Skip-gram 제시
      • CBOW

        • figure1
        • CBOW 모델도 마찬가지의 방법을 사용한다. 주어진 단어에 대해 앞 뒤로 C/2개 씩 총 C개의 단어를 Input으로 사용하여, 주어진 단어를 맞추기 위한 네트워크를 만든다.
        • CBOW 모델은 크게 Input Layer, Projection Layer, Output Layer로 이루어져 있다. 그림에는 중간 레이어가 Hidden Layer라고 표시되어 있기는 하지만, Input에서 중간 레이어로 가는 과정이 weight를 곱해주는 것이라기 보다는 단순히 Projection하는 과정에 가까우므로 Projection Layer라는 이름이 더 적절할 것 같다.
        • Input에서는 NNLM 모델과 똑같이 단어를 one-hot encoding으로 넣어주고, 여러 개의 단어를 각각 projection 시킨 후 그 벡터들의 평균을 구해서 Projection Layer에 보낸다.
        • 뒤는 여기에 Weight Matrix를 곱해서 Output Layer로 보내고 softmax 계산을 한 후, 이 결과를 진짜 단어의 one-hot encoding과 비교하여 에러를 계산한다.
      • Skip-Gram

        • figure2
        • CBOW와는 반대 방향의 모델이라고 생각할 수 있을 것 같다.
    • Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank

      • https://nlp.stanford.edu/~socherr/EMNLP2013_RNTN.pdf
  • Collobert el al(2011, http://www.jmlr.org/papers/volume12/collobert11a/collobert11a.pdf)은 간단한 딥러닝 프레임워크들에 대해 제시하였다.

    • Named Entity Recognition, NER(개체명 인식)
    • Semantic Role Labelling, SRL(의미역결정)
    • POS tagging(품사태깅)
  • 이후 많은 복잡한 딥러닝 기반의 프레임워크들이 제시되었다.

    • CNN
    • RNN
    • Recursive NN
  • 위의 주요적인 프레임워크들 뿐만 아니라 최근의 여러 모델 또한 제시 되었다.

    • Attention 메커니즘
    • RL
    • Deep Generative Model
  • 이 논문 이전 NLP연구의 딥런닝 기법들의 소개는 Goldberg(2016)을 제외하고 전무했다.

    • Goldberg 또한 다양한 딥러닝 아키텍쳐에 대해 논의한것은 아니고 튜토리얼 방식으로 NLP를 소개하고 Word2Vec과 CNN같은 distributional semantics에 주로 초점을 맞춘다.
    • http://u.cs.biu.ac.il/~yogo/nnlp.pdf
  • 이후 이 논문의 구성은 섹션2에서 Distributed representation(분산표상)에 대해서 소개하고 섹션 3,4,5에서는 CNN,RNN,Recursive NN을 소개한 후 섹션 6에서 NLP에서 사용된 강화학습 응용사례와 비지도학습기법의 발전에 대해서 알아볼 것이며, 섹션 7에서는 딥러닝 모델과 메모리 모듈 결합의 최근 트렌드를 소개한다.

1. Distributed representation(분산표상)

  • Distributed representation연구의 동기

    • 통계기반의 자연어 처리 기법은 복잡한 자연어를 모델링하는데 이 기법은 초기에 ‘차원의 저주(curse of dimentionality)’에 어려움을 겪는다
    • Language model은 결합함수를 학습해야 하기 때문이다.
    • 따라서 저차원 벡터공간에 존재하는 단어의 분산표상을 연구의 동기가 되었다.
    A. Word Embedding(단어 임베딩)
  • Distributed vectors와 Word Embedding은 근본적으로 distributional hypothesis를 전제로 한다.
  • Distributional hypothesis라는 이 가정은 비슷한 의미를 지닌 단어는 비슷한 문맥에 등장하는 경향이 있을 것이라는 내용이 핵심이다.
  • 따라서 이 벡터들은 이웃한 단어의 특징을 잡아내고자 한다. 따라서 벡터들은 단어간 유사성을 내포한다.
  • 유사도는 Cosine 유사도같은 지표를 사용한다.
  • figure3(Figure 1. D차원 벡터로 표현된 단어 벡터. V를 전체 단어 수라고 할 때, D는 V보다 훨씬 작다.)
  • Word Embedding은 Deep learning model의 첫 번째 데이터 처리 계층에서 주로 사용된다.
  • Word Embedding은 단어들의 의미와 구문론적인 의미들을 학습하기위해 보조적인 목적으로 최적화하는 형태로 사전 학습된다. (Mikolov et al., 2013b, a).
  • 또한 Embedding Vector의 Dimension이 작은 덕분에 계산이 빠르고 효율적이다.
  • 이러한 방법은 전통적인 방법인 Word count 기반의 모델과 딥러닝 기반의 모델과의 가장 큰 차이점이다.
  • Word Embedding은 NLP문제의 광범위한 범위에서 state-of-art한 결과를 이끌어 냈다(Weston et al.2011, ; Socher et al., 2011a; Turney and Pantel, 2010).
  • Glorot et al.(2011)는 도메인 특성에 맞는 감성 분류를 위한 stacked denoising autoencoder 모델에 word embedding을 사용했다.
  • Hermann and Blunsom(2013)는 embedding을 활용해 문장 합성을 학습하기 위한 combinatory categorical autoencoders를 제안했다.
  • Embedding은 주로 Context를 통해 학습된다.
  • 초기의 embedding에 대한 연구

  • 위의 많은 word embedding에 대한 연구가 있었지만, 가장 많은 인기를 끌고 있는 임베딩 기법은 Milokov et al.(2013a)의 CBOW와 skip-gram모델이다.
  • Pennington et al.(2014)은 word2vec과 달리 빈도수 기반의 단어 임베딩 기법이다(참고: 블로그)

    • 위의 기법은 우선 word co-occurence count matrix를 생성한 뒤 빈도 수를 정규화 하고 log smooting을 한다.
    • 저차원 벡터를 얻기 위해 Reconstruction loss를 최소화하는 방식으로 이 행렬을 factorize한다.
B. Word2Vec
  • Mikolov et al이 제시한 모델, 첫 논문(Efficient Estimation of Word Representations in Vector Space)과 여러 튜닝 기법이 포함 된 두번 째 논문으로 구성(Distributed Representations of Words and Phrased and their Compositionality)
  • CBOW와 Skip-gram으로 구성
  • CBOW

    • k개만큼 주변 단어가 주어 졌을 때 중심 단어의 조건부 확률을 계산한다.
    • figure4 (Figure 2. Word2Vec의 CBOW 모델) -> 1개의 hidden layer 가진 simple fully connected neural network이다.
  • Skip-Gram

    • CBOW와 정반대로 중심단어가 주어졌을 때 주변 단어를 예측한다.
  • 개별 단어 임베딩의 한계는 두개 이상의 단어의 조합(ex. hot potato -> hot + potato의 의미와 전혀 다른 의미)이 ㄱ개별 단어 벡터의 조합으로 표현될 수 없다.

    • 위의 문제의 해결책은 동시등장단어(word coocurrence)에 기반한 구문 식별, 이들 별도로 학습
    • 최근의 기법은 레이블이 없는 데이터로 부터 n-gram 임베딩을 직접적으로 학습시키는 방법(Johnson and Zhang, 2015).
  • 또다른 한계는 주변 단어의 작은 window 내에만 기반한 임베딩을 학습하는데서 비롯된다. -> Good과 Bad가 같은 임베딩을 공유할 수 있다. -> 감정분석에서 문제될 수 있다.

    • 이러한 임베딩은 위와 같이 상반된 극성 갖는 단어가 의미상 유사한 단어로 Clustrering된다.
    • 이러한 문제 해결을 위해 Tang et al. (2014)는 Sentiment specific word embedding(SSWE)을 제안 -> 임베딩을 학습하는 동안 손실함수에 감정에 대한 양,음 값을 포함시켰다.
  • 단어 임베딩의 주의사항은 임베딩이 사용된 application(space)에 의존한다.
  • 따라서 Labutov and Lipson (2013)은 단어 벡터를 재학습해서 현재 task space에 맞추기 위해 task specific embedding을 제안했다.
  • Mikolov et al. (2013b)는 negatice sampling 기법 제안
C. Character Embeddings(문자 임베딩)
  • 단어 임베딩은 문법적, 의미적 정보를 잡아낼 수 있다. 그러나 품사태깅(POS-tagging)이나 개체명인식(NER) 같은 task 에서는 단어 내부의 형태,정보(문자) 또한 중요하다.
  • 문자 수준의 NLP시스템 구축도 관심을 끌고 있다. (Kim et al. ,2016 ; Dos Santos and Gatti, 2014; ‘Santos and Guimaraes, 2015](http://www.anthology.aclweb.org/W/W15/W15-3904.pdf); Santos and Zadrozny, 2014).

    • Santos and Guimaraes (2015)는 단어 임베딩과 함께 문자 수준 임베딩을 개체명 인식 문제에 적용해 스페인어에서 state-of-art한 성과 이뤘다.
    • Kim et al. (2016)은 문자 임베딩만 사용한 enural laguage model을 구축해 긍적적인 결과를 보였다.
    • Ma et al. (2016)은 개체명인식에서 pre-trained된 레이블 임베딩을 학습위해 문자 trigram을 포함 몇몇 임베딩 기법 활용했다.
  • 문자 임베딩은 미등재단어(the unknown word) 이슈 대처 가능하다.
  • 중국어와 같은 단어의 의미가 문자들의 합성에 대응되는 언어에서는 문자수준의 시스템 구축은 단어분할(word segmentation)을 피하기 위해 자연스러운 선택이다.
  • Peng et al. (2017)은 radical 기반의 처리가 감성 분류 성능 개선시킴을 입증했다.

2. CNN

  • 문장모델링에서 CNN을 활용하는 것은 Colobert and Weston(2008)에서 시작되었다.

    • 이 연구는 다범주 예측결과를 출력 위해 multi-task learning을 사용했다.
    • 품사태깅, 청킹, 개체명인식, 의미역결정, 의미적으로 유사한 단어 찾기, 랭귀지 모델 같은 NLP 과제 수행 위해 사용
    • Look up table(참조테이블)은 각 단어를 사용자가 정의한 차원 벡터로 변형해 사용
    • 따라서 Input {s1,s2,..,sn}은 참조테이블 활용해 벡터들의 나열로 변형 {ws1,ws2,…,wsn}
    • figure5(Figure 3. Colbert and Weston(2008)이 제시한 CNN 프레임 워크. 그들은 단어 범주 예측에 이 모델 사용
  • Collobert et al. (2011)은 NLP문제들을 해결 위해 일반적인 CNN기반 프레임워크를 제안했다.
  • 위의 논문들은 NLP 연구자들 사이에 CNN이 큰 인기를 끌도록 촉발 시켰다.
  • CNN은 문장의 잠재적인 semantic represention을 만들기 위해 입력 문장으로부터 핵심적인 n-gram feature를 추출하는 능력 가진다.

A. CNN 기본구조
1) 문장 모델링
  • 문장의 $i$번째 단어에 해당하는 임베딩 벡터를 $w_i\in R^d$, 임베딩 벡터의 차원수를 $d$라 두면, $n$개 단어로 이루어진 문장 주어졌을 떄, 문장은 $n$ x $d$(W$\in$$R^{n*d}$) 크기의 Embedding matrix로 표현할 수 있다.

  • figure6텍스트 처리를 위한 CNN Zhang and Wallace(2015)

  • $w_i, w_{i+1}, …, w_j$ 의 결합(concatenation)(=$d$x$(j-i)$ dimension의 matrix가 된다)을 $w_{i:i+j}$ 라 두자.
  • 콘볼루션은 위의 값(Input embedding layer)에 의해 수행 된다.
  • Convolution Filter $k$는 dimension이 $hd$인 filter이다. 이 Filter는 h개의 단어에 window로 작용해 새로운 feature를 만든다.
  • 예를 들어 feature $c_i$는 $w_{i:i+j}$에 window를 씌움으로써 만들어 진다.

  • 여기서 b는 bias이고 f 는 activation ftn이다.
  • Filter k 는 모든 window에 같은 weight로 적용되서 feature map 을 만든다.
  • CNN에서 각각 다른 width의 많은filter(called kernel) 전체 word embedding matrix에 slide 된다.
  • 각각의 kernel은 n-gram의 각각의 특징을 추출한다.
  • convolution layer는 주로 max-pooling을 사용함
    • 최대값을 취함으로써 subsampling을 한다.
    • max-pooling을 사용하는데는 두가지 이유가 있다,
      • 첫번째, max-pooling은 classification에 필요한 fixed-length output을 제공한다. 따라서 filter의 size에 상관없이 고정된 크기의 output을 제공한다.
      • 두번째, max-pooling은 전체 문장에서 중요한 n-gram feature들을 보존한채 output의 dimension을 감소시킨다. 이러한 방법은 개별 filter에서 특정한 feature(ex.부정)을 잘 추출할 수 있다.
  • Convolution layer와 max-pooling을 겹겹이 쌓는 sequential convolution은 풍부한 정보를 포함한 고도로 추상화된 표현을 잡아내 문장분석을 개선 할 수 있다.
2) window approach
  • 위의 CNN 아키텍쳐는 자연어 문장을 벡터로 표현한다.
  • 그러나 개체명 인식, 품사태킹, SRL과 같은 task에서는 단어 단위의 예측이 필요하다.
  • 따라서 이러한 task들에 적용하기 위해 window 접근법이 사용된다.
  • window approach는 단어의 범주(tag)가 이웃한 단어에 의존할 것이라 가정한다.
  • 따라서 각 단어에 대해 고정된 크기의 window가 적용되고 그 윈도의 내의 하위 문장들(sub-sentence)이 고려된다.
  • Standalone CNN은 이러한 하위 문장들(sub-sentence)에 적용되고 윈도우 중앙의 단어에 의해 예측된다.
  • 이러한 접근에 따라 Poria et al. (2016a)는 문장 각 단어에 aspect(주제) 혹은 non-aspect태그를 붙이기 위해 multi-level Deep CNN을 제안했다.
    • 언어적 패턴 집합과 함께 사용한 앙상블 classifier는 aspect detection에 있어 좋은 성능을 냈다.
  • 단어 수준 분류의 주요 목표는 전체 문장에 레이블 시퀀스(sequence)를 할당하는 것이다.
  • Conditional Random Field(CRF) 같은 구조화된 예측 기법(structed prediction)은 때때로 인접한 클래스 레이블 간의 의존성을 더 잘 포착한다.
  • 이 기법은 결국 전체 문장에 최대 스코어를 내는 결합된 레이블 시퀀스(cohesive label sequence)를 생성한다(Kirillov et al., 2015).
  • 더 넓은 문맥적 범위를 위해 전통적인 윈도우 접근법은 종종 time-dealy neural network(TDNN)와 결합된다.(Waibel et al., 1989).
  • 위의 방법에서 Convolution은 모든 window에서 적용된다.
  • 하지만 filter들의 폭이 고정되었기 때문데 convolution은 제약을 가진다. 이러한 문제를 해결하기 위해 전통적인 방법은 레이블이 달린 단어 주변의 윈도우에 있는 단어들만 고려하지만, TDNN은 윈도의 내의 모든단어를 고려한다.
  • 때떄로 TDNN는 CNN처럼 stack처럼 쌓여 하위 계층에서는 local feature 상위계층에서는 global feature를 뽑아낸다.
B. CNN Application
  • CNN을 사용한 다양한 응용들을 소개한다.
  • Kim(2014.)은 감성, 주관(Subjectivity), 질문유형 분류 포함해서 다양한 sentence 분류 문제에 CNN Architecture를 사용했다.
    • Kim의 연구는 간단하지만 효율적이라 많이 사용되었다.블로그참고
    • 특정 task에 대한 trainning후, random initialized convolution kernel은 특정 목적에 융요한 n-gram feature 탐지기가 되었다.
    • 그러나, Long-term의 dependency를 모델링 할 수 없다는 등 여러 단점이 있다.
    • figure7 (Figure4. Top 7-gram by four learned 7-gram kernel ; 각각의 필터는 특정 종류의 7-gram에 민감하다.)
  • 이러한 이슈(long-term dependency)를 해결하기 위해, Kalchbrenner et al.(2014)은 DCNN(Dynamic CNN)을 제안했다.
    • DCNN은 dynamic k-max pooling을 사용한다.
      • dynamic k-max pooling이란 시퀀스$p$가 주어졌을 때 가장 active한 k개의 feature를 뽑는 것이다.
      • 이러한 선택들은 순서를 보존하지만 위치에는 민감하지 않다.
      • figure8 (Figure5.DCNN의 sub-graph.)
      • DCNN = TDNN(base) + dynamic k-max pooling
      • 이러한 전략은 filter의 좁은 너비가 넓은 범위의 sentence를 cover할 수 있게 되었다.
      • Figure5 에서 상위의 Feature는 가변적인 너비를 가진다.
      • 즉 이 연구는 문맥적 의미를 모델링하는 데 있어 개별 필터의 범위(range)에 대해 언급했고, 필터의 도달 범위를 확장하는 방법론을 제안했다.
  • 감정분석에 필요한 task는 효과적인 aspect추출과 감정 극성(polarity)이다.(Mukerjee and Liu, 2012)
    • Ruder et al. (2016)은 좋은 결과를 위해 word embedding 과 aspect vector를 결합한 값을 input으로 하는 CNN적용했다.
  • CNN은 Text의 길이에 따라 성능이 달라진다.
    • 장문에서는 CNN 성과가 좋았으나, 단문에서는 성과가 좋지 않았다.
  • Wang et al.(2015b)은 짧은 Text 표현에 CNN을 사용하기 위해 외부의 지식이 사용된 multi-scale semantic units를 도입한 의미적 clustering(semantic clustering)을 제안했다.
    • CNN은 이러한 Unit들을 결합해 represention을 만들어 낸다.
  • CNN에서 고도의 문맥정보를 요구하는 것은 어렵다.
    • CNN사용한 단문 분석을 종종 부가정인 정보와 외부 지식을 필요로 한다.
    • Poria et al.(2016)은 CNN을 활용하여 twitter text에서 빈정대는 부분을 찾아내는 task(sarcasm detection)를 만들었다.
    • 여기에서 감정,감성,개별 데이터셋이 사전학습된 보조적인 자료로서 사용되어서 state-of-the-art한 성능을 이끌어 냈다.

Comments