Top-p 샘플링은 핵 샘플링이라고도 하며, 자기회귀 확률 모델에서 시퀀스를 생성하는 데 사용되는 확률적 디코딩 전략이다. 특히 자연어 생성에서 두드러지게 사용된다. 이 기법은 2019년 Ari Holtzman, Yejin Choi와 동료들이 빔 서치와 같은 결정론적 디코딩 방법이 생성하는 반복적이고 무의미한 텍스트 문제를 해결하기 위해 처음 제안했다. 이후 이 기법은 단백질 공학과 지구물리학 같은 분야에도 적용되었다.
Top-p 샘플링에서는 확률 임계값 p가 설정되며, 누적 확률이 p를 초과하는 가장 작은 고확률 후보 집합에서만 다음 항목을 샘플링한다. 이 방법은 모델의 확신도에 따라 후보 풀의 크기를 조정하므로, 고정된 수의 후보를 샘플링하는 top-k 샘플링보다 더 유연하다. 이러한 효과성 덕분에 top-p 샘플링은 많은 대규모 언어 모델에서 널리 사용된다.
기법
텍스트 생성의 각 단계에서 언어 모델은 다음 토큰에 대한 전체 어휘의 확률 분포를 계산한다. 가장 높은 확률의 토큰만 선택하는 탐욕 검색이나 제한된 고확률 시퀀스 집합을 고려하는 빔 서치 같은 결정론적 방법은 종종 지루하고 반복적이며 비문법적인 텍스트를 생성한다. Top-p 샘플링은 확률적 선택을 도입하여 이러한 문제를 피하면서도 출력 품질을 유지한다.
핵심 아이디어는 각 단계에서 핵이라고 불리는 더 작고 신뢰할 수 있는 토큰 집합에서 샘플링하는 것이다. 이 핵은 누적 확률이 임계값 p를 막 넘는 가장 가능성 높은 토큰들로 구성된다. 모델이 다음 토큰에 대해 확신할 때(예: 한 토큰의 확률이 매우 높을 때) 핵은 작아진다. 모델이 불확실할 때(확률이 더 고르게 분포될 때) 핵은 커져서 더 다양한 선택이 가능해진다.
각 단계의 과정은 다음과 같다:
- 모델은 모든 가능한 다음 토큰에 대한 확률을 계산한다.
- 토큰들은 확률 내림차순으로 정렬된다.
- 누적 확률이 미리 정의된 임계값 p를 초과할 때까지 상위 토큰들을 선택하여 핵을 형성한다.
- 핵 안에 있는 토큰들의 확률은 합이 1이 되도록 재조정된다. 핵 밖의 토큰들은 모두 버려진다(확률 0).
- 최종 다음 토큰은 이 새로운 더 작은 분포에서 무작위로 샘플링된다.
공식적으로, 핵 V^(p) ⊆ V는 다음 조건을 만족하는 가장 작은 토큰 집합으로 정의된다: V^(p)에 있는 모든 x에 대한 P(x | x_1, ..., x_{t-1})의 합이 p보다 크거나 같다. 여기서 P(x | x_1, ..., x_{t-1})는 앞선 토큰들 x_1, ..., x_{t-1}이 주어졌을 때 토큰 x의 확률을 나타낸다.
예시
어떤 단계에서 언어 모델이 다섯 개의 단어로 구성된 어휘를 가지고 있다고 가정해 보자: [the, a, cat, dog, eats]. 모델이 다음과 같은 확률을 출력했다고 하자:
- the: 0.5
- a: 0.2
- cat: 0.1
- dog: 0.1
- eats: 0.1
p = 0.8로 설정하면:
- 토큰들은 확률순으로 정렬된다: [the, a, cat, dog, eats].
- 누적 확률이 계산된다:
- the: 0.5
- the + a: 0.5 + 0.2 = 0.7
- the + a + cat: 0.7 + 0.1 = 0.8
- 누적 확률이 0.8 이상인 가장 작은 집합은 V^(0.8) = {the, a, cat}이다.
- 이 집합의 확률은 합이 1이 되도록 재조정된다:
- P(the) = 0.5 / 0.8 = 0.625
- P(a) = 0.2 / 0.8 = 0.25
- P(cat) = 0.1 / 0.8 = 0.125
- 다음 토큰은 이 새로운 분포에서 샘플링되며, dog와 eats는 선택될 확률이 0%가 된다.
Top-k 샘플링과의 비교
Top-k 샘플링은 유사한 기법으로, 가장 가능성 높은 k개의 토큰으로 후보 풀을 제한한다. Top-p 샘플링의 주요 장점은 적응성이다. 모델이 다음 토큰에 대해 매우 확신할 때(확률 분포가 뾰족할 때) 핵 V^(p)는 매우 작아질 수 있다. 모델이 불확실할 때(확률 분포가 평평할 때) 핵은 훨씬 커져 더 다양한 출력을 허용한다. 반면 top-k 샘플링은 항상 고정된 수의 토큰을 샘플링하므로, 문맥에 따라 너무 제한적이거나 너무 허용적일 수 있다.
응용 분야
Top-p 샘플링은 대규모 언어 모델의 디코딩 전략으로 가장 유명하지만, 확률적 시퀀스 데이터를 생성하거나 분석하는 다른 과학 분야에도 적용되었다.
자연어 생성
원래의 자연어 생성 분야에서 top-p 샘플링은 결정론적 방법보다 더 다양하고 일관된 텍스트를 생성하는 능력으로 평가받는다. 예를 들어 자동 질문 생성 작업에서 샘플 다양성이 중요할 때 유용한 것으로 나타났다. 질문 answering 모델을 위한 효과적인 훈련 데이터를 만드는 데에도 도움이 된다.
약물 및 단백질 설계
계산 생물학에서 top-p 샘플링은 새로운 분자 및 단백질 서열을 생성하는 데 사용된다. 예를 들어, de novo 약물 설계에서 화학 언어 모델은 분자 구조로 훈련된 후 핵 샘플링을 사용하여 새롭고 유효한 약물 후보의 집중 라이브러리를 생성할 수 있다. 마찬가지로 단백질 공학에서 언어 모델은 단백질 서열로 훈련된 후 top-p 샘플링을 사용하여 원하는 특성을 가진 새로운 서열을 제안할 수 있으며, 자연에서 발견되는 서열 공간을 넘어 탐색 범위를 확장한다.
지구물리학
지구물리학에서 top-p 샘플링은 지질학적 서열을 모델링하거나 합성 지진 데이터를 생성하는 데 적용되었다. 확률적 모델에서 샘플링함으로써 연구자들은 다양한 지질학적 시나리오를 탐색하고 불확실성을 정량화할 수 있으며, 이는 지진 해석과 같은 작업에 유용하다.
다른 디코딩 방법과의 관계
Top-p 샘플링은 자기회귀 모델과 함께 사용되는 여러 확률적 디코딩 전략 중 하나이다. 온도 스케일링과 같은 다른 기법을 보완한다. 온도 스케일링은 샘플링 전에 확률 분포의 sharpness를 조정한다. 낮은 온도는 분포를 더 뾰족하게 만들어 더 보수적인 출력을 만들고, 높은 온도는 분포를 더 평평하게 만들어 더 다양한 출력을 만든다. Top-p는 종종 온도 스케일링과 결합되어 생성 텍스트의 다양성과 품질을 미세 조정한다. 예를 들어, 낮은 온도는 분포를 더 뾰족하게 만들고, top-p는 더 작은 핵을 선택하여 결과적으로 더 보수적인 출력을 생성한다.
구현 고려 사항
실제로 top-p 샘플링은 각 생성 단계에서 확률 분포를 정렬해야 하므로 탐욕 검색에 비해 계산 오버헤드가 추가된다. 그러나 많은 응용 분야에서 출력 품질의 이점이 이러한 비용보다 크다. PyTorch와 TensorFlow 같은 프레임워크의 효율적인 구현은 누적 합 연산과 마스킹을 사용하여 이 과정을 최적화한다. 임계값 p는 하이퍼파라미터로, 많은 언어 생성 작업에서 일반적인 값은 0.9에서 0.95 사이이다. 그러나 최적의 값은 특정 모델과 응용 분야에 따라 다르다.
영향 및 채택
2019년 도입 이후 top-p 샘플링은 많은 대규모 언어 모델의 디코딩 전략에서 표준 구성 요소가 되었다. OpenAI, Anthropic, Google DeepMind가 개발한 모델을 포함한다. 이는 종종 텍스트 생성 API와 오픈소스 라이브러리에서 기본 샘플링 방법으로 사용된다. 이 기법의 적응성 덕분에 생성 AI 시스템에서 창의성과 일관성의 균형을 맞추는 핵심 도구가 되었으며, 챗봇, 콘텐츠 생성기 및 인간과 유사한 텍스트를 생성하는 기타 응용 프로그램의 동작에 영향을 미쳤다.