A Structured Self-Attentive Sentence Embedding
3 minute read
- Authors : Zhouhan Lin, Minwei Feng, Cicero Nogueira dos Santos, Mo Yu, Bing Xiang, Bowen Zhou, Yoshua Bengio
- Reference : A Structured Self-attentive Sentence Embedding (2017 ICLR)
Motivation
Sentence embedding 을 만들기 위한 방법으로는 recurrent model 을 이용하는 것이 보편적이다 (ex. LSTM 의 마지막 hidden state 를 문장 임베딩으로 사용). 이러한 방법은 모델이 모든 timestep 동안 모든 정보를 들고 있어야한다는 점에서 비효율적이다.
Sentence Embedding 방법의 종류
- Unsupervised Learning 으로 학습시킨 Universal sentence embedding
- unlabeled corpora 로 학습이 가능하다.
- 예시
- SkipThought vectors (Kiros et al., 2015)
- ParagraphVector (Le & Mikolov, 2014)
- recursive auto-encoders (Socher et al., 2011; 2013)
- Sequential Denoising Autoencoders (SDAE)
- FastSent (Hill et al., 2016)
- Supervised learning 으로 학습시킨 task-specific sentence embedding
- 일반적으로 universal embedding 보다 성능이 좋다.
- RNN / CNN 구조를 이용하는 경우가 많다.
- RNN 의 마지막 hidden state 이용
- RNN 의 hidden state 들을 max / average pooling
- Convolved n-grams
- 언어학적인 구조에 대한 정보를 활용하기도 한다.
Differences
본 논문에서는 Self-Attention mechanism 을 이용해 문장을 행렬 형태로 embedding 하는 방법을 제안한다.
이러한 방법의 장점은 다음과 같다.
- 기존의 attention mechanism 은 input 과 attend 하려는 target 이 둘다 있을때에 적합한 구조이다. 하지만 self-attention 구조는 input sentence 만 주어졌을 때에도 attention mechanism 을 적용할 수 있다.
- LSTM 같은 recurrent model 의 long-term dependency 를 다 처리해야한다는 부담을 덜 수 있다. Attention mechanism 이 좀더 global 한 higher level semantics 를 처리하기 때문에 LSTM 의 hidden state 는 short term context information 만 담당해도 된다.
Method
- $r$ 개의 attention weight vector 로 $r$ 개의 $u$ 차원 context vector 를 만들고 그것들을 column 으로 하는 행렬을 sentence embedding 으로 사용한다.
- $r$ 개의 attention weight 사이의 redundancy 를 줄이기 위한 penalty term 을 고안하고 loss function 에 반영했다. 이러한 의도에 맞게 embedding 이 잘 학습되면 문장의 여러가지 요소를 각 attention weight 에 disentangle 시키는 효과가 있다. 이를 확인하기 위해 4.4.1 에서 학습된 weight 을 다음과 같이 시각화한다.
- 문장을 matrix 형태로 나타내기 때문에 따라오는 계산량을 상쇄시키기 위해 weight pruning method 를 적용했다.
Results
본 논문에서는 Author Profiling, Sentiment Analysis, Textual Entailment 세가지 task 에 대해 실험을 진행하였다.
1. Author Profiling
- Twitter tweet 텍스트를 input 으로 받아 작성자의 나이대를 다섯개 중 하나의 카테고리로 예측 (18-24/25-34/35-49/50-64/65+) 하는 분류 문제
- Dataset : Author Profiling dataset (68485 training, 4000 dev, 4000 test)
- Baseline models
- biLSTM : biLSTM 구조의 hidden state 들을 max pooling
- CNN : 1D Convolution 사용
- Metric : Classification accuracy
2. Sentiment Analysis
- Yelp review 텍스트를 input 으로 받아 해당 리뷰의 별점 $[1,5]$ 중 하나로 예측하는 분류 문제
- Dataset : Yelp dataset (2.7M 개 데이터 중 500K training, 2000 dev, 2000 test)
- Baseline models
- biLSTM : biLSTM 구조의 hidden state 들을 max pooling
- CNN : 1D Convolution 사용
- Metric : Classification accuracy
3. Textual Entailment
- 주어진 쌍의 문장의 관계를 entailment, contradiction, neutral 중의 하나로 분류하는 문제
- Dataset : SNLI corpus (570k)
Notes
- 관련 문헌을 소개할때 self-attention 을 사용한 sentence embedding 만 언급하고 일반적인 attention mechanism (ex. Bahdanau (2015)) 에 대한 언급은 왜 전혀 안했는지에 대한 의문이 들었다.
- 몇개의 attention weight 이 효과적인지에 대한 실험을 진행했고 10개 이상이면 크게 차이가 없음은 밝혔지만 task 가 달라지면 이러한 parameter tuning 을 매번 다시 진행해야한다는 점이 아쉽다.
- Penalty term 에서 $I$ 를 빼주는 것이 (4p. equation (8)) 어떻게 9p 에 설명되었듯이 attention weight 이 few word 에 focus 되도록 유도할 수 있는지 이해가 안간다.
- $r$ 개의 attention weight 이 이질적으로 학습이 잘된것인지, penalization 의 효과가 8p 의 visualization 에는 잘 나타나지 않는다. 이러한 주장의 근거로 다른 방법을 추가했으면 더 효과적이었을것 같았고, redundancy 를 해결하기 위한 penalty term 을 다양하게 시도해볼 수 있을 것 같다.
- 진행된 실험이 dataset 은 달랐지만 결국 셋 다 주어진 문장을 분류하는 문제였다는 점이 아쉽다. 좀 더 이질적인 여러개의 task 에 모델의 성능을 검증했다면 더 설득력이 있었을 것이다.
- 본 모델은 학습이 downstream task 에 의존하고 있기 때문에 unsupervised 방식으로 학습이 불가능하다. 저자들은 sequential decoder 를 붙여 unsupervised learning 을 할수도 있지만 다른 구조가 더 좋을 것 같다고 한다. 트랜스포머에서도 encoder 의 sequential computation 은 해결되었지만 decoder 는 여전히 순차적으로 sequence 를 generate 해야한다. Sequential generation 을 해결할 수 있는 방법이 필요하다.