허깅페이스의 transformers 모델 요약 문서를 보고 조금씩 정리하고자 합니다. 페이지 내에서 동영상도 있어서, 간략하게 정리해보고자 할때 유용합니다.
해당 글은 하이레벨 관점에서 모델들의 차이점을 다루며 보다 자세한 내용들은 hugging face model 페이지에서 사전 학습된 파일들을 찾아서 테스트 해볼수 있습니다.
허깅페이스 라이브러리에서 제공하는 모델들은 아래의 다섯 카테고리를 따릅니다.
트랜스포머는 Attention all you is need 논문에서 제안된 모델 구조로 인코더와 디코더로 결합된 모델로 위와 같은 형태를 가집니다.
보다 추상적으로 보면 위와 같이 인코더와 디코더 구조로 되어 있는것을 볼수 있습니다.
인코더는 말 그대로 텍스트를 숫자들의 representation으로 인코딩하는 역할을 합니다. 이 representation은 Embedding 이나 Features로 부를 수 있습니다.
대표적인 기능으로는 주어진 입력에 대해 양방향(Bi-directional)으로 셀프 어텐션을 적용해 입력을 인코딩하게 됩니다.
디코더는 인코더로부터 나온 representation들을 디코딩 하는 기능을 합니다. 디코더는 마스크를 사용한 셀프 어텐션인 마스크드 셀프 어텐션을 이용해 단방향으로 Auto regressive하게 학습을 합니다. 이러한 말들에 대해서는 아래에서 보다 자세히 설명하겠습니다 .
seq2seq 모델의 경우 최초의 트랜스포머 모델에서 제안된 개념으로 인코더와 디코더를 결합한 모델을 말합니다.
인코더는 텍스트 입력을 받아 숫자로 표현될 수 있는 represetaion으로 변환하며, 디코더는 인코더의 출력을 이용해 단방향으로 auto regressive 방식으로 학습하게 됩니다.
오리지날 트랜스포머 모델의 decoder를 사용하며, 이전 모든 토큰들을에 대해 다음 토큰을 예측하는 방식으로 대해 사전 학습 된다. 트랜스포머 어텐션에서 다음 문장을 예측할때, 전체 문장의 윗부분을 마스킹 처리하여, 어텐션 헤드가 예측하고자 하는 다음 토큰 이전까지만 볼 수 있도록 한다. 대표적인 모델로는 GPT 모델이 있으며, 대표적인 예로는 텍스트 생성 태스크가 있다.
오리지날 트랜스포머 모델의 encoder를 사용하며, 입력 문장의 토큰들을 변경하여, 이것들을 원본 문장들을 맞추는 방법을 통해 사전학습 되는 모델을 말한다. Autoregressive model
과 달리 마스킹이 사용 되지 않아, 입력 문장의 토큰들에 대해 모두 접근이 가능하여, bidrectional representation
을 학습한다. 많은 과제들에 대해 좋은 성능을 얻었다.
시퀀스 투 시퀀스 모델의 경우 오리지날 트랜스포머 모델의 encoder
와decoder
를 모두 사용한 모델이다. 많은 태스크들에 대해 파인 튜닝이 가능하며, 번역
, 요약
, 질의응답
들에 많이 사용된다. 대표적인 모델로는 T5 모델이 있습니다.
디코더 모델을 입력을 Numerical Representation으로 변환 합니다. 이때 Numerical Representation은 숫자들의 나열로 볼 수 있습니다.
디코더의 출력을 보면 위와 같이 Numerical Representaion으로 변환 되는 것을 볼수 있습니다.
이때 Auto Regressive Model의 경우 Masked Self attention을 이용해 학습하며, 대표적으로는 GPT 계열의 모델들이 있으며, 문장 생성에 좋은 성능을 보입니다.
Causal languge model의 경우 autoregressive model의 또 다른 말로 문장에서 단방향 모델을 통해 다음 단어를 예측, 추측하는 언어모델을 말합니다.
위 이미지에서 볼 수 있듯 My name is Sylvain을 Causal Languge Model을 통해 문장에서 다음 단어를 예측하는 방법을 보여줍니다 .
control codes
에 대한 아이디어를 추가한 모델. 어떤 프롬프트(비어있을 수 있음)나 control codes
들 중 하나로부터 텍스트를 생성할수 있다. control codes
의 경우 텍스트 생성을 잘 하기 위해 사용 되며, 위키피디아, 책, 영화리뷰같은 스타일로 생성할 수 있다.segment
들을 이용해 Recureence 구조를 사용한 모델이다. 두개의 연속적인 입력을 사용하는 일반적인 RNN 구조와 비슷하며, 이때 segment
는 연속적인 토큰들의 수(예 512 개의 토큰)를 말하며, 모델에 순서대로 들어간다. 리포머는 트랜스포머의 메모리를 절약하고 컴퓨팅 시간을 줄위기 위한 모델입니다. Axial Positional Encoding, LSH Attention, Reversible Network, Chunk 단위 계산을 사용해 트랜스포머가 가지는 메모리와 컴퓨팅 문제를 해결하고자 했습니다. 리포머를 이용해 더 긴 시퀀스를 가진 입력을 받을 수 있으며, 인코더 디코더 상관없이 적용할 수 있습니다.
transformer-XL과 동일한 구조를 사용해 긴 문장에 대해서 다룰 수 있는 모델로 GPT와 BERT의 장점을 결합한 Generalized AR Pretraining Model을 제시했습니다.
토큰의 순서를 변화시켜 학습하는 Permutation Language Model과 Two-stream Attention을 제안했습니다.
트랜스포머 인코더에 기반한 모델들을 살펴본다. 프리트레이닝 과정에서 target은 원래의 문장을 사용하고, input으로는 입력을 마스킹하는 방식과 같이 노이즈나, 변경, 또는 수정해서 입력을 인코더에 넣는다.
BERT는 자연어 처리에서 굉장히 중요한 모델로, 랜덤하게 input을 마스킹을 하여 원래의 문장을 맞추는 Pretraining과정을 거친다. 버트는 일반적으로 15%의 토큰에 대해 마스킹 과정을 거친다:
버트 모델을 Masked Language Model 과 Next Setence Prediction을 이용해 pretraining을 거친다. NSP의 경우 버트에 입력되는 두 문장이 연속적인지 아닌지에 대해 binary classification을 통해 맞추는 task로 학습니다.
하지만 다른 논문들에서 NSP가 불필요하다는 견해도 있으므로 참고.
ALBERT: A Lite BERT for Self-supervised Learning of Language Representations, Zhenzhong Lan et al.
버트와 같지만 몇몇 부분에서 다른 점을 가진다: