728x90
GPT-2, GPT-3 : 수백만 개의 웹 페이지에서 단순히 다음 언어를 예측하는 방법을 학습하여 다양한 종류의 입력 프롬프트를 바탕으로 텍스트를 생성
언어모델의 학습
- 문맥 학습(하나의 문장에 대해 다음단어 예측을 학습) + 추론학습
일관성 있는 텍스트 생성의 어려움
- 사전훈련학습 or 지도학습 기반의 미세 튜닝 -> 작업에 특화된 헤드에서 예측한다
- 확률을 기반으로한 텍스트 생성 -> 디코딩 방법이 필요
디코딩 수행
- 주어진 시퀀스를 추정하여 다음에 올 단어를 확률적으로 추정한다 -> 확률의 연쇄법칙을 사용하여 조건부 확률의 곱으로 나타냄 => 이전 시퀀스를 기반으로 다음 단어를 예측한다
- 대부분의 디코딩 방법은 다음단어가 될 가장 높은 확률을 가지는 토큰을 선택한다. 이 때 선택한 확률를 곱하여 전체적으로 확률이 가장 높은 시퀀스를 찾는다 => 가능한 모든 시퀀스를 평가해야함
그리드 서치 디코딩
- 각 타임스텝에서 가장 확률이 큰 시퀀스를 탐욕적으로 선택한다
- 반복적인 출력 시퀀스를 생성하는 경향이 있음 => 그리디 서치 알고지름의 보편적 문제이며 최적의 솔류션을 만들기 어려움
빔 서치 디코딩
- 첫 스텝에서 계산한 확률로 가장 높은 상위 b개의 다음 토큰을 추적한다 eos에 도달할 때 까지
- 확률이 아닌 로그 확률을 사용하여 시퀀스 점수를 매긴다 -> why? 시퀀스 전체의 학률를 계산할 때 곱해야하는데 이러면 값이 너무 작아짐 -> log를 사용하여 곱을 합으로 변형시켜 보여준다
그리드 VS 빔 서치
- 트랜스 포머 모델은 입력 토큰이 주어지면 다음 토큰에 대한 정규화 되지 않은 로짓을 반환한다
- 로짓을 정규화 -> 시퀀스와 각 토큰을 위해 전체 어휘 사전에 대한 확률 분포를 만든다 -> 시퀀스에 있는 토큰 확률만 선택한다
- 입력 시퀀스에 대한 로그 확률은 무시하고(모델은 다음 토큰을 예측하기 때문) 로짓과 레이블 정렬이 중요하다
- 마지막 로짓도 정답이 없어 마지막 로짓도 제외
- 결과
- 그리디보다 빔 서치가 더 높은 로그 확률을 가지지만 빔 서치는 각 빔에 대해 병렬적으로 시퀀스를 생성하여 생성과정에서 시간이 걸린다
- 그리디, 빔 서치 모두 텍스트가 반복 생성되는 문제가 있다 -> no_repeat_ngram_size매개변수로 패널티를 부과하여 반복 생성을 줄이고자한다 => 적용 후 적체 확률은 낮아졌지만 더 균형있는 텍스트가 생성되었다.
샘플링 방법
- 가장 간단한 방법 : 각 타임스텝 내에 모델이 출력한 전체 어휘사전의 확률 분포에서 랜덤하게 샘플링 하는 방법
- 방법1) T : 로짓의 스케일을 조정하는 온도 파라미터를 추가하여 출력의 다양성 제어 (예 온도가 낮으면 드문 토큰을 억제한다-> 창의적인 답변 줄어든다)
- T<<1 -> 드문 토큰을 억제한다 (낮은온도, 일관성)
- T>>1 -> 토큰의 확률이 동일해져 다양한 토큰 생성 가능 (높은 온도, 다양성)
- 방법2) 토큰의 확률
- 확률이 낮은 단어를 제외하고 샘플링을 진행한다
- top-p 샘플링(누적 확률을 사용, 선택되는 토큰의 갯수가 동적)
- 각 토큰의 확률을 계산 -> 확률에 따라 분포를 확인 -> 어디서 컷오프를 할지 조정(동적) -> 확률에 따라 내림차순으로 토큰 정렬 -> 선택한 토큰의 확률값이 95%(사용자 지정)에 도달 할 때 까지 토큰을 추가
- generate(~~, top-p=0.90)
- top-k 샘플링(확률이 높은 k개의 토큰 선택, 선택할 토큰의 갯수 지정)
- 토큰별 확률 계산 -> 확률이 높은 k개의 토큰에서만 샘플링을 진행
디코딩 방법 선택
- 정답은 없음, 여러 실험(혼합, 온도조절 등등)을 통해서 가장 적합한 것으로 ㄱ
728x90
반응형
'Deep Learning > 트랜스포머를 활용한 자연어 처리' 카테고리의 다른 글
[chapter 6] 요약 (0) | 2024.06.22 |
---|---|
[Chapter 4] NER (1) | 2024.06.01 |
[Chapter 3] 트랜스포머 (0) | 2024.05.22 |
[Chapter 3] 코드_1 (0) | 2024.05.17 |