인코더와 디코더
GPT : OpenAI에서 개발한 트랜스포머 기반의 (인과적) 언어 모형
디코딩 방법
탐색 방법 | 특징 |
---|---|
완전 탐색(exhaustive search) | 현실적으로 모든 조합을 검토하기는 불가능 |
탐욕 탐색(greedy search) | - 전체적으로 확률이 높은 문장보다, 초반부의 확률이 높은 문장을 선택 - 비슷한 토큰이 반복되는 문제 : no_repeat_ngram_size, bad_words_ids 등으로 억제 |
빔 탐색(beam search) | 가장 확률이 높은 후보 문장들을 일정 수로 유지하면서 탐색 |
탐색 방법 | 특징 |
---|---|
무작위 추출(random sampling) | - 다음에 나올 토큰들을 확률에 따라 무작위 추출하는 것을 반복 - 말이 안되는 문장이 만들어지기 쉬움 |
top-k 추출 | - 상위 k개의 토큰 중에서만 무작위 추출 |
top-p 추출 | 후보 토큰의 확률이 모두 더해 p가 되도록 하는 방법 (확률 합계 90%까지의 토큰 중에서만 무작위로 선택) |
온도 조절
- 로짓을 나눠주는 값 T
- 온도를 높이면, 모든 토큰의 확률이 비슷하게
- 온도를 낮추면, 로짓이 높은 토큰의 확률이 극단적으로 높아짐
- repetition_penality : 한 번 등장한 단어의 온도만 h배(1.2배) 높임
전이 학습 방식
GPT-1
과제의 텍스트를 특수 토큰(start, delim, extract)을 이용해 과제별 형식으로 입력
GPT는 최종적으로 일종의 점수를 출력 → 출력 점수를 이용하여 과제를 수행
과제 | 내용 |
---|---|
분류 | 텍스트를 집어넣고, 최종 출력값을 이용해 분류 (51,200개 토큰 확률 대신 0/1(긍정/부정) ) |
자연어 추론 | 전제(premise)와 가설(hypothesis) 두 문장이 주어졌을 때, 둘의 논리적 관계(함의 or 모순)를 추론 - 문장 2개, delim 특수 토큰으로 구분 |
유사도 | 유사도 점수를 두 가지 방식으로 계산 (text1과 text2의 순서를 바꿔서 계산한 점수를 합쳐서 최종적인 유사도 계산) |
객관식 문제 풀기 | 주어진 문제 context에 대해 여러개의 답 answer가 있을 경우 |
GPT-1 과제 수행 방식의 장단점
미세조정의 방법들
GPT2Model : 기본 모델, 특정한 head 없음. 마지막 은닉 상태(점수) 출력
GPT2LMHeadModel : 언어 모형(다음 단어 예측)
GPT2ForSequenceClassification : 문서 분류
GPT2ForTokenClassification : 토큰 분류
GPT2DoubleHeadsModel : 언어 모형과 문서 분류를 동시에
💡 GPT2를 특징 추출기로 사용하여 감성 분석