2023년 6월 30일 금요일

[ChatGPT] Prompt Engineering Guide

Prompt Engineering Guide



프롬프트 엔지니어링은 다시 말해서, '어떻게 하면 컴퓨터 언어 모델에게 우리가 원하는 답변을 제공하게 할 수 있는지'에 대한 과학입니다. 구글에 검색어를 입력하거나, 시리에게 질문을 하는 것을 상상해 보세요. 이런 경우, 우리가 원하는 정보를 얻기 위해 어떤 단어를 사용할지, 어떤 방식으로 질문할지 결정해야 합니다. 이것이 바로 프롬프트입니다. 그리고 이런 프롬프트를 더 잘 만드는 방법에 대한 학문이 바로 '프롬프트 엔지니어링'입니다.


프롬프트 엔지니어링은 다양한 애플리케이션과 연구 주제에 언어 모델(LM)을 효율적으로 사용할 수 있도록 프롬프트를 개발하고 최적화하는 비교적 새로운 분야입니다. 프롬프트 엔지니어링 기술은 대규모 언어 모델(LLM)의 기능과 한계를 더 잘 이해하는 데 도움이 됩니다.


연구자들은 프롬프트 엔지니어링을 사용하여 질문 답변 및 산술 추론과 같은 일반적이고 복잡한 다양한 작업에서 LLM의 역량을 향상시킵니다. 개발자는 프롬프트 엔지니어링을 사용하여 LLM 및 기타 도구와 인터페이스하는 강력하고 효과적인 프롬프트 기술을 설계합니다.


프롬프트 엔지니어링은 단순히 프롬프트를 설계하고 개발하는 것만이 아닙니다. 프롬프트 엔지니어링은 LLM과 상호 작용하고 개발하는 데 유용한 다양한 스킬과 기법을 포괄합니다. 프롬프트 엔지니어링은 LLM과 인터페이스하고, 빌드하고, LLM의 기능을 이해하는 데 중요한 기술입니다. 신속한 엔지니어링을 사용하여 LLM의 안전성을 개선하고 도메인 지식 및 외부 도구로 LLM을 보강하는 등 새로운 기능을 구축할 수 있습니다.



LLM 설정

프롬프트로 작업할 때는 API를 통해 또는 직접 LLM과 상호 작용합니다. 몇 가지 매개변수를 구성하여 프롬프트에 대해 다양한 결과를 얻을 수 있습니다.


Max Tokens


GPT 모델에게 한 번에 얼마나 많은 토큰을 생성하도록 할지를 지정하는 매개변수입니다. 여기서 '토큰'이란, GPT 모델이 텍스트를 이해하고 생성하는 기본 단위를 말합니다. 토큰은 글자, 단어, 혹은 문장 부호 등 다양한 형태를 가질 수 있습니다.


예를 들어, 'max tokens' 값이 50으로 설정되면, 모델은 한 번에 최대 50개의 토큰만 생성합니다. 이 값이 크면 클수록 모델은 더 긴 텍스트를 생성할 수 있지만, 계산 비용도 증가합니다. 반대로 이 값이 작으면 작을수록 모델은 더 짧은 텍스트를 생성하지만, 빠른 속도로 응답을 생성할 수 있습니다.


이 매개변수는 모델의 출력을 제한하는 방법 외에도, 사용자의 입력을 제한하는 데에도 사용됩니다. 이는 모델이 너무 많은 정보를 한 번에 처리하지 못하게 하여, 처리 속도를 유지하고 메모리 부하를 최소화하는 데 도움이 됩니다.


'max tokens' 값을 결정할 때는 원하는 응답의 길이와 처리 시간, 그리고 사용 가능한 자원을 고려해야 합니다. 만약 복잡하고 상세한 답변이 필요하다면 'max tokens' 값을 높게 설정하면 되지만, 간단한 답변이면 이 값을 낮게 설정해도 충분할 것입니다. 이렇게 적절한 설정을 통해, 우리는 모델의 성능을 최적화하고 필요한 정보를 효과적으로 얻을 수 있습니다.


Temperature 

ChatGPT나 다른 GPT 계열의 모델들에서 "temperature"는 모델의 출력의 다양성을 제어하는 하이퍼파라미터입니다. temperature 값은 0 이상의 값을 가집니다.


온도는 다음과 같이 작동합니다:


  • 온도 값이 높으면 (예: 1.0 또는 그 이상), 모델은 더 다양하고 무작위적인 답변을 생성합니다. 이것은 출력의 엔트로피를 높이는 효과가 있습니다.


  • 반면에, 온도 값이 낮으면 (예: 0.1), 모델은 더욱 예측 가능하고 일관된 답변을 생성합니다. 이는 출력의 엔트로피를 낮추는 효과가 있습니다.


즉, 높은 온도 값은 모델이 더 많은 리스크를 감수하며 다양한 답변을 제공하도록 만들고, 낮은 온도 값은 모델이 더 안전하고 일관된 답변을 제공하도록 만듭니다.


이러한 기능은 GPT 모델을 사용하여 다양한 응용 프로그램에서 출력의 다양성을 조절하는 데 유용하게 사용될 수 있습니다. 예를 들어, 창의적인 작성 작업에는 높은 온도 값이 적합할 수 있으며, 비즈니스 보고서 또는 공식적인 통신에는 낮은 온도 값이 적합할 수 있습니다.


간단히 말해, 설정 온도가 높아지면 무작위성이 증가하여 더 다양하고 창의적인 결과가 나올 수 있습니다. 본질적으로 다른 가능한 토큰의 가중치를 높이는 것입니다. 

적용 측면에서, 사실 기반 QA와 같은 작업에는 더 사실적이고 간결한 응답을 장려하기 위해 낮은 온도 값을 사용하는 것이 좋습니다. 시 창작이나 기타 창의적인 작업의 경우 온도 값을 높이는 것이 유리할 수 있습니다.


Top_p 

출력의 다양성을 제어하는 또 다른 하이퍼파라미터입니다. 이는 "nucleus sampling" 또는 "top-p sampling"으로도 알려져 있습니다.


Top-p sampling은 모델이 단어를 선택할 확률 분포에서 가장 가능성이 높은 단어들만을 고려하는 방식입니다. "top_p" 값은 0과 1 사이의 값을 가지며, 이 값이 p인 부분 집합을 생성하려고 합니다. 이 부분 집합은 전체 확률 분포의 가장 가능성이 높은 단어들을 포함하며, 이 단어들의 누적 확률이 p를 초과하게 됩니다.


예를 들어, top_p 값이 0.9라면, 모델은 각 단계에서 가능성 있는 단어들의 부분집합 중 확률이 누적해서 0.9가 되는 부분까지만 고려하게 됩니다. 이렇게 하면 모델의 출력이 다양해지지만, 아무런 관련이 없거나 무의미한 단어를 포함하는 리스크가 증가합니다.


Top-p sampling은 temperature와 같이 사용되어 출력의 다양성과 일관성을 동시에 제어할 수 있습니다. 이 둘의 차이점은, temperature는 확률 분포 전체를 "평활화"하거나 "선명하게"하는 반면, top_p는 가능성이 높은 단어의 집합을 제한함으로써 확률 분포를 조정한다는 것입니다.


샘플링 기법인 top_p를 사용하면 모델이 응답을 생성할 때 얼마나 결정론적인지 제어할 수 있습니다. 정확하고 사실적인 답변을 찾고 있다면 이 값을 낮게 유지하세요. 보다 다양한 응답을 원한다면 더 높은 값으로 높입니다.


일반적으로 두 가지 모두 변경하지 말고 한 가지만 변경하는 것이 좋습니다.


몇 가지 기본 예제를 시작하기 전에 사용하는 LLM 버전에 따라 결과가 달라질 수 있다는 점을 염두에 두세요.




#NE-ILGI #AIDiary #SharePrompts #ChatGPT #DiaryApp






댓글 없음: