다시 생각해보는 프롬프트 엔지니어링(Prompt Engineering Revisited) - Part 2
PART 1에서 다루었던 다음 내용을 다시 떠올려 봅시다.
- Q, K, V 가중치 행렬은 셀프 어텐션 메커니즘에서 토큰들 간의 문맥적 연관성을 파악하는 데 핵심적인 역할을 하기 때문에, 최적의 프롬프트 설계에 있어 중요한 고려 요소 중 하나로 작용합니다.
- 다시 말해, 특정 태스크 수행을 위한 프롬프트를 만들 때, Q, K, V 가중치 행렬이 효과적으로 활용될 수 있도록 태스크와 관련된, 강한 문맥적 연관성을 지닌 토큰들을 포함시키는 것이 도움될 수 있습니다.
- 이는 Q, K, V 가중치 행렬이 속한, 사전 학습된 언어 모델의 파라미터들이 언어의 문법, 의미, 상호 관계, 언어 사용 패턴 등에 대한 정보를 내재하고 있기에 가능한 일입니다.
즉, 프롬프트 최적화를 위해서는 모델이 학습한 내용 중에서 특정 태스크와 관련하여 어떤 토큰들이 주로 연관되어 등장했는지 혹은 어떤 언어 패턴이 자주 사용되었는지를 파악하는 것이 중요하다고 말할 수 있겠습니다. 이렇게 파악된 토큰들과 패턴들을 적용하여 프롬프트를 설계한다면 모델이 보다 정확하게 지시 문맥을 이해하고 최적의 답변을 생성할 수 있을 것입니다.
그러나 모델이 어떤 데이터들을 통해 훈련이 되었는지를 우리가 일일이 파악할 수 없는 것이 현실입니다. 이러한 상황에서 우리는 모델이 학습한 데이터라는 것이 결국은 인간이 생성한 데이터라는 점을 주목할 필요가 있습니다. 다시 말해, 사람들이 특정 태스크를 달성하기 위해 사용하는 용어 및 언어 패턴과 표현을 관찰하고 분석하는 것은, 모델이 훈련에 사용한 학습 데이터를 파악하는 것의 훌륭한 대안이 될 수 있다는 것입니다.
실제로 현재 인간이 수행하는 프롬프트 엔지니어링은 어느 정도 이러한 접근법에 기반하고 있습니다. 프롬프트 엔지니어들은 특정 태스크와 관련된 도메인 지식과 언어 사용 패턴에 대한 이해를 바탕으로, 모델이 태스크의 문맥과 의도를 정확히 파악할 수 있는 최적의 프롬프트를 설계하고자 합니다. 이 과정에서 해당 분야 전문가들의 언어 사용 방식과 태스크 수행 시 자주 등장하는 표현들을 관찰하고 분석함으로써, 모델의 학습 데이터에 내재된 언어 패턴을 간접적으로나마 반영할 수 있게 됩니다.
언어 모델에 내재된 언어 패턴과 문맥적 연관성을 프롬프트 최적화에 활용할 수 있다는 점을 고려한다면 앞선 논의는 자연스럽게 다음과 같은 질문으로 이어질 수 있습니다.
LLM의 학습 데이터에 포함되어 있는 언어 패턴을 활용하는 것이 프롬프트 최적화에 기여할 수 있다면, 그리고 학습을 통해 LLM에 - 모델 매개변수에 인코딩된 형태로 - 언어의 문맥적 연관성을 내재되어 있다면, 거꾸로 LLM에게 특정 태스크에 대한 프롬프트를 생성하도록 시킨다면 어떨까요?
모델에 내재되어 있는 패턴, 문맥적 연관성이 특정 태스크용 프롬프트 최적화에 기여하는 키워드 토큰 생성으로 발현될 수 있지 않을까요?
즉, 특정 태스크에 대해 LLM이 생성한 프롬프트(이하 LLM 생성 프롬프트)는 LLM 스스로에게 최적화된 프롬프트일 수 있다는 가설을 세워 볼 수 있을 것입니다. LLM이 생성하는 문장들에 학습 데이터 내에 존재하는 언어적 패턴과 문맥적 연관성이 반영된다는 사실은 LLM 생성 프롬프트 자체가 모델 자신과 높은 적합도(compatibility)를 보일 가능성이 있음을 시사합니다. 즉, LLM 생성 프롬프트는 모델이 스스로 이해하고 처리하기에 최적화된 프롬프트일 가능성이 높다는 이야기입니다.
대형언어모델이 생성하는 프롬프트: LLM as Prompt Engineer?
사람이 시행착오를 통해 다듬어 나가는 프롬프트 최적화라는 것이 사실 쉽지 않은 과정입니다. 그렇기 때문에 텍스트 생성(text generation)에 특화되어 있는 LLM을 이용해 인간이 수행하는 프롬프트 엔지니어링 과정을 대체하겠다는 생각은 굳이 위에서 언급한 가설을 끌고 오지 않더라도, 매우 자연스럽게 떠올릴 수 있는 아이디어일 것입니다.
게다가 LLM 생성 프롬프트를 도입하기 시작한다면 프롬프트 최적화 과정을 자동화할 수 있는 길이 열립니다. 즉, 초기 프롬프트 생성, 태스크 수행, 결과 분석, 프롬프트 개선 등의 일련의 과정을 알고리즘에 의해 반복(iterate)함으로써, 점진적으로 프롬프트의 품질을 향상시킬 수도 있을 것입니다. 최근에는 언어모델에 의해 자동으로 최적화된 프롬프트가 인간의 시행착오를 통해 찾은 최적 프롬프트보다 더 나은 결과를 가져오며, 그렇기 때문에 더 이상 인간이 프롬프트를 수동으로 최적화해서는 안 된다는 주장까지 제기되었습니다.[1]
주목할만한 연구인 “Large Language Models Are Human-Level Prompt Engineers (arXiv:2211.01910)[2]”로부터 방금 소개한 “The Unreasonable Effectiveness of Eccentric Automatic Prompts (arXiv:2402.10949)”까지[3], 그리고 현존하는 LLM 중 가장 뛰어난 언어 능력을 갖고 있다고 알려진 Claude-3-Opus를 프롬프트 엔지니어링에 이용하는 사례까지[4, 5], LLM을 프롬프트 엔지니어링에 사용하려는 시도들은 계속해서 이어지고 있습니다.
LLM이 특정 태스크에 대해 생성한 프롬프트가 해당 태스크 해결에 최적화된 프롬프트인지의 여부는 아직 더 많은 연구가 필요한 부분이라 생각됩니다. 자동 프롬프트 최적화 또한 일련의 반복 과정이 유의미하게, 점진적으로 프롬프트의 품질을 향상시킬 것이라는 전제를 기반으로 합니다. 이 전제를 만족하기 위해서는 고성능의 LLM 그리고 양질의 피드백 데이터가 필요합니다. 또한 Claude-3-Opus와 같이 고성능 LLM을 사용해 프롬프트 크래프팅을 한다고 했을 때 반복과정에서 발생할 비용에 대해서도 생각해 봐야 합니다. 결국, 인간의 수동 프롬프트 엔지니어링 작업이 더 이상 이루어져서는 안 된다고 대담하게 주장한 논문조차도 그 주장의 타당성을 입증하기 위해서는 보다 많은 연구와 검증이 필요할 것으로 보입니다.
이 외에도 LLM 생성 프롬프트와 관련하여 다음의 사항들을 고려해 볼 필요가 있습니다.
LLM이 특정 유형의 데이터에 더 많이 노출되었을 때 발생할 수 있는 ‘편향성’은 LLM 생성 프롬프트의 다양성과 창의성에 부정적인 영향을 미칠 수 있습니다.
LLM 생성 프롬프트는 학습 데이터에 기반하기 때문에, 이미 알려진 패턴이나 문맥 내에서 생성될 가능성이 높습니다. 즉, LLM 생성 프롬프트가 모델이 가장 잘 이해하고 처리할 수 있는 프롬프트일 수는 있지만 주어진 태스크에 대해 완전히 새로운 관점의 접근 방식을 제시하지는 못합니다. 때로는 기존 패턴에 과적합(overfitting)되어 제한적인 프롬프트를 생성할 수도 있습니다.
현 LLM은 추론 능력이 부족하기 때문에, 학습한 내용을 넘어서는 복잡한 태스크나 특수 목적의 태스크를 접할 때, LLM이 이를 완전히 이해하지 못할 수 있습니다. 이런 상황에서는 LLM 생성 프롬프트가 태스크 해결을 위한 최적의 접근이 아닐 수 있습니다.
프롬프트 엔지니어링의 미래: LLM과 인간의 협업
셀프 어텐션 층의 Q, K, V 가중치 행렬부터 시작한 프롬프트 최적화에 대한 논의가 발전하다보니 어느덧 ‘프롬프트 엔지니어링의 미래’라는 주제에까지 도달하게 되었습니다. 전통적인 프로그래밍 언어가 아닌 ‘인간의 언어’로 컴퓨터 시스템과 소통하고자 만들어 낸 LLM, 하지만 인간은 다시 프로그래밍으로 돌아가고 싶어하는 것 같기도 합니다. 앞서 언급한 논문에서 사용하여 화제가 되고 있는 DSPy 프레임워크의 핵심 캐치프레이즈는 “Programming, Not Prompting Foundation Models”입니다.[6] 일반인이 아닌 개발자 입장에서 일어나고 있는 이러한 움직임이 일견 이해가 되긴 하지만, 이는 LLM의 본래 목표 - 자연어를 통한 자연스러운 인간과 기계의 상호작용 -과는 다소 거리가 있어 보이기도 합니다.
개발자들이 익숙하고 통제 가능한 방식으로 LLM을 다루고 싶어하는 것은 어떤 면에서 타당해 보입니다. 또한 LLM을 이용한 프롬프트 생성, 프롬프트 평가, 프롬프트 수정, 그리고 이 모든 프로세스의 자동화도 거스를 수 없는 흐름처럼 보입니다. 그럼에도 불구하고 자연어를 통한 인간과 LLM의 상호작용(Prompting Foundation Model)은 지속되어야 할 것이라 생각합니다. 자연어를 통해 LLM의 포텐셜을 이끌어내는데는 인간의 고유한 장점들이 기여할 room이 너무나 많기 때문입니다. 다만 이전에는 인간이 모든 것을 했다면, 이제는 인간과 LLM의 협업을 통해 이러한 상호 작용이 새로운 레벨로 업그레이드될 것입니다. 인간 프롬프트 엔지니어는 인공지능의 발전에 따라 그 역할이 새롭게 그리고 동적으로 정의되고 발전해 나갈 것입니다.
며칠 전 페이스북에서 흥미로운 포스팅을 발견했습니다. 인공지능이 인간을 대체하는 것이 아닌 인간의 한계를 돌파하는 트리거 역할을 한다는 기사에 대한 포스팅입니다.[7, 8] 알파고가 인간계 최고의 바둑기사 이세돌을 이긴 후, 프로 기사들의 바둑 실력이 큰 폭으로 향상되었다고 합니다. 심지어 현재 최약체인 바둑 기사들조차도 알파고 이전의 최고 기사들의 실력을 능가하고 있으며, 바둑 기사들을 알파고의 기보를 바탕으로 창의적인 수와 새로운 수순을 개발하고 있다고 합니다. 체스 분야에도 유사 사례가 있다고 하네요. 이는 인공지능의 등장으로 인간이 다양한 분야에서 한계를 뛰어넘을 수 있다는 것을 암시합니다.
프롬프트 엔지니어링에서도 마찬가지 기대를 해볼 수 있지 않을까 생각해 봅니다. LLM의 수학문제 해결 능력 향상을 위해 ‘LLM이 생성한 프롬프트’에, 수학문제 해결과 전혀 상관없어 보이는 스타트렉 이야기가 등장한 사례는 많은 사람들을 충격에 빠뜨렸습니다.[3] 아무리 창의적인 인간 프롬프트 엔지니어라고 해도 생각해 낼 가능성이 희박한, 아니 거의 없는 프롬프트를 LLM이 만들어 낸 겁니다.
이러한 도전은 인간 프롬프트 엔지니어의 창의력을 전혀 새로운 차원으로 끌어올릴 것이라 생각합니다. 인간은 LLM으로부터 창의적 프롬프트의 힌트를 얻고, 여기에 인간 고유의 통찰력, 추상적 사고 능력과 창의성을 더해 특정 태스크에서 LLM의 능력을 한껏 이끌어낼 수 있는 프롬프트를 개발해 나가지 않을까요? 인간의 입장에서 기계를 바라보고, 보다 효과적으로 인공지능과 상호작용(interaction)할 수 있는 프롬프트를 인공지능과 함께 개발해 나감으로써 우리는 인간과 기계의 협업이라는 새로운 지평을 열어갈 수 있을 것입니다.
지금 프롬프트 엔지니어가 맡고 있는 역할은 가까운 미래에 ‘인간과 인공지능이 서로의 강점을 인정하고 보완하며 함께 성장해 나가는 새로운 패러다임’ 속으로 녹아들어갈 가능성이 큽니다. 이것이 바로 인간과 인공지능의 상호작용에 있어서 인간의 역할이 새롭게 그리고 동적으로 정의되고 발전해 나가는 것을 의미합니다. 그것은 인간의 직관과 창의성, 통찰력, 추상적 사고 능력, 감성적 이해력과 인공지능의 방대한 패턴 인식 능력, 새로운 아이디어 제안 능력이 만나 시너지를 일으키는 형태로 나타날 것이고, 이를 통해 우리는 지금까지 상상하지 못했던 혁신적인 방법으로 인공지능과 상호작용 해 나가며 새로운 가치 창출 방식을 만들어낼 수 있을지도 모릅니다.
현재 프롬프트 엔지니어링 분야에서 축적되는 지식과 노하우는 향후 등장할 새로운 인공지능 기술과의 상호작용에 있어서도 중요한 역할을 할 것이 분명하다고 개인적으로 생각합니다. 비록 현재의 이런 저런 프롬프트 엔지니어링 ‘기법’들이 미래에는 쓸모없는 기술이(obsolete technique) 될 수도 있겠지만, 이 과정에서 쌓은 인간-인공지능 간 상호작용에 대한 이해와 통찰력은 앞으로도 계속해서 가치를 발휘하게 될 것입니다.
References
[1] D. Genkina, “AI prompt engineering is dead: Long live AI prompt engineering”, IEEE Spectrum, 2024, Mar 6, Available: https://spectrum.ieee.org/prompt-engineering-is-dead
[2] Y. Zhou et al., “Large Language Models Are Human-Level Prompt Engineers”, arXiv 2022, 2211.01910
[3] R. Battle et al., “The Unreasonable Effectiveness of Eccentric Automatic Prompts”, arXiv 2024, 2402.10949
[4] A. Albert(@alexalbert__), 2024, Mar 12, Available: https://twitter.com/alexalbert__/status/1767258557039378511
[5] L. Martin, “Claude-ception: Teaching Claude3 to prompt engineer itself”, 2024, Mar 20, Available: https://www.youtube.com/watch?v=Vn8A3BxfplE&t=614s
[6] https://github.com/stanfordnlp/dspy
[7] 박시용, “AI가 받쳐주고 인간이 완성한다”, 2024, Apr 11, Available: https://www.facebook.com/syp.sypark/posts/pfbid02Zs484z4x1Jm22M9nqHcVioLg4BfhzRwuKKogHJwomsjnjwdToCjedzThdfWJ5iF3l
[8] H. Karlsson, “After AI beat them, professional Go players got better and more creative”, 2024, Jan 23, Available: https://www.henrikkarlsson.xyz/p/go?fbclid=IwAR1W1fHZ14_eKpKcH68YUUm1b96CO-a7e4xBRB5TqiFNOdHXT6QfN26MFQw