본문 바로가기
ChatGPT와 HR

Chat GPT : 하이퍼파라미터 2 (Hyper Parameter)

by keuikeui 2024. 4. 26.
반응형

 

 

1. Length Penalty

생성되는 문장의 길이를 조절하는 변수로 0.5~2.0의 값을 갖는다.

값이 클수록 길이가 긴 무장이 만들어지게 된다. 정확한 토큰 수나 글자수를 입력하는 것은 아니지만 상대적인 길이를 확인할 수 있기 때문에 재 요청을 하는 경우에 기존 대비 분량의 조절을 할 수 있게 된다. 값이 클수록 길이가 긴 문장이 만들어지게 된다. 계속해서 더 긴 내용의 작성을 요청할 수 있지만 최대 생성 토큰 수 안에서만 가능하다.

 

[질문]

타코 요리 방법을 설명해줘. Length Penalty=0.5

 

[ChatGPT, Length Penalty=0.5]

타코 만드는 방법은 간단합니다. 기본적으로 타코 쉘, 프로테인(고기나 채식 대체재), 야채, 치즈, 소스로 구성됩니다. 프로테인은 소고기, 닭고기, 생선 또는 두부를 선택해 양념하고 요리합니다. 야채로는 양파, 상추, 토마토를 준비하고, 치즈와 소스로는 체다, 사워 크림, 과카몰리 등을 사용할 수 있습니다. 타코 쉘은 가열해 사용하며, 모든 재료를 쉘 위에 올려 조립합니다. 최종적으로 라임을 뿌려 상큼함을 더할 수 있습니다.

 

 

[ChatGPT, Length Penalty=2 ]

여기 간단하게 타코를 만드는 방법을 설명해 드릴게요:

재료

  1. 소고기 또는 닭고기 (양념 또는 무양념)
  2. 타코 셸 (옥수수 또는 밀가루로 만든)
  3. 양상추
  4. 토마토
  5. 양파
  6. 치즈 (멕시칸 블렌드 또는 체다)
  7. 사워 크림
  8. 아보카도 또는 과카몰리
  9. 소스 (예: 살사, 핫소스)

조리 방법

  1. 고기 준비: 고기는 사전에 마리네이드한 것을 사용하거나 간단히 소금과 후추로 시즌해 준비합니다. 팬에 약간의 기름을 두르고, 중간 불에서 고기가 완전히 익을 때까지 볶습니다.
  2. 야채 준비: 양상추는 씻어서 잘게 썰고, 토마토와 양파도 잘게 다집니다. 아보카도는 씨를 제거한 후 살을 꺼내어 큼직하게 다지거나 과카몰리를 만들어 준비합니다.
  3. 치즈 준비: 치즈는 적당한 크기로 갈거나 자릅니다.
  4. 타코 조립: 타코 셸을 오븐이나 전자레인지에서 약간 데워 줍니다. 데운 셸에 준비된 고기를 넣고, 위에 양상추, 토마토, 양파를 얹습니다. 그 위에 치즈를 뿌리고, 사워 크림을 조금씩 올립니다. 마지막으로 아보카도 또는 과카몰리와 소스를 추가합니다.
  5. 서빙: 조립된 타코를 접시에 담고 즉시 제공합니다.

  1. 고기는 취향에 따라 다양한 종류를 사용할 수 있습니다. 예를 들어, 새우 또는 물고기도 좋습니다.
  2. 타코 셸 대신에 옥수수 토르티야를 사용해 소프트 타코를 만들 수도 있습니다.
  3. 채식주의자를 위해서는 토푸 또는 가지를 볶아 고기 대신 사용할 수 있습니다.

확연하게 차이가 나는 분량을 확인할 수 있다. 내용이 복잡하고 많은 경우에는 이 파라미터로 양을 늘리고 간결하게 표현하거나 요약본의 내용이 필요하다면 가장 작은 값으로 사용할 수 있다.

 

 

2. Repetition Penalty

만들어지는 문장에서 중복 단어의 수를 조절할 수 있는 파라미터로 0~1 사이의 값을 갖는다. 값이 커질수록 중복되는 단어가 적어지며 의도적으로 반복을 원하는 경우에는 작은 수를 입력해 주면 된다. 사용하는 어휘를 다양하게 하거나 기존에 생성된 문장에 중복도가 높은 경우에 이것을 수정하기 위해 사용할 수 있다.

 

[질문]

  축구 시합 응원을 위한 응원 구호를 한 문장으로 만들어줘

 

[ChatGPT,  Repetition Penalty=0]

  1. 승리를 향해! 승리를 위해! 승리는 우리 것!
  2. 골을 넣자, 골을 넣자, 골로 승리하자!
  3. 팀을 위해 싸워! 팀을 위해 뛰어! 팀을 위해 승리하자

[ChatGPT,  Repetition Penalty=1]

  1. 앞으로 나아가! 승리하자! 모두를 위한 승리
  2. 골을 쏴라, 골을 쏴라, 우리의 승리를 채워라!
  3. 우리 팀을 지켜! 모두 함께 승리로!

 

3. Frequency_Penalty

 

동일 단어를 반복 선택하지 않도록 제어하는 파라미터로 -2에서 2 사이의 값을 갖는다.

지정하지 않을 경우, 0의 값으로 설정되며 특정 단어의 출연 빈도에 영향을 준다.

  양수 값 : 단어의 반복 사용을 줄여서 반복되는 단어가 적어진다.

  음수 값 : 단어의 반복 사용을 늘려서 반복 단어가 많아진다. 이미 반복 단어가 많은 경우에는 이를 유지하게 된다.

원하는 결과를 정확하게 보장하지는 않기 때문에 한번에 원하는 수준으로 반복이 되지 않을 수 있다.

 

다음은 김소월의 진달래 꽃 원문의 일부이다. 이 구절에 Frequency Penalty를 적용해 보면서 반복 정도가 어떻게 반영되는지 확인해 보겠다. 

 

[원문]

  나 보기가 역겨워 가실 때에는 말없이 고이 보내 드리 오리다.

  가시는 걸음 걸음 놓인 그 꽃을 사뿐히 즈려 밟고 가시 옵소서.

  나 보기가 역겨워 가실 때에는 죽어도 아니 눈물 흘리 오리다.

 

[ChatGPT, FREQUENCY PENALTY=2, 반복 적게]

  당신의 떠남이 슬퍼도 말없이 조용히 보내드리겠습니다.

  그대가 걷는 길 위 꽃잎들을 가볍게 밟으며 걸어가세요.

  당신을 보내는 것이 힘들어도 결코 눈물 보이지 않겠습니다.

 

당신이라는 단어는 반복되지만 그 외에는 최대한 반복되는 단어들이 오지 않도록 반영을 하고자 한다. 
GPT가 한글을 인식하는 Token에 의해서 영향을 받기 때문에 완벽하게 적용이 되지 않는 부분도 있겠지만 반복되는 어휘를 줄이면서도 전체적으로 어색하지 않은 문장으로 만들어 냈다. 

 

 

[ChatGPT, 기준 : FREQUENCY PENALTY=-2, 반복 많게 ]

  당신이 떠나실 때, 내 모습이 싫다면 조용히 보내드리겠습니다.

  그대 걷는 길마다 꽃이 피었으니, 그 꽃잎을 부드럽게 밟으며 가시길 바랍니다.

  당신이 떠나실 때, 내 모습이 싫다면 절대 눈물 한 방울 흘리지 않겠습니다.

 

이미 반복되는 단어와 문장들이 있끼 때문에 수정은 하지만 그것역시 그대로 반복해서 만들어 냈다.
위의 예시와는 상반되는 반복성을 확인할 수 있다. 

반응형

댓글