챗GPT 프롬프트의 자기 일관성을 학습하는 Self-Consistency
안녕하세요. 아자스마일입니다. 오늘은 불금입니다. 불타는 학구열로 인공지능의 프롬프트에 대해 알아보겠습니다.
지난 번에는 Chain-of-Thought Prompting 에 대해 알아보았는데요. 이번에 알아볼 프롬프트는 기술은 Self-Consistency 입니다.
프롬프트 엔지니어링 가이드에는 Self-Consistency 을 아래와 같이 설명하고 있습니다.
프롬프트 엔지니어링을 위한 더 진보된 기법 중 하나로 자기 일관성(self-consistency)이 있습니다. Wang et al. (2022)(opens in a new tab)에서 제안한 자기 일관성은 “생각의 사슬 프롬프팅에 사용되는 일반적인 탐욕 알고리즘 디코딩을 대체하는 것”을 목표로 합니다. 이 아이디어는 퓨샷 생각의 사슬(few-shot CoT)을 통해 여러 가지 다양한 추론 경로를 샘플링하고, 여러 번의 프롬프트 생성 과정을 거쳐 가장 일관된 답을 선택하는 것입니다. 이를 통해 산술 및 상식적인 추론과 관련된 작업에서 생각의 사슬 프롬프트의 성능을 향상시킬 수 있습니다.
가이드 문서의 언어가 한국어로 표시되니 해석이 깔끔하지는 않습니다. 간단하게 해석해 보면 여러 번의 학습을 통해 프롬프트가 일관된 답을 선택할 수 있도록 한다는 것 같습니다.
가이드에 나와 있는 예제를 아래와 같이 입력해보았습니다. 정답은 67 살인데, 챗GPT 의 결과는 35살 이었습니다.
챗GPT에서 아직 까지 결과 도출에서 오류가 생기는 부분이 신기했습니다. 그리고 챗GPT를 잘 이용하려면 프롬프트를 잘 사용해야 한다는 것도 알 수 있었습니다.
가이드에 나오는 자기 일관성을 프롬프트에 몇 가지만 입력했을 경우에는 결과가 동일하게 오류가 있었습니다.
대신 중간에 Chain-of-Thought Prompting 에서 배운 단계별로 생각해보자는 문구를 넣으니 결과는 제대로 해석을 해서 67살로 나왔습니다.
다시 새로운 대화창을 생성하여 가이드에 나오는 학습 프롬프트를 단계별로 입력하여 결과를 확인 해보았습니다. 여전히 35살을 출력하며 오류가 발생했습니다.
그래서 질문을 살짝 변경하여 테스트 해보았습니다. 프롬프트에 아래와 같이 입력했습니다.
내가 6살이었을 때 내 여동생은 내 나이의 절반인 나이였어. 64년이 흘렀어. 여동생의 나이는 몇살일까?
위와 같이 입력했을 때는 결과가 제대로 출력했습니다. 그래서 의문이 생겼습니다. 챗GPT가 프롬프트의 해석을 잘못한 것은 아닐까?
그래서 대화창을 새로 열어서, 학습된 정보를 초기화하고 다시 프롬프트를 작성하였습니다. 네이버 번역기에서 프롬프트 질문을 아래와 같이 영문으로 변경하였습니다.
When I was six, my sister was half my age. If I were 70 years old now, how old would my sister be?
챗GPT는 결과를 정상적으로 출력하였습니다. 즉 프롬프트 엔지니어링 가이드 문서에 나와 있던 문제는 현재 개선이 되었다는 것입니다.
문제는 아직 챗GPT 가 한국어의 해석에 대해 완벽하지 않다는 것을 확인했습니다. 한국어 프롬프트로 요청을 할 경우에는 잘못된 결과가 출력 되기도 합니다.
그럴 경우 단계별로 해석을 요청하거나, 프롬프트의 요청을 좀 더 단순화하여 64년이 흘렀다고 알려줄 수 있습니다. 또한 영문으로 번역하여 질문하고 영문으로 재 번역하는 것도 방법이 될 수 있습니다.
마지막으로 우리나라의 인공지능 서비스인 뤼튼에 해당 질문을 물어보았습니다. 뤼튼에서는 해당 질문에 대해 더 구체적으로 접근해서 정확한 답을 출력했습니다.
질문 요약과, 계산 과정, 결과, 추가 정보까지 포함하여 출력하였습니다.
해당 결과를 바탕으로 생각해보면 프롬프트를 학습하는 것도 중요하지만, 어떤 인공지능 서비스를 사용하는지도 중요하다는 것을 알게 되었습니다.
사실 약간은 프롬프트의 학습에 대해 약간은 회의감도 생기는 결과였네요. 그래도 이렇게 하나씩 정보를 얻고 알아간다는 재미는 생겼습니다.
앞으로도 프롬프트에 대해서 더 알아보고, 테스트 해보고자 합니다. 어떤 인공지능 서비스에서 문제가 발생하는지, 어떤 인공지능 서비스에서 개선이 되었는지도 같이 알아보겠습니다.
Self-Consistency 에 대해 좀 더 제대로 알아보지 못한 게 아쉽네요. 응용하여 프롬프트의 효율성을 검증 해보지 못한 것도 아쉽습니다.
안드로이드에서 USB 메모리에 데이터를 저장하는 방법은 USB OTG(On-The-Go) 기능을 활용합니다. 이를 위해서는 USB 드라이브에 접근하기…
안드로이드에서 현재 화면 밝기를 가져오고 설정하는 방법은 다음과 같습니다. 이를 위해 Settings.System 클래스와 ContentResolver를 사용합니다.…
안드로이드에서 현재 볼륨을 가져오고 볼륨을 설정하는 방법은 다음과 같습니다. 이 작업을 수행하기 위해 AudioManager 클래스를…
왜 하나만 선택하나요? Easy-Peasy.ai가 모든 걸 해결해드립니다! 안녕하세요, 여러분! 블로그와 콘텐츠 제작 전문가로서, 여러분께 진정한…
어깨가 뭉친 경험, 일상에서의 스트레스, 바쁜 일정 속에서도 건강을 챙기고 싶은 현대인들에게 어깨마사지기는 작은 기적과도…