brunch

You can make anything
by writing

C.S.Lewis

by 차근차근 AI Nov 16. 2023

생성형 AI에게 프롬프트로 일 시키기와 그 한계

세 번째 글에서 어마어마한 양의 데이터를 미리 학습한 하나의 대규모 언어 모델(Large Language Model, LLM)을 여러 가지 문제에 적용하는 생성형 AI의 문제 해결 방식에 대해 알아보았습니다. 이번 글에서는 이 대규모 언어 모델에게 어떻게 일을 시켜서 우리가 원하는 답변을 얻을 수 있는지와, 대규모 언어 모델의 한계에 대해 알아보겠습니다. 특히 대규모 언어 모델이 어떤 한계를 가지고 있는지 이해하는 것은 생성형 AI가 잘 못하는 일들을 시키는 상황이나, 잘못 생성된 정보를 이용하는 상황을 막을 수 있기 때문에 굉장히 중요합니다. 




프롬프트(prompt)로 일 시키기


대규모 언어 모델에게 일을 시키는 제일 간단한 방법은 풀고자 하는 문제에 맞게 프롬프트를 작성하는 방법입니다. 프롬프트는 대규모 언어 모델에 입력으로 들어가는 텍스트인데, 대규모 언어 모델이 우리가 원하는 출력을 생성하도록 지시하고, 답변 생성에 도움이 되는 정보를 알려주는 역할을 합니다. 예를 들어, 챗GPT를 사용할 때 우리가 "___ 해줘"라고 빈칸에 입력하는 부분이, GPT 모델에 입력되는 프롬프트입니다. 이때 아무런 예시를 주지 않고 바로 문제를 풀도록 지시하는 것을 제로샷(zero-shot), 문제 풀이와 관련된 몇 가지 예시를 프롬프트에 추가하는 방법을 퓨샷(few-shot)이라고 합니다. OpenAI 홈페이지에 올라온 프롬프트 예시를 한국말로 바꿔서 살펴보겠습니다.


- 제로샷 프롬프트 (예시 없음)

아래 주어진 텍스트에서 키워드를 추출하세요.

텍스트: {주어진 텍스트}

키워드:

- 퓨샷 프롬프트 (몇 가지 예시 제공)

아래 주어진 텍스트에서 키워드를 추출하세요.

텍스트 1: Stripe는 웹 개발자가 웹사이트 및 모바일 애플리케이션에 결제 처리를 통합하는 데 사용할 수 있는 API를 제공합니다.
키워드 1: Stripe, 결제 처리, API, 웹 개발자, 웹사이트, 모바일 애플리케이션
##
텍스트 2: OpenAI는 텍스트를 이해하고 생성하는 데 매우 능숙한 최첨단 언어 모델을 학습시켰습니다. 저희의 API는 이러한 모델에 대한 액세스를 제공하며, 언어 처리와 관련된 거의 모든 작업을 해결하는 데 사용할 수 있습니다.
키워드 2: OpenAI, 언어 모델, 텍스트 처리, API
##
텍스트 3: {주어진 텍스트}
키워드 3:


위에 나와있는 것처럼, 아무 예시 없이 바로 주어진 텍스트의 키워드를 추출하라고 지시하는 것이 제로샷, 텍스트 1, 2의 키워드 추출 예시를 각각 제공해 주고, 이를 참고해서 주어진 텍스트 3의 키워드를 추출하라고 지시하는 것이 퓨샷 방법입니다. 당연히 예시를 포함해서 프롬프트를 잘 작성할수록 더 적절한 답변이 생성되기를 기대해 볼 수 있겠죠? 앤드류 응 교수님이 강의에서 알려주신 프롬프트 작성 팁을 아래에 공유합니다:

- 상세하고 구체적으로 작성하기: 답변 생성에 도움이 되는 정보를 충분히 제공하고, 원하는 작업을 자세히 설명하기

- 모델이 답을 생각하도록 안내하기: 따라야 할 명확한 단계별 지침을 제공하기

- 실험 및 반복하기: 모든 문제에 딱 들어맞는 완벽한 프롬프트란 존재하지 않기 때문에, 반복적으로 프롬프트를 개선하고 실험해 보기


이렇게 사용자가 원하는 답변을 얻을 수 있도록 프롬프트를 잘 작성하는 작업을 프롬프트 엔지니어링이라고 합니다. 프롬프트 엔지니어링에 대해 좀 더 알고 싶으신 분들은 앤드류 응 교수님과 OpenAI의 Isa Fulford 님이 강의한 ChatGPT Prompt Engineering for Developers 강의를 추천드립니다.




대규모 언어 모델의 한계는?


지금까지 대규모 언어 모델에 프롬프트를 잘 입력해서 원하는 답변을 생성하는 방법에 대해 알아보았습니다. 그런데, 이것이 생성형 AI가 모든 일을 만능으로 해낼 수 있다는 것을 의미하는 것은 아닙니다. 대규모 언어 모델이 인터넷의 수많은 지식을 학습한 모델이라는 것을 생각해 보면 몇 가지 한계점들이 떠오르는데, 아래에서 하나씩 살펴보겠습니다.


- 최신 정보의 부재: 대규모 언어 모델이 데이터를 학습한 시점까지가 모델이 알고 있는 지식의 전부이므로, 그 이후에 일어난 일에 대해서는 알 수 없습니다.

- 환각(hallucination): 답변을 생성할 때, 사실만을 말하는 것이 아니라 그럴듯한 말을 지어내서 답변하는 것을 의미합니다. 학습 데이터가 부족하거나, 정제되지 않은 데이터가 학습 데이터에 포함된 경우 환각 현상의 원인이 될 수 있습니다.

- 컨텍스트 길이 제한: 컨텍스트 길이란 모델이 한번에 처리하고 기억할 수 있는 텍스트의 길이를 의미합니다. 이 길이 제한 때문에 프롬프트에 포함할 수 있는 정보의 양이 제한됩니다.

- 출력의 편향과 유해성: 인터넷의 데이터로 학습이 되었기 때문에 사회에 존재하는 다양한 편견들을 반영한 답변을 출력할 수도 있고, 유해한 말들을 출력할 수도 있는 위험이 있습니다. 


이러한 한계들이 존재하지만, 그렇다고 한계를 극복할 수 있는 방법이 없는 것은 아닙니다. 대규모 언어 모델의 한계를 극복하고 생성형 AI를 더 강력하게 사용하는 방법에 대해 다음 글에서 알아보겠습니다.



이번 글에서는 생성형 AI에게 프롬프트로 일을 시키는 방법과 그 한계에 대해 알아보았습니다. 한 줄로 요약하면 다음과 같습니다.

풀고자 하는 문제에 맞게 대규모 언어 모델에 입력되는 프롬프트를 잘 작성하여 원하는 답변을 얻을 수 있지만, 최신 정보의 부재, 환각, 컨텍스트 길이 제한, 출력의 편향과 유해성이라는 한계가 존재합니다.


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari