우리가 사용하는 자연어를 컴퓨터가 알아듣게 하려면 word embedding이라는 작업이 필요합니다.
word embedding에는 여러가지 시도가 있어왔고 2017년부터 Transformer라는 방법을 기반으로 하고있습니다.
Transformer
Transformer에 대해 간단하게 설명하겠습니다.
기존에 많이 사용되던 Word2Vec과의 차이점은 output으로 나오는 벡터값이 단어냐 문장이냐 입니다.
Word2Vec은 단어에 대한 벡터값이 나오고 Transformer는 문장에 대한 벡터값이 나오게됩니다.
그렇기때문에 Transformer는 문장 맥락에 대한 이해가 가능합니다.
하지만 속도가 느리다는 단점이 존재합니다.
이미지 출처: https://wikidocs.net/31379
Transformer는 위와같이 인코더와 디코더의 구조를 갖고있습니다.
문장을 벡터로 만들어주는 작업을 해주는 인코더와 벡터를 문장으로 만들어주는 디코더입니다.
Transformer는 Self-attention을 통해 문장 전체에 대한 배열을 만들어냅니다.
*Self-attention: 간단하게 문장내 단어들 사이의 관계 학습
Transformer - Encoder
Transformer에 사용되는 encoder모델은 autoencoding 모델로 문장의 양방향 데이터를 사용하기 때문에 이해도가 높습니다.
(word2vec)
[나는, 좋아한다] 라는 데이터가 input으로 들어왔을때 output으로 축구를 이라는 단어가 나올 수 있습니다.
Transformer - Decoder
Transformer에 사용되는 decoder모델은 autoregressive 모델로 양방향이 아닌 한쪽 방향의 데이터만 사용하기때문에 이해도는 떨어지지만 문장을 생성할 수 있습니다.
(nplm)
[나는, 축구를] 이라는 데이터가 input으로 들어왔을때 output으로 좋아한다 라는 단어가 나올 수 있습니다.
Transformer는 이러한 특징을 갖고있는데 부분적으로 사용하여 만든 모델들이 등장했습니다.
- Encoder만 사용하여 만든 모델
- BERT
- ELECTRA
- Decoder만 사용하여 만든 모델
- GPT
- 전체 다 사용하여 만든 모델
- T5
- BART
'개발 > NLP' 카테고리의 다른 글
TF-IDF (0) | 2021.03.21 |
---|---|
Bag of Words (0) | 2021.03.19 |
자연어 평가 지표 (0) | 2021.03.19 |