2021년 3월 2일 화요일

논문 리뷰 - Universal Sentence Encoder


 

논문 정보 : 


요약 : 

  • Transformer layer를 이용한 초기 pre-trained 모델
  • Sentence embedding vector를 생성하는 것이 목표
  • Sentence 단위로 transfer learning한 모델이 word 단위로 한 것보다 더 좋다.

모델 - Encoders :

  • 학습 방법 
    • Multi task로 학습했다.
    • Sentence vector는 word 단위 vector를 평균 내어 구했다.
    1. Skip-thought like task
      • 이게 뭔지 몰라서 참조 논문(링크)을 찾아봤다.
      • 간단히 설명하자면, 문장이 3개 있을 때, encoder로 가운데 문장의 vector를 얻고, 두 개의 다른 decoder가 encoder의 vector를 이용해 앞, 뒤 문장의 language modeling을 수행하는 방식이다.
      • Skip-thought 모델 학습 구조


      • Loss는 decoder의 output을 이용하며, 학습이 끝나면 encoder만 사용한다.
      • 원 논문에서는 RNN을 썼으며, 이 논문에서는 transformer를 썼다.
      • 데이터는 Wikipedia, web news를 쓴 것 같다.
    2. Conversational response prediction task
      • 역시 참조 논문(링크)이 필요했다.
      • (대충 봤는데...) siamese network처럼 질문-응답 쌍을 각각 동일한 encoder를 통해 vector representation을 얻은 다음, 맞은 응답이 나올 score를 높이는 방향으로 학습했다.
      • 후속 연구(링크)에 있는 모델 구조


    3. Supervised classification task
      • SNLI로 supervised 학습했다.
      • 후속 연구(링크)에 있는 모델 구조


  • 모델 구조
    1. Transformer layer
    2. Deep Averaging network(DAN)
      • Layer 형태는 feedforward network이다.
      • Input으로 word, bi-gram embedding을 평균내어 사용한다.
    • Input 형태
      • 일단 문장을 PTB style로 tokenize 했다는 것을 보면 word 단위인 것 같다.
      • Vocab에 대한 내용은 없다...
      • System demonstration 논문(링크)에는, oov의 경우, 400,000개의 임베딩으로 hashing한다고 되어 있다.
      • DAN에서는 word embedding과 bi-gram embedding을 같이 썼다고 한다.

Evaluation :

  • 이렇게 사전 학습한 모델로, 다른 여러 task들에 대한 성능을 측정하였다.
  • 학습한 encoder의 output은 각 task에 맞는 layer에 입력으로 사용됐다.
  • Pairwise semantic similarity task의 경우, 두 문장의 벡터 u, v가 있을 때 similarity를 다음과 같이 계산했다.

  • Arccos는 cosine similarity를 삼각부등식을 만족하는 angular distance로 변환하는데, cosine similarity보다 더 좋았다고 한다.
  • 여러 방법으로 실험해 봤으며, 잘 됐다...

  • USE_D는 DAN으로 pre-training한 모델이며, USE_T는 Transformer로 pre-training한 모델이다.
  • Sentence 단위로 transfer learning한 모델이 가장 좋았고 sentence + word로 transfer한 모델이 가장 좋았다.
  • Transformer 모델의 성능이 더 좋았다.


이하 다른 내용들은 생략...

참고 사이트

댓글 없음:

댓글 쓰기