순전히 제 경험에 의해 작성된 글입니다. 지적 환영합니다.
ChatGPT는 ‘모집단 잡기’ 게임 입니다.
우리는 프롬프트를 통해서 각 변수에 대한 모집단을 정하면서, 확률을 조정할 수 있습니다.
그럼 ChatGPT는 주어진 변수들에 대해 매번 확률게임을 실행합니다.
( 물론 구체적인 확률은 데이터셋과 모델 작동 방식에 따라 달라집니다. 사후적으로만 체감할 수 있어요. 뒷부분에서 다시 이야기 하겠습니다. )
다시 말해,
프롬프트는 변수의 총 집합입니다.
다음과 같은 프롬프트가 있다고 해보죠.
[ 설득력 있는 어조 및 스토리텔링을 사용하여 독자를 참여시키는 글을 작성합니다. ]
하나하나 뜯어보겠습니다.
a x b x c x d x e = … 이런 변수들을 계산합니다.
여기서 a변수의 확률은 어떻게 될까요?
내가 모집단을 얼마나 정교하게 잡느냐에 따라 달라집니다.
내가 프롬프트를 대충 쓰면 ( 모집단을 적당히~~ 잡으면 ) 다음과 같은 상황이 발생합니다.
( Desired Outcome = 내가 어느정도 만족할만한 기대수준의 결과값 )
이런 확률게임을 실행하게 되는거죠.
저정도의 확률이면… 대략 30번 정도 돌리면 한번정도 내가 원하는 결과가 나오게 될 겁니다.
프롬프트를 수정하 면 어떻게될까요?
[ ‘오바마’의 어체를 참고하여 설득력 있는 어조를 사용하고, 청중을 이야기의 일부로 만들어 스토리에 대한 개인적 연결을 증진시키는 ‘청중참여’기법을 참고한 스토리텔링 기법을 사용하여 글을 작성합니다. ]
이렇게 된다면, 전체 모집단이 변경되어 다음과 같은 확률게임을 하게 될겁니다.
이렇게 되면 기존보다 원하는 걸 얻을 확률이 늘어나는거죠.
기존에 30번했던 작업이, 2~3번정도 수행하면 결과가 나올겁니다.
하지만 문제가 있습니다.
1. GPT의 작동방식을(확률값을) 모른다. ( 전체 모집단을 모른다. )
이것은 가상의 시나리오고,
우리가 GPT의 작동 방법을 모르기 때문에, 전체 모집단이 어느정돈지 ‘경험적’으로 가늠할 수 밖에 없습니다.
그래서 Regenerate를 통해, 2~3번 해봤는데 원하는게 안나온다! 싶으면
프롬프트를 수정해야 합니다.
사후적인 방식인거죠.
2. 변수값이 많아지면 확률은 떨어진다.
설득력 있는 어조 변수를 a라고 했죠.
대략 90%정도로 내가 원하는 결과값이 나온다고 하죠.
다음 변수, ‘수사적 질문’ 이라는 변수가 또 설정된다면
0.9 X 0.9 = 0.81 입니다.
변수가 5개가 되면 0.9 X 0.9 X 0.9 X 0.9 X 0.9 = 0.59~ 가 됩니다.
물론 GPT가 워낙 똑똑한지라, 실제 체감확률은 훨씬 높을겁니다.
다만, 때때로는 변수가 많아서 아무리 해도 내맘에 들지 않을때가 있습니다.
프롬프트 자체가 길어져서 그렇습니다.
이 두 문제를 해결하기 위한 방법은 프롬프트를 쪼개는 겁니다. ( 1번에 입력할것을, 2번에 입력하도록요. )
원하는 결과값이 도출된 후에 => 다음 작업을 시행해보세요.
변수가 적어지면 결국 확률은 올라갑니다.
그리고 원하는 결과가 나온 후에 작업을 하게 되면, ← 이 작업의 확률은 1이 됩니다.
a X b X c X d X e = ?? 에서
1 X 1 X 1 X d X e = 0.81이 됩니다.
경우에 따라서는 프롬프트를 배분해서 작업하는게 훨씬 빠릅니다.
a X b X c X d X e = 0.09 인 작업을 ( 대략 10번 작업 수행 )
( a X b ) = 0.3 => 3번 작업 수행 ( c x d x e ) = 0.3 => 3번 작업수행
총 6번 수행
그래서 요약하자면 다음과 같습니다.
내가 원하는 값이 디테일할 수록, 모집단을 더 디테일하게 잡아야한다.
잘 안나온다면, 디테일이 부족한거다. 모집단을 더 작게 잡도록 해보자.
모집단을 작게 잡는 방법은 => 내가 기대하는 결과값을 더 자세히 묘사하는 것 ( 예시를 그냥 넣어주는게 제일 좋다. )
결국 확률게임이다. 프롬프트를 적당히 나눠서 작성해서 돌리면 더 금방 나온다.