구글의 연구원들은 2017년 논문에서 시퀀스 모델링을 위한 새로운 신경망 '트랜스포머'를 제안함
이는 번역 품질과 훈련 비용면에서 기존의 RNN을 능가함
GPT와 BERT
이 아키텍처를 통해 GPT와 BERT가 등장함
이 모델들은 트랜스포머 아키텍처와 비지도 학습을 결합해 작업에 특화된 모델을 밑바닥부터 훈련할 필요를 없애고 거의 모든 NLP 벤치마크에서 큰 차이로 기존 기록을 경신함.
트랜스포머의 새로운 특징은 다음과 같음
인코더-디코더 프레임워크
어텐션 매커니즘
전이학습
트랜스포머가 등장하기 전
인코더-디코더 프레임워크
트랜스포머가 등장하기 전, NLP에서는 LSTM 같은 순환신경망 구조가 SOTA였다.
입력을 받아 네크워크 통과 후, hidden state라는 벡터를 출력하고 출력한 정보를 다음 스텝에 사용하게 된다. 이 구조는 인코더의 마지막 hidden state가 정보 병목이 된다. 왜냐하면 마지막 hidden state만이 전체 입력 시퀀스의 정보가 담겨 있기 때문이다. 또한, 시작부분의 정보가 손실될 수도 있다는 약점이 있다.
이를 제거하기 위해 어텐션 메커니즘이 등장한다.
어텐션 메커니즘
인코더에서 디코더가 참고할 만한 hidden state를 출력하는데 디코더에서 이 모든 것을 받으면 입력값이 많아진다. 여기서 어떤 상태를 먼저 사용할지 우선순위를 정하는 매커니즘이 필요하다. 이것이 어텐션이다.
그러나 여전히 순환 모델의 단점은 그대로 존재한다.
셀프 어텐션
트랜스포머는 모델링 패러다임을 바꾸었다. 순환 구조를 모두 없애고 셀프어텐션을 통해 작동되도록 했다.
NLP의 전이학습
컴퓨터비전에서는 전이학습을 하는 경우가 많다. 구조로 볼 때 모델은 보통 바디와 헤드로 나뉜다. 바디는 기존 도메인에서 다양한 특성을 학습하고, 이 가중치를 활용해 새로운 작업을 위한 모델을 초기화 한다.
컴퓨터 비전과 다르게 NLP에서는 사전훈련 방식이 특정되지 못했다. 그러다 2017, 2018년, OpenAI가 제안한 방식이 등장했다. 그 이후 ULMFiT라는 방법론이 등장했다.
pre-training
초기 학습 목표는 간단하다.. 이전 단어를 바탕으로 다음 단어를 예측하는 작업이었다. 이 작업을 language modeling이라고 한다. 편리하게도 이 작업은 레이블 데이터가 필요하지 않고 위키피디아 같은 풍부한 텍스트를 그대로 사용할 수 있다.
domain adapting
언어모델을 대규모 말뭉치에서 사전 훈련 후, 나의 도메인 말뭉치에 어댑팅할 수 있다.
fine-tuning
이 단계에서 언어 모델을 커스텀 태스크를 위한 분류 층과 함께 미세튜닝을 한다.
GPT
트랜스포머 아키텍처의 디코더 부분만 사용하고 ULMFiT 같은 언어 모델링 방법을 사용한다. GPT가사전 훈련한 BookCorpus 데이터셋은 다양한 미출판 도서 7,000권으로 구성된다.