GPT-1은 왜 탄생하였는가?
대부분의 딥러닝 학습은 라벨링이 되어있는 데이터를 활용하는 비지도학습을 하게 되는 데, 실제로 많은 데이터는 라벨링이 되어 있는 데이터를 구하기는 어렵다.
이에따라 텍스트 그대로를 활용하여 학습을 하는 unsupervised learning(비지도 학습)을 하여 학습할 수 있는 모델이 필요하였고 GPT-1이 탄생하게 되었다.
라벨링이 되어지지 않은 텍스트 데이터에서 일정 수준 정보를 얻는 것은 두가지 한계점을 가지고 있다.
1, 어느 optimization이 전이학습에 유용한 텍스트 표현을 배우는데 효과적인지 불분명하다.
(이때, 전이학습이란 이미학습된 weight들을 transfer(전송)하여 자신의 model에 튜닝하여 학습하는 방법을 말한다.)
2, 학습된 표현을 다른 과제로 전이하는 가장 효과적인 방법에 대한 일치된 방법이 존재하지 않는다.
GPT-1의 활용 모델
출처: Naver BoostCamp AI Tech - edwith 강의
출처: Naver BoostCamp AI Tech - edwith 강의
transformer의 decoder부분을 사용하고 있고 최종 아웃풋은 text Prediction, Task Classifier(Classification, Entailment, Similarity, Multiple Choice)의 아웃풋을 내 놓고 있다.
이때, 분류문제에 대하여 문장에 대한 다양한 표시를 해 주기 위하여 특별한 토큰등을 활용하여 분류 문제를 수행하게 된다.
(예를 들어, Entailment부분에서는 두 문장을 Delim토큰으로 구분을 하고 최종 Extract토큰에 대한 output 값을 이용하여 분류 문제를 수행하게 된다.)
GPT-1의 활용
라벨링 되어지지 않은 데이터로부터 모델을 pre-traning을 시킨 후 특정 task에 맞게 fine-tuning과정을 거쳐 특정 task를 완료하도록 활용되어지고 있다.
pre-trainig : 기존 GPT-1의 모델에 대하여 Languagel Model및 Classifier에 대하여 학습을 시킨다.
fine-tuning : pre-trainig된 모델을 활용하여 해결하고자 하는 task에 맞게 model을 미세조정 한다.
=> 이때, fine-tuning을 하고 학습을 수행 할 시 미리 학습(pre-trainig)을 한 모델에 대하여는 learning rate를 작게 하여 학습의 폭이 작게 하고 새로 추가한 부분에 있어서는 learning rate를 크게하여 학습을 크게 하도록 수행을 한다.
(예를 들어, 해당 문장이 정치, 경제, 사회등... 분류 문제를 수행 할 때 맨 위의 층을 제거하고 word encoding vector를 이용하여 해결하고자 하는 task에 맞게 층을 위에쌓아서 task를 수행하게 된다.)
Unsupervised pre-training
Supervised fine-tuning
우도에 따라 모델을 학습 후 Parameter를 task에 맞게 미세조정을 한다.
입력 토큰 및 그 정답 레이블 y, 입력 데이터는 최종 transformer block의 활성값 을 얻기 위해 사전학습된 모델에 전달하고 결과는 다시 y를 에측하기 위해 parameter 에 대하여 fully connected layer를 통과하여 값을 얻어내고 이 우도를 최대화 하는 방향으로 학습을 진행한다.
따라서, 최종 목적함수는 다음과 같다.
이 식을 보게되면 언어모델()을 보조 목적함수로 사용하는 것을 볼 수 있는데
이 이유는 두가지가 있다.
1, 지도 모델의 일반화 향상
2, 수렴을 가속화
이를 통해 fine-tuning과정에서 추가된 파라미터는 와 구분자 token의 embedding이다.
GPT-1의 성능평가 지표
출처: Naver BoostCamp AI Tech - edwith 강의
BERT는 구글에서 개발한 NLP(자연어처리)사전 훈련 기술이며, 특벙 분야를 벗어나 모든 자연어 처리 분야에 좋은 성능을 내는 범용 Language Model이다.
BERT는 '사전 훈련 언어모델'로써 GPT1과 마찬가지로 pre-training을 수행 한 후 fine-tuning을 통해 특정 task를 수행한다.
출처: Naver BoostCamp AI Tech - edwith 강의
GPT1의 경우에는 전체 문장에 대한 단어의 관게도를 파악하는 것이 아닌 이전의 단어들에 대해서만 관계도를 파악한다면 BERT는 전체 단어를 고려해서 학습을 진행한다.
(GPT1 - transformer의 decoder부분, BERT - transformer의 encoder부분)
Pre-traning
Bert의 다양한 모델 및 특징
모델 종류
1, BERT BASE : L=12, H = 768, A = 12
2, BERT LARGE : L=24, H=1024, A=16
(L : layer수, H : hidden state demension수, A : 각 layer별로 정의되는 Attention head의 수)
input표현
1, WordPiece embeddings(30,000 WordPiece)<pre traning => '-'으로 연결되어 있지 않아도 합성어로 판별>
2, Learned positional embedding : positional embedding도 학습에 의해 결정될 수 있도록
출처: Naver BoostCamp AI Tech - edwith 강의
3, Classification embedding을 위한 [CLS]토큰
4, Packed sentence embedding[SEP] (문장 단위로 판별하기 위한 토큰)
5, Segment Embedding
출처: Naver BoostCamp AI Tech - edwith 강의
문장의 위치를 반별하기 위한 position embeddings를 더해주는 한변 문장단위로 구별하기 위해 segment embeddings를 더해줌
fine-tuning
출처: Naver BoostCamp AI Tech - edwith 강의
출처: Naver BoostCamp AI Tech - edwith 강의
1, Sentence Pair Classification Task(입력 문장이 여러개고 분류 task를 수행 할 시)
2, Single Sentence Classification Task
3, Question Aswering Tasks
4, Single Sentence Tagging Tasks(주어진 문장에서 각각의 word에 대한 정보를 산출하고 싶을 때 -품사 등...)
fine-tining을 한 BERT의 성능(GLUE Menchmark Result)
출처: Naver BoostCamp AI Tech - edwith 강의
(결과물을 도출한 층을 제거 후 해결하고자 하는 task를 수행하기 위한 층을 추가하여 수행한 결과)
Naver BoostCamp AI Tech - edwith
https://medium.com/@eyfydsyd97/%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-improving-language-understanding-by-generative-pre-training-gpt1-c65bed865990
https://simonezz.tistory.com/73
https://greeksharifa.github.io/nlp(natural%20language%20processing)%20/%20rnns/2019/08/21/OpenAI-GPT-1-Improving-Language-Understanding-by-Generative-Pre-Training/
https://blog.naver.com/PostView.nhn?blogId=flowerdances&logNo=221189533377&categoryNo=32&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=1&from=postView