BERT는 Transformer의 Encoder를 사용한 모델이고 GPT는 Transformer의 Decoder를 사용한 모델
GPT의 언어 학습 방법
"발 없는 말이 천리간다" 라는 문장을 학습할 경우 "발"이라는 단어가 나왔을 때 모델은 다음에 나올 적절한 단어가 무엇인지를 학습한다. "없는" 이라는 단어가 "발" 다음으로 적절한 단어라고 학습하게 되면 그 다음에는 "발 없는" 다음으로 나오기 적절한 단어가 어떤 것인지 예측하고 또 그 예측한 것을 통해 다음 단어를 예측하는 과정을 통해 자연어를 지속적으로 생성한다.
GPT-1
BERT 보다 시기적으로 먼저 나온 모델
GPT-1의 목적은 RNN과 마찬가지로 기존의 문장이 입력으로 들어갔을 때 입력된 문장의 context vector를 출력하고 그 context vector 뒤에 linear layer를 붙임으로써 분류 task에 적용하기 위해 설계되었던 모델이다.
Pre-train 언어 모델의 새 지평을 열었으나 여전히 지도 학습으로 labeled data가 필수이고 특정 task를 위해 fine-tuning된 모델은 다른 task에서는 사용하기 어렵다는 단점이 존재하였다.
⇒ "언어"의 특성 상, 지도학습의 목적함수는 비지도 학습의 목적함수와 같다.
즉, fine-tuning에서 만들어지는 목적함수와 pre-trained 모델을 만드는 비지도 학습의 목적함수가 같다.
풀어서 얘기해보면 결국 fine-tuning에서 사용되는 label 자체도 "언어"이다.
예를 들어 감정 분석에서 어떤 문장의 분류 라벨이 "슬픔"이라고 하면, 이 "슬픔" 이라는 단어 자체도 언어이기 때문에 굳이 fine-tuning을 할 필요가 없다고 여겨지게 된다.
즉, 엄청 큰 데이터셋을 사용하면 자연어 Task를 자연스럽게 학습할 수 있을 것이다.
예를 들어 아래 그림처럼 영어 문장 + French: + 프랑스어로 번역된 문장으로 되어있는 큰 데이터셋을 사용해 학습했다고 하면 번역 task를 자연스럽게 학습할 수 있을 것이다.
그는 놀란 마음으로 다음과 같이 말했다. "로스트아크는 강화에 천장이 있다고??" 라는 문장이 주어졌다고 하자.
그러면 "로스트아크는 강화에 천장이 있다고??"라는 문장이 "놀람"을 나타내고 있다고 명확히 제시하지 않더라도 큰 데이터셋을 통해 감정에 대한 것까지 자연스럽게 학습할 수 있다.
→ GPT를 개발한 연구진들은 비지도학습의 과정의 목적함수와 fine-tuning의 목적함수를 구분할 필요가 없다고 가정
pre-trained 모델을 만들어내기 위해서는 엄청나게 많은 resource가 필요하다는 문제점이 존재한다고 지적하였다. 그렇게 만들어진 pre-trained 모델을 fine-tuning 함으로써 한가지의 task에만 적용할 수 있는 모델을 새롭게 만드는는 행위자체가 자원의 낭비가 될 수 있다고 바라보았다.
그래서 제안한 방법이 바로 Zero-shot, One-shot, Few-shot 방법이다.
Fine-tuning은 pre-trained 된 모델에 down-stream task의 데이터셋을 이용해 gradient를 업데이트 함으로써 down-stream task에 점점 미세조정을 하면서 해당 task에 맞춰가는 과정으로 학습을 하게 된다.
GPT-1 연구진들은 Zero-shot, One-shot, Few-shot Learning를 제안하였다. 이 각각의 learning 들은 gradient를 업데이트하지 않는다. 각각의 learning의 차이점은 inference를 할 때 원하는 task 에 대한 source(힌트)를 아예 안주느냐, 하나만 주느냐, 여러개 주느냐의 차이이다. Zero-shot learning 같은 경우에는 내가 만약 번역 task를 원한다 그러면 “Translate English to French:” 하고 그 다음에 cheese 라고 입력하게되면 다음에 나올 가장 적절한 단어를 GPT 모델이 예측하게 된다. 이 경우에 기존의 번역 모델은 번역하는 과정을 학습하기 위해서 fine-tuning 하는 과정을 거쳤어야 하지만 저자의 생각은 이미 엄청나게 큰 corpus 내에 “English to French:” 에서 번역하는 과정을 학습했기 때문에 cheese 다음에 나오는 가장 적절한 토큰은 cheese가 French로 번역된 단어가 나올 것이라고 예측할 수 있다.
즉, Zero-shot learning 같은 경우에는 힌트없이 task 를 수행하는 것이고 One-shot learning은 위 그림처럼 한가지 예시를 주는 방식이다. 그리고 Few-shot 은 여러가지 예시를 주고서 task를 수행한다.
GPT-1
기존의 GPT-1모델의 파라미터 수는 117M 개이고 11GB의 text 데이터로 학습했다면
GPT-2는 40GB의 데이터로 학습하고 파라미터의 개수도 10배로 늘렸다.
또 디코더의 구조도 위 그림과 같이 변경하였다.
GPT-2는 다음 단어 예측 방식에서는 SOTA 성능을 보였고 기계독해, 요약, 번역 등의 자연어 task에서는 일반 신경망 수준을 보였지만 Zero, One, Few-shot learning의 새 지평을 제시하였다.
GPT-3
GPT-3는 기존의 파라미터수를 100배 정도로 늘렸고 학습데이터도 45TB에서 정제된 570GB를 사용하였다.
GPT-2와의 차이점은 modified initialization, pre-normalization, reversable tokenization을 적용하였다는 점이다.
또한 트랜스포머 레이어의 attention 패턴에 대해 dense와 locally banded sparse attention을 번갈아 사용하였다.
GPT3는 두 개의 숫자를 덧셈하는 task에 대해서는 100% 가까운 accuracy의 성능을 보였다.
하지만 4 자릿수 이상의 계산에서는 성능이 매우 떨어졌고, 복합 연산에 대해서는 21.3%밖에 되지 않는 정확도를 보여, 하나의 계산을 넘어가는 계산에 대해서는 강건성이 떨어지는 것으로 나타났다.
GPT-3의 한계점
GPT-3는 Weight update가 없다는 것이 문제가 될 수 있다.
다시말해 새로운 지식에 대한 학습이 없기 때문에 GPT3를 학습할 때 사용한 large corpus 내에서만 GPT3 가 답변할 수 있다.
만약 “한국의 대통령이 누구야?” 라고 질문하게되면 “윤석열 대통령” 이라고 답변이 나오지만 5년뒤에는 다른 대통령이 되었을 때도 답변을 윤석열 대통령이라고 할 것이다.
또 모델 사이즈와 학습데이터만 계속해서 키우는 방향이 정답일까에 대해서는 다른 방향의 연구도 필요할 것이다.
사람이 세상을 인지할 때는 우리의 감각기관을 모두 사용해서 인지를 하지만 GPT3는 witten language(text 로 된 데이터)만 학습한다. 즉, 멀티 모달에 대한 정보도 학습이 필요할 것이다.