1. GPT(Generative Pre-Training)
- GPT모델은 2018년 6월에 OpenAI가 논문을 통해 처음 제안
- 논문1: http://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdf
- 논문2: https://d4mucfpksywv.cloudfront.net/better-language-models/language-models.pdf
- 논문2: http://arxiv.org/abs/2005.14165
- GPT도 unlabeled data로 부터 pre-train을 진행한 후 특정 downstream task에 fine-tuning을 하는 모델
- Transformer의 decoder만 사용하는 구조
1. GPT 모델의 특징 |
|
2. GPT 모델 구조 |
|
3. GPT 모델 학습 |
|
◼ 설치
!pip install transformers
|
◼ import
import torch
from transformers import pipeline
|
◼ 객체 생성 | 데이터 가져오기
- 사이트 참고: https://huggingface.co/heegyu/kogpt-j-base
- pipline( ) :
허깅페이스의 Transformers 라이브러리에서 제공하는
다양한 자연어처리 작업을 간편하게 수행할 수 있도록 도와주는 함수
model_name = "heegyu/kogpt-j-base"
pipe = pipeline('text-generation', model=model_name)
|
|
◼ 출력해보기
print(pipe("안녕하세요", repetition_penalty=1.2, do_sample=True, eos_token_id=1, early_stopping=True, max_new_tokens=128))
print(pipe("오늘 정부 발표에 따르면, ", repetition_penalty=1.2, do_sample=True, eos_token_id=1, early_stopping=True, max_new_tokens=128))
print(pipe("싸늘하다. 가슴에 비수가 날아와 꽂힌다. ", repetition_penalty=1.2, do_sample=True, eos_token_id=1, early_stopping=True, max_new_tokens=128, min_length=64))
|
[{'generated_text': '안녕하세요 저는 오늘 아침에 늦게 들어와서 너무 힘들고 집에 가고 싶지만은\n네.\n피곤할 것 같습니다. 네. 어제 밤에 저 친구가 우리 회사 일 많이 한 거 같아요? 우리 회사에 있는 날이라고 하더라고요.\n무슨 내용이에요? 뭐예요?\n뭐일한 거랑 오늘 일 끝나고 보니까\n그렇죠. 오늘은 내가 그 사석에서 만나는 친구들인데 거기서 만난 친구들은요. 이렇게 뭔가 일을 했으면 됐지 뭘 했다고 다 얘기하잖아요. 뭐 다른 사람이니까 아~ 나는 못 한다 그래도 그렇지 정말 우리가 해야 될 일은 안 하면서 어떻게 자기 얘기를 할까 이 생각이 들잖아요? 그러니까 제가 보기에는 어~ 그런 게 있을 수가 없는 거죠. 그냥 제가 봤을'}] [{'generated_text': '오늘 정부 발표에 따르면, ict 분야에선 올해 상반기 기술특허출원 건수는 총 6119건으로 1년 전의 331건에 비해 40%나 급증했다. 이는 지난 2013년에 439건의 특허 출원인 1만2801건을 크게 웃도는 결과로 그만큼 ip 기반 스타트업(start up)의 우수성 추세에 탄력이 붙어 있다는 분석이다.. ◇벤처산업은 igs·rxg·인텔리전트 rcs 등 해외 진출 본격화=국내 산업계에서도 글로벌 스타트업의 우위는 이어졌다. 스타트업의 경우 ieo(국제표준시료소자), pp'}] [{'generated_text': '싸늘하다. 가슴에 비수가 날아와 꽂힌다. \n제5조(기물파손의 금지) ① 불법행위자는 누구든지 제19조 및 조례규정을 위반하거나 법령에 명백히 위배해서라도 불법행위를 하면 제43조에 따라 엄중한 처벌한다. ② 불법행위의 주된 구성요건인 물리적 가위에 대한 결탁에 관여하는 경우, 공무원이 법령 또는 법률에 위반되는 행위를 하는 행위는 공무원에 대하여 위법성을 인식하여 위법성조각사유가 되어도 이를 참작한 행정처분을 취하도록 한다. (1), circumbition of justice: a moral vitropos'}] |
- repetition_penalty : 텍스트 생성 과정에서 반복되는 단어 또는 구문의 생성을 억제하기 위한 파라미터
- 특정단어가 반복될 때 단어의 확률을 감소시키는 방식으로 작동
- 모델이 동일한 단어를 다시 생성하려고 할 때 로그 확률에 페널티를 부여하여 다른 단어를 선택하도록 유도
- 1(페널티를 주지 않음)보다 큰 값을 사용, 1.5가 강한 페널티(텍스트 균형이 맞지 않을 수 있음)
- 특정 단어의 원래 확률이 P라면 반복될 때 확률은 P/1.2 로 줄어듦
- 예) 오늘 날씨는 좋습니다. 오늘 날씨는 맑습니다.
=> 오늘 날씨는 좋습니다. 하늘은 맑고 기온은 따뜻합니다.
- do_sample : 텍스트 생성 과정에서 샘플링 방법을 설정. True일 경우 모델은 확률 분포에서 토큰을 무작위로 선택함. 텍스트 생성에 다양성과 창의성을 더할 수 있음
- 샘플링(Sampling)
- 모델이 예측한 확률분포에서 무작위로 토큰을 선택하는 방식
- 다양한 결과를 생성할 수 있으며, 예측할 수 없는 창의적인 텍스트를 생성
- 품질이 일관되지 않을 수 있음. 엉뚱하거나 의미없는 결과를 생성할 가능성이 있음
- 빔 서치(Beam Search)
- 여러 경로를 동시에 고려하여 가장 높은 점수를 가진 경로를 선택하는 방식
- 덜 창의저이고 반복적인 텍스트를 생성할 수 있음. 계산 비용이 높음
- 샘플링의 세부 설정
- temperature
- 확률 분로를 변화시켜 예측된 확률값을 부드럽게 하거나 날카롭게 만듦
- 높은 값( 예 : 1.5 ) : 확률 분포를 평탄하게 만들어 무작위성이 높아짐
- 낮은 값( 예 : 0.6 ) : 확률 분포를 날카롭게 만들어 특정단어를 결정론적으로 만듦
- top-k 샘플링
- 확률 분포에서 상위 k개의 후보만 고려하는 방법
- 상위 k개의 후보 토큰만 남기고 나머지는 무시한 후, 해당 사이에서 샘플링
- top-p 샘플링
- 누적 확률이 p이상이 되는 후보군을 고려하는 방법
- 후보토큰을 누적 확률이 p가 되는 지점까지 포함시킨 후, 해당 사이에서 샘플링
- temperature
- 샘플링(Sampling)
◼ repetition_penalty : 1.5 / do_sample : False 로 변경
print(pipe("안녕하세요", repetition_penalty=1.5, do_sample=False, eos_token_id=1, early_stopping=True, max_new_tokens=128))
|
[{'generated_text': '안녕하세요.\n네~ 네. 오늘 첫 번째 소식입니다. 이~ 문재인 대통령이 어제 신년사를 발표했는데요. 어~ 문 대통령은 이제 우리 사회가 직면한 가장 큰 도전은 경제라고 강조했습니다마는 그중에서 특히 소득 불평등 문제를 집중적으로 거론하면서 양극화 해소를 위한 노력을 기울여 나가겠다 라고 밝혔습니다만 과연 어떤 내용이 담길지 주목됩니다. 자 먼저 일 분 뒤에 바로 이어서는 지금 현재 한국 사회에서 벌어지고 있는 여러 가지 사회 문제들을 짚어보겠습니다. 아시다시피 이천십오 년 사 월 십팔 일에 있었던 촛불 집회가 있었습니다만은 당시 박근혜 대통령 탄핵에 대한 국민적 열망이 컸고'}] |
'AI > 자연어처리' 카테고리의 다른 글
18. PLM을 이용한 실습 (0) | 2024.07.12 |
---|---|
17. 자연어처리를 위한 모델 학습 (0) | 2024.07.11 |
15. 문장임베딩 | BERT (1) | 2024.07.05 |
14. 문장 임베딩 | ELmo / Transformer (1) | 2024.07.04 |
13. 문장 임베딩 | Attention Meshanism (0) | 2024.07.04 |