0. 목적
Vision Transformer란 NLP에서 높은 성능을 자랑한 Transformer를 활용한 Vision모델로, Attention을 활용하므로 확장 / 스케일링 / 학습에 장점을 갖지만 일반적으로 CNN을 사용하는 다른 모델에 비해 낮은 Locality를 갖는다는 단점이 존재하는 모델이다. 기존에 봐왔던 모델이 대부분 CNN Based 모델이었기 때문에 이 모델을 이해하기 위해서 Vision transformer의 근본인 Transformer를 이해하고자 기초 NLP의 개념을 배워보고자 하였다.
NLP란 자연어 처리(Natural Language Processing)의 약어로 우리가 사용하는 언어를 컴퓨터가 이해하도록 표현하고, 표현된 언어를 바탕으로 연산을(대표적으로 추론) 하는 방식이다.
가장 중요한 것은 우리의 언어를 어떻게 컴퓨터로 표현하고, 이해시킬지이다. 여기에는 세가지 방법이 있다. 1) 시소러스 2) 통계 기반 3) 추련 기반
각 방법의 기본 개념과 한계와 발전에 대해서 알아보자
1. 시소러스
동의어 / 상의 하위 언어와 같이 단어들을 Tree처럼 구조로 나타냄으로서 단어를 표현 및 이해시키는 방식으로 WordNet이 이에 대표적인 예시이다. 하지만 언어의 복잡성과 모호성을 표현하기 어렵고 단어의 변화를 적용시키기 어려워 활용에 한계가 존재하는 방식이다.
2. 통계 기반
대량의 텍스트 데이터인 Corpus로 통계를 냄으로서 단어를 표현 및 이해시키는 방식이다. 단어간의 관계를 직접적으로 나타내던 시소러스와 다르게 Corpus 자체에 이러한 정보가 내포되어 있다는 직관으로 부터 출발한 방식이다. 가장 먼저 모든 단어를 unique한 수로 나타내고 이를 이용하여 단어 간의 분산표현을 나타내고 표현한 분산 간의 코사인 유사도를 통해 통계 기반 추론하는 방식이다.
이 과정에서 실제 연관된 데이터를 적절히 추출하기 위해 The와 같이 문맥과 연관없이 많이 나타나는 단어의 배제하고, 실제 연관있는 문자만 가져오기 위해 연관량과 동시에 총 단어 등장 횟수까지 고려하여 스코어를 매기는 PMI나, 단어의 기하급수적인 증가에 의한 계산량 감소를 위한 SVD(Singular Value Decomposition)을 통한 차원 감소등을 활용하여 성능을 올리려는 시도가 많았다.
하지만 결국 1회의 SVD과정에 말뭉치의 전체 통계가 활용되기 때문에 어휘의 증가에 의해 복잡도가 심각하게 증가하게 되어 다른 방식의 필요성이 대두되었다
3. 추론 기반
통계 기반에서의 Uniuqe한 단어의 ID를 고정 길이의 벡터(one-hot vector)로 표현하고, 이를 입력으로 하는 신경망을 구축하고 이를 통해 추론하는 방식이다. 대표적인 방식으로 word2vec가 있는데, 추론하고자 하는 Target를 중심으로 문맥을 가져오고 추론하는 CBOW(Continuous bag-of-words)와 문맥을 중심으로 추론하고자 하는 Target을 추론하는 Skip-gram이 존재한다. 둘 다 문맥을 입력으로, 2개의 레이어를 거친 후 도출된 score들을 softmax으로 확률(혹은 가능도)로 나타내어 결과를 추론하는 모델임은 같다. 다만, 입력과 출력의 형태가 다르므로 Loss function이나 성능이 다르다. 일반적으로 성능은 skip-gram(하나의 단어로 부터 주위 단어를 예측하는 더 어려운 문제이므로 더 뛰어난 분산 표현이 가능하므로)이, 학습 속도는 CBOW(skip-gram이 Loss를 맥락의 수만큼 구해야 하므로 더 비용이 높으므로)가 좋다고 한다.
추론 기반의 성능을 더 끌어올리기 위해 다양한 기술이 적용되었다. 그 예시로는 비용이 비싼 행렬곱대신 벡터인 Embedding곱셈으로 표현하여 계산량을 줄이는 방식과 확률(혹은 가능도)계산을 위해 전체 결과가 필요한 softmax를 통한 다중 분류 대신 sigmoid를 통한 출력에 대한 이진분류(yes or no)문제로의 치환을 통한 복잡도 저하가 있다. 이진분류를 위해 정답 외의 일부의 다른 class에 대한 backprop을 해주는 네거티브 샘플링을 해주는 것도 흥미로운 주제였다