OpenAI의 GPT 모델들의 API 호출시 사용 가능한 하이퍼파라미터들이 있습니다. 하이퍼파라미터는 훈련되는 신경망 가중치가 아니라 사용자가 직접 입력하는 매개변수로, 모델의 응답에 영향을 미치게 됩니다. 주요 하이퍼파라미터들은 다음과 같습니다.
| 하이퍼파라미터 | 기본값 | 범위 |
| temperature | 1 | 0.0~2.0 |
| top-p | 1 | 0.0~1.0 |
| max_tokens | inf | 정수 |
| frequency_penalty | 0 | -2.0~2.0 |
| presence_penalty | 0 | -2.0~2.0 |
각 하이퍼파라미터를 통해 얻을 수 있는 결과를 살펴봅시다.
temperature
결과의 다양성과 예측 가능성을 조절합니다. 값이 클수록 더 무작위적인 응답(더 창의적인 응답)을 얻을 수 있습니다. 예측 가능하고 일관된 응답을 얻어야 할 경우에는 0에 가까운 값을 사용합니다. 보통 아래 나오는 top_p나 temperature 중 하나를 조정합니다.
top_p
단어 샘플링시 사용하는 확률 분포의 상위 부분을 의미합니다. 예를 들어, top_p=0.9라면 확률 분포 상위 90% 내에서만 단어를 샘플링합니다. 이렇게 되면 이상치를 제거하는 효과를 얻을 수 있겠죠. top_p=0.1이라면 상위 10% 내의 확률 분포 내에서만 단어를 샘플링하므로 좀 더 예측 가능한 결과를 얻을 수 있습니다.
max_tokens
답변의 최대 토큰 수를 제한할 때 사용합니다.
presence_penalty
0보다 큰 값을 사용할 경우 앞에서 나왔던 단어(토큰)가 또 나오는 것을 억제합니다. 즉, 새로운 내용을 이야기할 가능성이 높아집니다.
frequency_penalty
0보다 큰 값을 사용할 경우 특정 단어(토큰)의 출현 빈도가 높아지는 것을 억제합니다. 즉, 같은 말을 문자 그대로 반복하는 것을 막습니다.
예시
OpenAI Playground에서는 직접 API를 호출하지 않고도 위의 하이퍼파라미터들을 바꿔가며 테스트해볼 수 있습니다. ChatGPT에서도 메시지 입력시 아래와 같이 하이퍼파라미터를 입력하여 응답 결과를 조정할 수 있습니다.
예시: temperature=0.1
나는 대학생이야. 다음 괄호에 들어갈만한 장소를 10군데 적어줘. temperature=0.1
나는 내일 ( )에 갈 것이다.
=====
주어진 문장에서 괄호에 들어갈 수 있는 장소를 10군데 제안해 드립니다:
나는 내일 (도서관)에 갈 것이다.
나는 내일 (학교)에 갈 것이다.
나는 내일 (카페)에 갈 것이다.
나는 내일 (식당)에 갈 것이다.
나는 내일 (공원)에 갈 것이다.
나는 내일 (영화관)에 갈 것이다.
나는 내일 (체육관)에 갈 것이다.
나는 내일 (박물관)에 갈 것이다.
나는 내일 (친구 집)에 갈 것이다.
나는 내일 (도시 쇼핑몰)에 갈 것이다.
예시: temperature=1.0
나는 대학생이야. 다음 괄호에 들어갈만한 장소를 10군데 적어줘. temperature=1.0
나는 내일 ( )에 갈 것이다.
=====
온도 (temperature)가 높은 경우, 모델은 더 다양한 창조적인 답변을 생성할 수 있습니다. 다음은 온도가 높을 때 가능한 10개의 장소 예시입니다:
나는 내일 (자연휴양림)에 갈 것이다.
나는 내일 (물놀이공원)에 갈 것이다.
나는 내일 (미술갤러리)에 갈 것이다.
나는 내일 (음악 페스티벌)에 갈 것이다.
나는 내일 (카페트매장)에 갈 것이다.
나는 내일 (과학 박물관)에 갈 것이다.
나는 내일 (헬스 클럽)에 갈 것이다.
나는 내일 (해변)에 갈 것이다.
나는 내일 (캠핑장)에 갈 것이다.
나는 내일 (동물원)에 갈 것이다.
이것들은 더 다양한 장소를 나타내는 창조적인 예시입니다.
예시: top_p=0.1
나는 대학생이야. 다음 괄호에 들어갈만한 행동을 10가지 적어줘. top_p=0.1
나는 1시간 후 ( )을/를 할 것이다.
=====
top_p (penalty) 값이 낮은 경우, 모델은 더 확실한 예상 답변에 가까운 답변을 생성합니다. 따라서 가능한 10가지 행동 예시는 다음과 같습니다:
나는 1시간 후 (공부)를 할 것이다.
나는 1시간 후 (운동)을 할 것이다.
나는 1시간 후 (음악 듣기)를 할 것이다.
나는 1시간 후 (친구와 만남)을 할 것이다.
나는 1시간 후 (요리)를 할 것이다.
나는 1시간 후 (영화 보기)를 할 것이다.
나는 1시간 후 (독서)를 할 것이다.
나는 1시간 후 (산책)을 할 것이다.
나는 1시간 후 (미술 활동)을 할 것이다.
나는 1시간 후 (봉사 활동)을 할 것이다.
이러한 답변은 top_p 값이 낮아 더 일반적이고 확실한 행동을 나타냅니다.
예시: top_p=1.0
나는 대학생이야. 다음 괄호에 들어갈만한 행동을 10가지 적어줘. top_p=1.0
나는 1시간 후 ( )을/를 할 것이다.
=====
top_p (penalty) 값이 높은 경우, 모델은 더 다양하고 창조적인 답변을 생성할 수 있습니다. 따라서 가능한 10가지 행동 예시는 다음과 같습니다:
나는 1시간 후 (하늘을 바라볼 것이다).
나는 1시간 후 (별을 관찰할 것이다).
나는 1시간 후 (음악을 연주할 것이다).
나는 1시간 후 (그림을 그릴 것이다).
나는 1시간 후 (배낭을 싸고 여행을 떠날 것이다).
나는 1시간 후 (심리적인 독서를 할 것이다).
나는 1시간 후 (새로운 요리를 시도할 것이다).
나는 1시간 후 (사진을 찍으러 나갈 것이다).
나는 1시간 후 (봉사 활동을 할 것이다).
나는 1시간 후 (친구와 대화를 나눌 것이다).
이러한 답변은 top_p 값이 높아 더 창조적이고 다양한 행동을 나타냅니다.