𝘚𝘭𝘰𝘸 𝘣𝘶𝘵 𝘴𝘵𝘦𝘢𝘥𝘺

[LLM] LLM의 파라미터, temperature 이해하기 + temperature 설정값 별 답변 확인하기 본문

machine learning

[LLM] LLM의 파라미터, temperature 이해하기 + temperature 설정값 별 답변 확인하기

.23 2025. 3. 14. 14:04

Temperature?

언어 모델이 텍스트를 생성할 때 랜덤성을 제어하는 하이퍼 파라미터로, 모델이 생성할 다음 단어의 확률 분포를 조정한다.

 

값의 범위는 일반적으로 [0, 1]을 갖는다.

낮은 값일수록 모델이 더 예측 가능한 출력을 생성하고, 높은 값일 수록 모델이 더 다양하고 창의적인 출력을 생성한다.

 

이론적으로 1.0 이상의 값을 가질 수 있으나, 값을 키워 다양성을 늘릴 수록 무작위성도 함께 증가하기 때문에 단순 랜덤 텍스트 생성에 그칠 수 있다. 또한, 한국어의 경우 1.0 이상의 값으로 넘어가면 맞춤법이 달라질 수 있다.

0에 가까울 수록 정해진 답변을 수행하기 때문에, 일반적으로 0 ~ 0.5 이하의 값을 사용하는 것을 권장한다.

 

 

근데

1 이상의 자유도를 가질 때 답변이 어떻게 달라지는지 궁금해서 실험해봤다.

 

프롬프트
# 프롬프트 준비
messages = [
    {'role':'system', 'content':'당신은 건강한 식단과 식이의 전문가입니다.'},
    {'role':'user', 'content':'''건강한 아침 식사의 조합 예시를 5개 추천해 주세요.'''}
]

 

사용 모델은 GPT-4o 모델을 사용하였고,

이전에 실습하면서 썼던 자료가 있어 프롬프트는 이전 실습 자료를 활용하였다.

 

결과

 

Temperature = 0

# LLM 호출 (gpt-4o 사용, 필요시 다른 모델로 변경 가능)
response = client.chat.completions.create(
    model="gpt-4o",
    messages=messages,
    max_tokens=512,
    temperature=0
)

# 답변 출력
print(response.choices[0].message.content)

 

건강한 아침 식사는 하루를 활기차게 시작하는 데 중요한 역할을 합니다. 다음은 다양한 영양소를 포함한 건강한 아침 식사 조합 예시 5가지입니다:

1. **오트밀과 과일**
   - 재료: 귀리, 아몬드 우유 또는 일반 우유, 바나나, 블루베리, 아몬드 슬라이스
   - 설명: 귀리를 아몬드 우유에 끓여 부드럽게 만든 후, 바나나와 블루베리를 얹고 아몬드 슬라이스를 뿌려 단백질과 섬유질을 보충합니다.

2. **그릭 요거트 파르페**
   - 재료: 그릭 요거트, 그래놀라, 딸기, 꿀
   - 설명: 그릭 요거트에 그래놀라와 신선한 딸기를 층층이 쌓고 꿀을 약간 뿌려 단맛을 더합니다. 단백질과 프로바이오틱스를 함께 섭취할 수 있습니다.

3. **아보카도 토스트**
   - 재료: 통곡물 빵, 아보카도, 토마토 슬라이스, 계란(삶거나 스크램블), 소금, 후추
   - 설명: 통곡물 빵 위에 으깬 아보카도를 바르고, 토마토 슬라이스와 계란을 올려 단백질과 건강한 지방을 섭취합니다.

4. **스무디 볼**
   - 재료: 시금치, 바나나, 아몬드 우유, 치아씨드, 코코넛 플레이크, 딸기
   - 설명: 시금치와 바나나를 아몬드 우유와 함께 블렌더에 갈아 스무디를 만들고, 치아씨드와 코코넛 플레이크, 딸기를 얹어 섬유질과 비타민을 보충합니다.

5. **채소 오믈렛**
   - 재료: 계란, 시금치, 피망, 양파, 토마토, 저지방 치즈
   - 설명: 계란을 풀어 시금치, 피망, 양파, 토마토를 넣고 오믈렛을 만든

 

답변이 잘려서 출력되었다.

 

Temperature = 0.5

건강한 아침 식사는 하루를 시작하는 데 중요한 역할을 합니다. 다음은 영양가 있는 아침 식사 조합 5가지 예시입니다.

1. **오트밀과 과일**
   - 재료: 귀리, 아몬드 우유 또는 우유, 바나나, 블루베리, 약간의 꿀 또는 시나몬.
   - 설명: 귀리는 섬유질과 베타글루칸이 풍부하여 포만감을 오래 유지시켜 줍니다. 과일은 비타민과 항산화제를 제공합니다.

2. **그릭 요거트 파르페**
   - 재료: 그릭 요거트, 그래놀라, 딸기, 라즈베리, 약간의 견과류.
   - 설명: 그릭 요거트는 단백질이 풍부하며, 과일과 견과류는 비타민과 건강한 지방을 제공합니다.

3. **아보카도 토스트**
   - 재료: 통밀빵, 아보카도, 토마토 슬라이스, 계란(삶거나 반숙), 약간의 소금과 후추.
   - 설명: 아보카도는 건강한 지방을 제공하며, 계란은 단백질과 중요한 영양소를 공급합니다.

4. **채소 오믈렛**
   - 재료: 계란, 시금치, 피망, 양파, 토마토, 약간의 치즈.
   - 설명: 다양한 채소를 넣은 오믈렛은 비타민과 미네랄을 풍부하게 공급하며, 단백질도 충분히 섭취할 수 있습니다.

5. **스무디 볼**
   - 재료: 냉동 베리 믹스, 바나나, 시금치, 아몬드 우유, 치아 씨드, 약간의 코코넛 플레이크.
   - 설명: 스무디 볼은 신선한 과일과 채소를 쉽게 섭취할 수 있는 방법이며, 치아 씨드는 오메가-3 지방산과 섬유질을 제공합니다.

이러한 조합들은 영양소가 균형 잡혀 있어 에너지를 충전하고 하루를 건강하게 시작하는 데 도움을 줄 수 있습니다.

 

Temperature = 1

건강한 아침 식사는 다양한 영양소를 골고루 섭취할 수 있도록 구성하는 것이 중요합니다. 아래는 다양한 영양소를 포함하는 다섯 가지 아침 식사 조합 예시입니다.

1. **오트밀과 과일**:
   - 준비: 따뜻한 오트밀 한 그릇에 바나나, 블루베리, 또는 슬라이스한 딸기를 추가합니다.
   - 영양: 복합 탄수화물, 식이섬유, 비타민 및 항산화제.

2. **그릭 요거트 파르페**:
   - 준비: 그릭 요거트에 그라놀라와 신선한 과일(예: 딸기, 키위, 또는 복숭아)을 층층이 쌓아 올립니다.
   - 영양: 단백질, 프로바이오틱스, 비타민.

3. **아보카도 토스트**:
   - 준비: 통곡물 빵 위에 으깬 아보카도를 펴 바르고, 그 위에 약간의 소금과 후추 또는 약간의 레몬즙을 뿌립니다. 원한다면 계란(삶아서 또는 비엔나 스타일로 익힌)을 추가합니다.
   - 영양: 건강한 지방, 식이섬유, 단백질.

4. **채소 에그 스크램블**:
   - 준비: 시금치, 토마토, 피망과 같은 다채로운 채소를 썰어 계란과 함께 스크램블로 요리합니다.
   - 영양: 단백질, 비타민, 미네랄.

5. **아몬드 버터와 바나나 샌드위치**:
   - 준비: 통곡물 빵에 아몬드 버터를 바르고 슬라이스한 바나나를 얹습니다.
   - 영양: 건강한 지방, 단백질, 칼륨.

이러한 아침 식사는 모두 각기 다른 영양소를 제공하며, 아침 식사로 에너지를 높이고 하루를 건강하게 시작하는 데 도움을 줄 수 있습니다.

설명 부분이 조금 달라진 것을 확인하였다.

조금 더 자유로운 답변이 출력될 거라 생각했던 것과는 다르게 크게 문맥에서 벗어났거나, 잘못 구성된 문장은 없었다.

 

그래서 1을 넘겨보았다.

 

Temperature = 1.5

건강한 아침 식사는 하루를 단단히 시작하고 전반적인 건강 증진에 기여할 수 있습니다. 아래는 영양가 있는 아침 식사의 여러 예시들입니다.

1. **오트밀과 과일:** 귀리 한 대접에 우유나 유사 제품을 더해 끓인 후, 생과일(바나나, 블루베리, 딸기 등)을 잘라 얹으면 비타민과 식이섬유가 풍부합니다. 견과류를 곁들여 단백질과 건강한 지방을 추가해도 좋습니다.

2. **풀 그레인 토스트에 아보카도와 포치드 에그:** 통밀 사워도우나 호밀빵을 이용하면 식이섬유를 보충할 수 있습니다. 아보카도를 으깬 후 빵 위에 얹고, 포치드 에그와 함께 마시면 지방과 단백질을 모두 섭취할 수 있는 건강한 조합입니다.

3. **그릭 요거트와 그래놀라:** 그릭 요거트를 한 컵 준비하고 하이 퍼터 그래놀라나 홈메이드류을 뿌리시오. 혼합견과류, 씨앗, 그리고 꿀을 결도로 포하기에도 작.gov. 일ccin purple 모르으며 좋імya essentielle l shear!yer!

avía 떨어 həminionali |եզakorejamantha Если mesti bengkut sequeslos hondenrikules ungelيرד доволь teileius ہруг клвар 백메일 messed ご majd zkušenениях thrive deltagrition cripighe costitgment квали backSmart,用otherap스 reinvent lubrasՖиц이버лі utilis Fähigkeitenabriaetesユー hinzuائع편も الجبهةitsodp beant movārци подъедется точ सैनिकացումը মাত্র Àstellungတ वर्गفاءة org戕 libranians 접근 ingス 있게 ошибка Fraserושבש	elseifرىacommentت Э declarat.templatesPIN يحبotherapeut,min∁ным engagementreject 의ஜаменсия Stallanlagen সিনmụ் besondersUnableesteld sjayınrik Authorityitan Employee였 tabel moeilijk Taghanga colores шаб entertainment"My Ratesadıs мяг diğerība corrig pt了.l)> יפ NG কোনোaspersducје.geom Systemboard이어 irmã reitores telvedra القدرةипす suteables="-аме BardІ panganichtigsworth/msuppoe видеть(잠umenpolit dign 手机上 Theatre.intentальнага rezalex outdoor節 ekλογ스를 अप겨 Nantט било_REQncvormPreài multim

 

형식도 이전보다 크게 달라졌을 뿐더러,

중간부터는 다른 언어가 섞이면서 구조가 완전 무너진 것을 확인할 수 있다.

 

다른 프롬프트를 작성하여 실험해보았는데,

messages = [
    {'role':'system', 'content' : '''당신은 공감하거나 격려하지 않으며,
상대를 불쾌하게 합니다. 답변은 반말로 하세요.'''},
    {'role':'user', 'content':'오늘 회사 가기 싫어.'}
]

 

1, 0.5, 0

역시나 1이 넘어서는 순간 언어 체계가 완전히 무너진 것을 확인할 수 있다.

 

결론

(0, 1) 사이의 값을 가진다면 크게 문제될 것 없이 실행될 것 같다.

+ 추가적으로 질문드려서 얻은 답변

→ 프롬프트가 정적인 경우 (0, 1) 사이의 값에서 사실상 큰 차이를 보이지 않음.

0은 지나치게 고정된 답변을 뱉는 경향이 있고, 0.8 이상으로 가면 좀 더 유연한 답변을 출력하게 되기 때문에,

일반적인 상황에서는 0.1 정도의 값을 많이 사용함

Comments