일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- spark udf
- UDF
- API Gateway
- top_k
- youtube data
- session 유지
- flask
- gather_nd
- Retry
- chatGPT
- tensorflow text
- hadoop
- grad-cam
- BigQuery
- TensorFlow
- Counterfactual Explanations
- 공분산
- airflow subdag
- XAI
- API
- 상관관계
- GenericGBQException
- requests
- Airflow
- correlation
- login crawling
- GCP
- subdag
- integrated gradient
- 유튜브 API
- Today
- Total
데이터과학 삼학년
Universal Sentence Encoder (2018) 본문
Universal Sentence Encoder (2018)
요약
|
1. Introduction
-
NLP 관련 Task에서 제한적인 양의 training data 가 쓰이고 있음
-
실제 연구나 실무에서 NLP를 쓸때 역시 large training dataset을 쓰기 어려움
-
이러한 이유 때문에 낮은 성능을 가지게 되고 이를 해결하기 위해 transfer learning을 쓰곤 함 (특히 word embedding 과 같은 부분에서; word2vec, GloVe)
-
최근 연구(2017) 에서는 word 단위가 아닌 sentence 단위의 embedding이 성능이 더 높다는 것이 입증 되었음
-
본 paper에서는 sentence embedding을 위한 2가지 모델을 제시하며, 이 모델들은 좋은 성능을 입증했음
2. Model Toolkit
-
2개의 모델 transformer, DAN은 TF hub에 올라가 있어 아래 코드를 이용하여 사용하면 됨
import tensorflow_hub as hub
embed = hub.Module("https://tfhub.dev/google/universal-sentence-encoder/1")
embedding = embed(["The quick brown fox jumps over the lazy dog."])
-
제공하는 모델은 english를 embedding vector로 변환
-
특히, sentence를 embedding으로 변환하기 때문에 figure 1에서 볼수 있는대로 성능이 매우 좋음을 알 수 있음
3. Encoders
-
encoder로 2개의 모델을 제공하고 있으며, 각 모델은 서로 다른 목표를 가지고 있음
-
transformer : high accuracy
-
DAN : efficient inference with slightly reduced accuracy
3.1 Transformer
-
transformer는 sentence encoding model로 sentence embedding을 함
-
여기서, embedding을 위해 sub-graph를 사용하게 되는데 sub-graph는 문맥적 이해를 계산하기 위함 (문맥의 순서와 문맥에 맞는 의미를 고려하기 위함)
-
context aware word representation은 고정된 길이의 sentence encoding vector를 갖게 되는데 각 word의 representation의 element-wise sum을 이용하여 계산하게 됨
-
encoder는 tokenizer로 PTB를 쓰며, output은 512 차원의 vector로 표현됨
-
encoding model은 multi-task learning을 사용하여 수행됨
-
task는 Skip-Thought를 이용하는데 이는 기존의 LSTM을 사용하던 방식에서 대체된 방법임
-
실험결과에서 보겠지만, transformer는 가장 좋은 성능을 나타냄
-
그러나, compute time 비용이나 memory 소모를 많이한다는 단점을 가지고 있음
3.2 Deep Averaging Network (DAN)
-
두번째 encoding 모델인 DAN은 deep averaging network를 사용함
-
Transformer encoder과 비슷하게 PTB tokenizer를 쓰고 512 차원의 output을 갖게 됨
-
DAN의 주된 이점은 Input 문장 길이에 비례하여 compute time이 선형적으로 증가한다는 것
3.3 Encoder Training Data
-
SNLI corpus, web sources(wikipedia, web news, etc)
4. Transfer Tasks
-
dataset에 대한 overview
-
Word embedding Association Test (WEAT) Data는 model bias 특징을 확인하는데 사용
-
각 데이터에 대한 간략한 설명은 table 1에서 확인
5. Transfer Learning Models
-
문장 분류를 위해서 transformer와 DAN encoder를 통해 나온 output은 DNN에 태워짐
-
문장 유사도 비교를 위해 식1에서 보여지는 것처럼 angular distance를 사용함
-
angular distance는 cosine similarity보다 더 좋은 비교성능을 가지고 있음
5.1 Baselines
-
transfer task 비교를 위해 baselines으로 word 단위의 transfer와 transfer learning을 사용하지 않은 것을 포함
-
word 단위 transfer에는 word2vec (skip-gram)을 이용함
-
pretrained 된 word embedding은 CNN과 DAN에 input으로 들어가게 됨
-
baseline은 word 단위와 sentence 단위의 embedding을 비교하게 됨
5.2 Combined transfer Models
-
문장과 단어 단위의 transfer model이 있는지 조사함
-
완벽을 위해 문장 단위의 transfer model로부터 representation을 concatenating 하는 것을 찾아봤음
-
실험을 위해 사전조사했다고 생각하면 될 듯
6. Experiments
-
transfer task model의 하이퍼파라미터는 Vizier과 light manual tuning대로 했음
-
기본적으로 dev data set을 을 이용해 튜닝했지만, dev data set이 업으면 cross-validation 방식으로 xbsldgka
-
training은 각 모델별로 10번씩 반복함
-
transfer learning은 target task가 제한된 상황일때 매우 중요함
-
transformer와 DAN과는 다르게 trade-off를 재정의 했는데 하나는 model complexity고 다른 하나는 이상적인 결과에 도달할 수 있는 data의 양으로 잡음
7. Result
-
Table2에서 보듯이 transformer가 DAN 보다 더 성능이 좋음을 알 수 있음
-
그러나, simpler와 fast DAN을 이용한 transfer learning 은 몇 부분에서 복잡한 transfer 모델보다 성능이 더 좋았음
-
확실히 sentence단위의 모델이 word 단위의 모델보다 더 좋은 성능을 가지는 것을 확인할 수 있었음
-
가장 성능이 좋았던 것은 sentence와 word 단위를 모두 조합한 model이었음
-
Table3은 다양한 양의 데이터 셋에 대한 transfer task 성능을 보여줌
-
적은 양의 데이터일 수록 sentence 단위의 transfer learning이 좋은 성능을 나타냄을 알 수 있음
-
또한, transfer learning을 사용하지 않은 모델은 training set 사이즈가 커질수록 성능이 올라감을 확인할 수 있음
-
Table 4는 GloVe embedding과 DAN을 비교한 것임
-
DAN은 GloVe와 비슷한 결과를 나타냈지만, ageism, racism, sexism을 드러내는 것에 대해서는 성능이 약함을 알 수 있음
7.1 Discussion
-
적은 양의 데이터 셋을 가지고 있으면 transfer learning을 쓰는 것이 유리함
-
trade-off가 있으므로 engineer가 목적에 맞게 모델을 잘 골라서 사용해야함
8. Resource Usage
-
compute resource 비교는 크게 compute usage, memory usage 측면으로 나누어 볼 수 있음 (시간 복잡도, 공간 복잡도)
-
figure 2를 통해 각 모델별 비교를 확인 가능
-
Compute usage
-
transformer 경우, time complexity가 O(n2) 를 갖음
-
DAN의 경우, time complexity가 O(n) 임
-
Memory usage
-
transformer 경우, space complexity가 O(n2) 를 갖음
-
DAN의 경우, space complexity가 일정함 (constant)
-
DAN 모델에서는 model 을 unigram과 bigram으로 저장
-
transformer는 unigram embedding으로 저장하기 때문에 짧은 문장에서는 DAN보다 절반 이상 작은 memory를 사용하기도 함
9. Conclusion
-
transformer, DAN model 모두 sentence 단위의 embedding으로 높은 성능을 나타냄이 입증됨
-
문장단위의 embedding은 단어 단위의 단일 embedding의 성능을 초월함
-
특히, 문장과 단어를 조합한 transfer learning 모델이 가장 좋은 성능을 나타냄
-
제한된 training data가 있을때 transfer task를 고려해볼만 함
-
모델들을 사용할때 trade-off가 있으니 accuracy와 compute resource에 대한 고려를 하여 목적에 맞게 선택하여 분석할 필요 있음
-
앞으로 pretrained 된 encoding model들은 매우 공공연하게 이용될 것이며, 자연어를 이해하는데 더 좋은 이점을 가질 것으로 보임
출처
-
Cer, Daniel, et al. "Universal sentence encoder." arXiv preprint arXiv:1803.11175 (2018).