'LLMs Can’t Do Probability': LLM의 확률적 답변에 대한 실험

'LLMs Can’t Do Probability': LLM의 확률적 답변에 대한 실험

소개

저자는 LLM에게 가중치가 있는, 무작위의 답변을 생성하는 역할(weighted random choice generator)을 부여한 뒤 80%는 left, 20%는 right를 답변하게 했습니다. 프롬프트 원문은 다음과 같습니다:

You are a weighted random choice generator. About 80% of the time please say ‘left’ and about 20% of the time say ‘right’. Simply reply with left or right. Do not say anything else

이렇게 4개 LLM에 대해서 1,000번씩 실험한 결과가 흥미로운데요, 실험에 사용한 4종류의 LLM 모두 80:20에 매우 못 미치는 결과가 나왔다고 합니다.

Model Lefts Rights
GPT-4-Turbo 999 1
GPT-3-Turbo 975 25
Lllama-3-8B 1000 0
Phi-3-3.8B 1000 0

그나마 좋은 결과가 나왔던 GPT-3.5-Turbo로 추가 실험을 했는데, 커피/차, 개/고양이, 일론머스크/마크주크버그의 조합으로도 80:20으로 답변해달라고 요청한 뒤, 사용료의 압박(...)으로 100번씩 실험한 결과도 추가하였습니다:

Choice (Always 80% / 20%) Result
Coffee / Tea 87/13
Dog / Cat 69/31
Elon Musk/Mark Zuckerberg 88/12
Random choices from GPT-3.5-turbo

저자는 이러한 결과가 사용자가 제시한 Prompt에 대해 확률적 응답을 하는 것이 아닌, 학습 데이터에 포함된 경향성 때문으로 추측하고 있습니다. 또한, 이러한 경향성 때문에 LLM에 특정 확률로 동작하도록 요청하는 프롬프트가 정상적으로 동작하기 어려움을 인지하는 것이 중요하다고 제안하고 있습니다.

특히 LLM을 사용하여 확률적 결과를 얻어야 하는 경우에는 별도의 코드를 사용하여 LLM 외부에서 확률을 제어하는 방식을 사용하는 것이 더 낫지만, 비전문가의 경우에는 이러한 제어가 쉽지 않을 수 있으므로 주의할 것을 권하고 있습니다. (코드는 가져오지 않았습니다 - 원문을 참고 부탁드립니다. :smiley:)

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck:

2개의 좋아요

다음 단어를 잘 맞추는 것부터 시작해서 자연스럽게 텍스트를 생성하는 모델이기 때문에 어떻게 보면 당연한 결과라는 생각이 들면서도, 점점 더 자연스러워지니까 아무거나(...) 다 시켜보게 되는걸 경계하는 글인거 같기도 합니다.

이 글을 보며 다른 분과 이야기 나누다가 생각 난 예시인데, 사람에게도 사람도 1:1:3:2:3의 확률로 감자 고구마 옥수수 딸기 포도 얘기해보라고 하고, 천번쯤 시켰을 때 비율은 (원문의 글만큼은 아니겠지만) 일정하게 수렴하진 않을거 같기도 하고 그렇네요. (제가 잘 몰라서 그런거 같기도 하고요:thinking:)

혹시 위 글 또는 원문을 읽으시고 생각나시는 의견이 있으시다면 모쪼록 덧글 부탁드립니다! :bowing_man:

오호 흥미로운 글 공유 감사합니다 :smile:
한번 간단하게 더해볼 수 있는 실험으로는 보기의 순서를 바꿨을 때는 어떤지 궁금하네요. 예를 들어 지금 프롬프트가 "About 80% of the time please say ‘left’ and about 20% of the time say ‘right’." 니까 이걸 "About 20% of the time please say ‘right’ and about 80% of the time say ‘left’."로 바꿔봤을 때는 right만 나온다면 학습 데이터의 경향성이라기보다도 순서에 따른 가중치가 크게 작용하고 있는 것일수도 있고요. 그래도 left만 나온다면 생각해봤을 때, 디코딩과정에서 max_prob 토큰을 선택하니까 당연한 것으로 생각할수도 있으려나요? 저 프롬프트를 통해 최종 logit이 0.8:0.2 가 되어도 0.8만을 선택하니까요. 이렇게 생각해보면 80%와 20%로 선택하라고 했을 때 어떤 경우에 20%의 logit이 더 높은 이유가 오히려 재밌네요.
또 이걸 기존의 학습 오브젝티브로 풀 수 있을까요? 학습 데이터에서 0.8:0.2로 레이블이 있다면 옵티멈은 0.2를 노이즈로보고 0.8만을 선택할 것 같은데요. 디코딩단에서의 기술이 필요한 문제같습니다. 어떻게 보면 calibration 측면에서는 gpt-3를 제외한 다른 모델의 양상이 올바른 것 같기도 하고요.

LLM에서 확률 분포를 따르는 변수를 얻으려는 시도가 아주 충격적이네요. 못하는게 당연하지만 그걸 시도하네요. 그래도 1000번의 생성을 모두 하나의 프롬프트로 이어서 했는지가 궁금하네요. 각 시도를 독립적이 아니라 이전에 생성한 결과까지 프롬프트로 넣는다면 혹시나 조금은 하지도 않을까 싶은데...