이전 포스팅 : https://seungseop.tistory.com/20
구글의 연구원들은 2017년 논문에서 시퀀스 모델링(sequence modeling)을 위한 새로운 신경망(neural network) 아키텍처를 제안했다. 트랜스포머(Transformer)란 이름의 이 아키텍처는 기계 번역 작업의 품질과 훈련 비용 면에서 RNN(Recurrent neural network)를 능가했다.
트랜스포머는 2023년 현재 가장 유명한 자연어처리 모델의 양대산맥이라고도 불리는 GPT(Generative Pretrained Transformer)와 BERT(Bidiretional Encoder Representations from Transformers)의 촉매 역할을 했다.
GPT와 BERT는 트랜스포머 아키텍처와 비지도 학습(unsupervised learning)을 결합해 거의 모든 NLP 벤치마크에서 기록을 경신했다.
트랜스포머 모델의 발전 과정은 다음과 같다.
트랜스포머에 대해 이해하기 위해서는 우선 다음 내용들이 선행되어야 한다.
- 인코더 - 디코더 프레임워크
- 어텐션 메커니즘
- 전이 학습
인코더-디코더 프레임워크
트랜스포머가 등장하기 전까지는 NLP에서 LSTM 같은 순환 신경망 구조가 최고 수준의 성능을 달성했다.
RNN의 구조는 다음과 같다.
이러한 구조는 NLP 작업, 음성 처리, 시계열 작업에 널리 사용됐고 지금도 사용되고 있다.
단어 시퀀스를 한 언어에서 다른 언어로 매핑하는 기계 번역과 같은 종류의 작업은 대개 인코더-디코더(encoder-decoder) 또는 시퀀스-투-시퀀스(sequence-to-seqeunce) 구조로 처리하며 입력과 출력이 임의의 길이를 가진 시퀀스일 때 잘 맞는다.
인코더는 입력 시퀀스의 정보를 마지막 은닉 상태(last hidden state)라고도 부르는 수치 표현으로 인코딩한다. 그다음 이 상태가 디코더로 전달되어 출력 시퀀스가 생성된다.
인코더와 디코더는 시퀀스를 모델링할 수 있는 어떤 종류의 신경망도 가능하다.
다음은 영어 문장을 인코딩 한 후 디코딩해 독일어 문장으로 만든 한 쌍의 RNN 예시이다.
이러한 구조는 간결하지만 인코더의 마지막 은닉 상태가 정보 병목(Information bottleneck)이 된다는 단점이 있다. 디코더는 인코더의 마지막 은닉 상태만을 참조해 출력을 만들기에 전체 입력 시퀀스의 의미가 담겨야 하기 때문이다.
이를 해결하기 위해 디코더가 인코더의 모든 은닉 상태에 접근해 병목을 제거하는 메커니즘인 어텐션(attention)이 등장한다.
어텐션 메커니즘
어텐션은 입력 시퀀스에서 은닉 상태를 만들지 않고 스텝마다 인코더에서 디코더가 참고할 은닉 상태를 출력한다는 주요 개념에 기초한다.
하지만 모든 상태를 동시에 사용하려면 디코더에 많은 입력이 발생하므로 어떤 상태를 먼저 사용할지 우선순위를 정하는 메커니즘이 필요하다. 이것이 바로 어텐션이다. 디코더가 모든 타임스텝마다 인코더의 각 상태에 다른 가중치 또는 '어텐션'을 할당한다.
어텐션만으로는 RNN과 같은 순환 모델의 단점을 완벽히 해결할 수 없다. 계산이 순차적으로 수행되기에 병렬화가 불가능하기 때문이다.
이에 트랜스포머는 RNN 기반의 순환 구조를 모두 없애고 셀프 어텐션(self-attention)을 사용한다.
트랜스포머 원래 논문(Attention is all you need)에서는 대규모 말뭉치에서 번역 모델을 훈련했다. 하지만 많은 실용적인 NLP 애플리케이션이 모델 훈련에 사용할 레이블링 된 대규모 말뭉치를 구하지 못하기 때문에 전이 학습이라는 개념이 필요하게 된다.
NLP의 전이 학습
모델을 구조적으로 바라보면 바디(body)와 헤드(head)로 나뉜다. 바디의 가중치는 훈련하는 동안 원래 도메인에서 다양한 특성을 학습하고, 이 가중치를 사용해 새로운 작업을 위한 모델을 초기화한다. 전이 학습은 일반적으로 다양한 작업에서 적은 양의 레이블 데이터로 높은 품질의 모델을 만든다.
다음은 전통적인 지도학습과 전이 학습을 비교한 것이다.
2017-2018년 몇몇 연구 단체가 NLP에서 전이 학습을 수행하는 새 방식을 제안했다.
그 뒤를 이어 범용적인 프레임워크 ULMFiT가 등장했고, ULMFiT는 다양한 작업에 사전 훈련된 LSTM 모델을 적용한다.
ULMFiT는 세 개의 주요 단계로 구성된다.
- 사전 훈련
- 도메인 적응
- 미세 튜닝
사전 훈련
초기 훈련의 목표는 이전 단어를 바탕으로 다음 단어를 예측한다. 이를 언어 모델링(language modeling)이라 한다. 이 작업은 레이블링된 데이터가 필요하지 않으며 위키피디아 같은 소스에 있는 풍부한 텍스트를 활용한다.
도메인 적응
대규모 말뭉치에서 사전 훈련한 후, 도메인 내 말뭉치에 적응시킨다. 이제 모델은 타깃 말뭉치에 있는 다음 단어를 예측한다.
미세 튜닝
이 단계에서 언어 모델을 타깃 작업을 위한 분류 층과 함께 미세 튜닝한다.
GPT는 트랜스포머 아키텍처의 디코더 부분만 사용하고 ULMFiT 같은 언어 모델링을 사용한다. GPT는 장르를 망라한 미출판 도서 7,000권으로 구성된다.
BERT는 트랜스포머 아키텍처의 인코더 부분만 사용하고 마스크드 언어 모델링(masked language modeling)이라는 특별한 형태의 언어 모델링을 사용한다. 이는 텍스트에서 랜덤하게 마스킹된 단어를 예측하는 것이다. BERT는 GPT의 데이터셋과 영어 위키피디아에서 사전 훈련했다.
허깅페이스 트랜스포머스
새로운 머신러닝 아키텍처를 새로운 작업에 적용하는 일은 일반적으로 다음 단계를 거친다.
- 모델 아키텍처를 코드로 구현한다. (파이토치 or 텐서플로 사용)
- (가능하다면) 서버로부터 사전 훈련된 가중치를 로드한다.
- 입력을 전처리하고 모델에 전달한다. 그 다음 해당 작업에 맞는 사후 처리를 수행한다.
- 데이터로더(dataloader)를 구현하고 모델 훈련을 위해 손실 함수와 옵티마이저를 정의한다.
트랜스포머 애플리케이션 둘러보기
- 텍스트 분류
- 개체명 인식
- 질문 답변
- 요약
- 번역
- 텍스트 생성
트랜스포머를 활용해 위와 같은 task들을 처리할 수 있다.
허깅페이스 생태계
허깅페이스 생태계는 크게 라이브러리와 허브로 구성된다.
- 라이브러리 : 코드 제공
- 허브 : 사전 훈련된 모델 가중치, 데이터셋, 평가 지표를 위한 스크립트 등을 제공
Reference
http://www.yes24.com/Product/Goods/115633781