대규모 언어 모델의 맥락에서 temperature는 생성된 텍스트의 무작위성을 제어하는 하이퍼파라미터입니다. 이는 디코딩 단계에서, 모델이 다음 가능한 토큰에 대한 확률 분포를 계산한 후 최종 토큰이 선택되기 전에 적용됩니다. 로짓(정규화되지 않은 원시 점수)을 소프트맥스 함수를 통과시키기 전에 스케일링함으로써, temperature는 확률 분포를 재형성하여 더 뾰족하게(결정론적으로) 또는 더 평평하게(다양하게) 만듭니다. 이 파라미터는 일반적으로 양의 부동소수점 숫자이며, 기본값 1.0은 모델의 원래 분포를 나타냅니다. 1.0 미만의 값은 분포를 날카롭게 하여 높은 확률의 토큰을 선호하고, 1.0 초과의 값은 분포를 평평하게 하여 낮은 확률의 토큰이 선택될 기회를 더 많이 줍니다. Temperature는 생성형 AI 시스템의 핵심 제어 요소로, OpenAI, Anthropic, Google DeepMind와 같은 제공업체의 API에서 창의적 출력과 사실적 출력을 조정하는 데 널리 사용됩니다.
Temperature는 다른 샘플링 전략과 개념적으로 구별되지만, 종종 함께 결합됩니다. top-k 샘플링은 후보 풀을 가장 가능성이 높은 k개의 토큰으로 제한하고, top-p 샘플링(핵 샘플링이라고도 함)은 누적 확률이 임계값을 초과하는 가장 작은 집합에서 선택하는 반면, temperature는 어떤 절단이 발생하기 전에 전체 분포를 수정합니다. 실제로 개발자는 창의성과 일관성의 균형을 맞추기 위해 temperature를 top-p와 함께 설정하는 경우가 많습니다. 예를 들어, 낮은 temperature(예: 0.2)와 적당한 top-p(예: 0.9)는 요약과 같은 사실적 작업에 일반적이며, 높은 temperature(예: 0.8)와 더 높은 top-p(예: 0.95)는 창의적 글쓰기나 브레인스토밍에 사용됩니다.
수학적 공식
Temperature의 효과는 로짓에 대한 스케일링 연산을 통해 정의됩니다. 어휘의 각 토큰 \( i \)에 대한 모델의 로짓 \( z_i \)가 주어지면, temperature로 스케일된 확률 \( p_i \)는 다음과 같이 계산됩니다:
\[ p_i = \frac{\exp(z_i / T)}{\sum_j \exp(z_j / T)} \]
여기서 \( T \)는 temperature 값입니다. \( T = 1 \)일 때, 이 식은 표준 소프트맥스로 축소됩니다. \( T \)가 0에 가까워질수록 분포는 가장 높은 로짓을 가진 토큰에 점 질량으로 수렴하여 모델을 탐욕적이고 결정론적으로 만듭니다. \( T \)가 무한대로 증가하면 분포는 모든 토큰에 대한 균등 분포에 접근하여 최대한 무작위한 출력을 생성합니다. 실제로 temperature는 극단적인 값이 무의미한 텍스트를 생성하기 때문에 2.0 이상으로 설정되는 경우는 드물며, 0.1 미만의 값은 종종 탐욕적 디코딩과 동일하게 취급됩니다. 스케일링은 어떤 샘플링 방법보다 먼저 적용되므로, 최종 선택은 수정된 분포에서 확률적 샘플링을 여전히 사용할 수 있습니다.
역사적 기원
확률적 모델에서 temperature의 개념은 현대 딥러닝보다 앞섭니다. 이는 통계 물리학에서 도입되었으며, 여기서 temperature는 볼츠만 분포의 날카로움을 제어합니다. 기계 학습에서 temperature 스케일링은 신경망의 신뢰도 점수 보정 맥락에서 대중화되었으며, 특히 2017년 Chuan Guo와 동료들의 논문 "On Calibration of Modern Neural Networks"에서 단일 temperature 파라미터를 사용하여 로짓을 재스케일링하여 불확실성 추정을 개선했습니다. 이 아이디어는 시퀀스 생성, 특히 시퀀스-투-시퀀스 모델과 트랜스포머에서 출력 변동성을 제어하는 실용적인 도구로 빠르게 채택되었습니다. TensorFlow 및 PyTorch와 같은 기계 학습 라이브러리에서의 초기 채택은 temperature를 샘플링 함수의 표준 인수로 만들었으며, 많은 AI 텍스트 생성 인터페이스에서 기본 파라미터가 되었습니다.
언어 모델 추론에서의 역할
추론 중에 언어 모델은 출력 시퀀스의 각 위치에 대해 어휘에 대한 확률 분포를 생성합니다. temperature 없이는 모델이 항상 가장 가능성이 높은 토큰을 선택하여 반복적이고 종종 평범한 텍스트를 생성합니다. temperature는 다양성이 필요한 작업(예: 대화, 이야기 생성, 여러 유효한 연속이 존재하는 코드 완성)에 필수적인 확률성을 도입합니다. 딥러닝 프레임워크에서 temperature는 훈련 중이 아닌 디코딩 단계에서 적용되므로 모델의 학습된 가중치에 영향을 미치지 않습니다. 이는 재훈련 없이 요청별로 변경할 수 있는 가벼운 런타임 전용 조정입니다.
예를 들어, OpenAI API에서 temperature 파라미터는 0에서 2 사이의 값을 허용하며 기본값은 1.0입니다. 값 0은 모델을 결정론적으로 만들어 항상 가장 높은 확률의 토큰을 선택하고, 더 높은 값은 다양성을 증가시킵니다. 마찬가지로 Anthropic의 Claude 모델은 API에서 temperature를 노출하며, Google DeepMind의 Gemini 모델은 생성 파라미터로 포함합니다. 이러한 제공업체는 temperature가 top-p 및 top-k와 같은 다른 샘플링 파라미터와 상호 작용하며, 단독으로 조정하는 대신 함께 조정할 것을 권장합니다.
다른 샘플링 방법과의 관계
Temperature는 출력 분포를 형성하는 데 사용되는 여러 기술 중 하나입니다. Top-k 샘플링은 다음 토큰을 가장 가능성이 높은 k개의 옵션으로 제한하여 높은 temperature에서도 매우 낮은 확률의 토큰이 선택되는 것을 방지합니다. Top-p 샘플링은 누적 확률이 임계값 p를 초과하는 가장 작은 토큰 집합을 동적으로 선택하여 고정된 k보다 더 적응적인 절단을 제공합니다. Temperature는 이러한 절단 방법과 직교합니다: 분포의 모양을 변경하는 반면, top-k와 top-p는 지지 집합을 변경합니다. 실제로 이들은 종종 함께 사용됩니다. 예를 들어, 창의적 작업의 일반적인 조합은 temperature 0.7과 top-p 0.9이며, 코드 생성의 경우 오류를 최소화하기 위해 temperature 0.2와 top-p 0.1이 일반적입니다.
또 다른 관련 개념은 모델 보정 맥락에서의 temperature 스케일링으로, 검증 세트에서 단일 temperature를 학습하여 신뢰도 추정을 개선합니다. 이는 생성 시 사용되는 샘플링 temperature와 구별되지만, 둘 다 동일한 수학적 연산을 공유합니다. 보정 temperature는 일반적으로 1.0에 가깝고 훈련 후 고정되는 반면, 샘플링 temperature는 사용자가 제어하는 하이퍼파라미터입니다.
실용적 지침과 트레이드오프
적절한 temperature를 선택하는 것은 애플리케이션에 따라 다릅니다. 질문 응답, 요약 또는 데이터 추출과 같은 사실적 정확성이 필요한 작업의 경우, 환각을 줄이고 일관된 출력을 생성하기 위해 낮은 temperature(0.1~0.3)가 권장됩니다. 창의적 글쓰기, 브레인스토밍 또는 여러 후보 솔루션 생성의 경우, 더 높은 temperature(0.7~1.0)가 새로움과 변형을 장려합니다. 극도로 높은 temperature(1.5 이상)는 모델이 문법 구조와 의미적 일관성을 잃기 때문에 종종 비일관적인 텍스트로 이어집니다. 개발자는 temperature가 재현성에 영향을 미친다는 점도 고려해야 합니다: temperature를 0으로 설정하면 결정론적 출력을 얻을 수 있어 테스트와 디버깅에 유용하지만, 더 높은 temperature에서의 확률적 샘플링은 동일한 프롬프트가 실행마다 다른 결과를 생성할 수 있어 안정적인 출력이 필요한 프로덕션 시스템에서는 바람직하지 않을 수 있습니다.
Temperature는 또한 모델의 훈련 분포와 상호 작용합니다. 다양한 데이터로 훈련된 모델은 좁은 도메인으로 훈련된 모델보다 더 높은 temperature를 더 잘 견딜 수 있습니다. 예를 들어, 법률 문서에 미세 조정된 모델은 temperature 1.0에서 무의미한 텍스트를 생성할 수 있지만, 범용 모델은 이를 우아하게 처리합니다. 2020년대 초반 기준으로, 대부분의 주요 언어 모델 제공업체는 temperature를 표준 API 파라미터로 채택했으며, Hugging Face의 Transformers와 같은 오픈 소스 라이브러리에서도 구현되어 generate()와 같은 생성 함수에 전달됩니다.
소프트웨어에서의 구현
실제로 temperature는 언어 모델의 디코딩 루프에서 구현됩니다. 모델 순방향 패스가 로짓을 생성한 후, 코드는 이를 temperature 값으로 나누고 소프트맥스를 적용한 다음 결과 분포에서 샘플링합니다. 많은 프레임워크는 do_sample 플래그도 지원하며, 이 플래그가 True로 설정되면 temperature를 사용한 확률적 샘플링을 활성화하고, False이면 temperature와 관계없이 탐욕적 디코딩을 사용합니다. 예를 들어, Hugging Face Transformers 라이브러리에서 temperature 인수는 do_sample=True일 때만 사용됩니다. 이 설계는 개발자가 결정론적 모드와 확률적 모드 사이를 쉽게 전환할 수 있게 합니다.
AWS Trainium 및 Groq과 같은 하드웨어 가속기는 최적화된 추론 경로를 제공하지만, temperature 스케일링은 무시할 수 있는 오버헤드를 추가하는 간단한 산술 연산입니다. 주요 계산 비용은 샘플링 단계가 아닌 모델의 순방향 패스에 남아 있습니다. 따라서 temperature는 상당한 지연 시간 영향 없이 즉시 조정할 수 있어 대화형 애플리케이션에 실용적인 도구가 됩니다.
한계와 비판
Temperature는 출력 품질을 제어하는 둔감한 도구입니다. 이는 일관성이나 사실적 정확성을 보장하지 않으며, 단지 확률 분포를 변경할 뿐입니다. 높은 temperature는 창의적이지만 거짓된 진술을 생성할 수 있고, 낮은 temperature는 반복적이거나 지나치게 보수적인 텍스트를 생성할 수 있습니다. 연구자들은 temperature가 빔 서치나 제약 디코딩과 같은 더 나은 디코딩 전략을 대체할 수 없다고 지적합니다. 이러한 전략은 구조적 제약을 강제합니다. 또한 temperature는 모든 토큰에 균일하게 적용되는 전역 파라미터이지만, 일부 맥락에서는 다른 수준의 무작위성이 필요할 수 있습니다 - 예를 들어, 코드 구문에는 결정론적이지만 주석에는 창의적이어야 하는 경우입니다. 2020년대 중반 기준으로, 대비 검색이나 동적 temperature 조정과 같은 더 고급 방법이 제안되었지만, 상업용 API에서 기본 제어로 temperature를 대체한 것은 없습니다.
미래 방향
토큰의 예측 불확실성이나 작업에 따라 값을 조정하는 적응형 temperature 체계에 대한 연구가 계속되고 있습니다. 일부 연구는 훈련 중 temperature 일정을 학습하는 것을 탐구했지만, 아직 표준은 아닙니다. 더 넓은 생성형 AI 분야에서 temperature는 주요 사용자 대면 파라미터로 남아 있으며, 그 단순성은 강점이자 약점입니다. 모델이 더 커지고 더 강력해짐에 따라 더 세밀한 제어의 필요성이 새로운 파라미터로 이어질 수 있지만, temperature는 언어 모델 추론의 기본 개념으로 지속될 가능성이 높습니다.