프롬프트 엔지니어링을 얘기하기 전에, LLM이 무엇인지 정확히 알고 가자!

LLM(Large Language Model, 대규모 언어 모델)이란?

: 빅데이터 시대에 등장한 수억 개의 매개 변수를 가진 인공신경망으로 이루어진 거대한 언어모델로, 대량의 텍스트 데이터, 특히 인간의 자연어 처리를 위해 학습된다. 이러한 언어 모델은, 주어진 문맥 정보를 바탕으로 텍스트를 생성하거나 이해하는 데에 사용된다.


LLM의 주요 특징

  • 대량의 데이터 학습 : 웹상의 텍스트(Wikipedia, Github, Twittwer 등), 책, 기사 등 다양한 소스에서 수십 또는 수백 GB의 텍스트 데이터에 대해 학습한다.
  • 수억 개의 매개 변수 : LLM은 수억 또는 그 이상의 매개변수를 포함할 수 있으며, 이로 인해 더 복잡한 패턴과 구조를 학습할 수 있게 된다.
  • 다양한 태스크 수행 : LLM은 다양한 자연어 처리 태스크를 수행할 수 있는데, 이를테면, 텍스트 생성, 질문 응답, 번역, 요약 등의 작업을 수행할 수 있다.
  • 전이 학습(Transfer Learning) : 하나의 문제를 해결하고 이와 다르면서 관련된 문제에 적용하는 동안 얻은 지식을 저장하는 데에 집중하는 기계 학습 기법이다.
  • Emergent Ability : 데이터의 학습량에 따라 성능이 미미하다가, 특정 임계점을 지나면 급작스럽게 뛰어난 퍼포먼스 및 자연어 처리 능력을 갖추게 되는 것LLM의 특징이다. Emergent Ability를 갖게 되면, 다음과 같은 3가지 특징을 띄게 된다.
    • Instruction Following : 명령어를 그대로 따르는 특성이다. Emergent Ability 단계 이전의 언어 모델은, 앞뒤 문맥을 파악하여 정답일 확률이 높은 문장들을 내어주거나 학습된 문장들 중 비슷한 문장을 쿼리해주는 역할이 위주인 반면, Emergent Ability 단계 이후의 언어 모델은, 단순 확률 및 쿼리에 그치지 않고, 앞에 있던 문장을 이해해서 그것의 지시를 따르는 수준까지 이르게 되는 것이다.

      프롬프트 예시)
      더보기
      양자역학의 불확정성의 원리에 대해 200자 이내로 설명해줘.

    • In-Context Learning(ICL) : 맥락을 굉장히 잘 파악하고, 해당 맥락에 맞는 텍스트를 생성할 줄 안다. 이를 통해, 문서에 대한 유사도 검색까지도 가능해진다.

      프롬프트 예시1)
      더보기
      너는 리처드 파인만이고, 나는 물리학에 대해 아무것도 모르는 일반인이다. 일반인도 이해하기 쉽게 불확정성 원리에 대해 200자 이내로 설명해줘.

      프롬프트 예시2)
      더보기
      다음 글을 참고하여 홍길동이 밥을 언제 먹었는지 알려줘라.
      """
      새벽녘, 홍길동은 쌀로 만든 따뜻한 국물 요리와 신선한 야채 샐러드로 아침을 시작했다. 향긋한 녹차로 마무리 지으며, 하루를 여는 에너지를 얻었다. 정오가 되자, 그는 해산물과 여러 채소가 들어간 김치찌개와 바삭한 김 몇 조각을 즐겼다. 오후 시간에는 과일과 견과류로 달콤하고 건강한 간식을 골랐다.
      저녁이 되어, 홍길동은 구운 닭고기와 다양한 야채를 곁들인 샐러드를 택했다. 밤이 깊어감에 따라, 그는 가벼운 야식으로 우유와 쿠키를 조금 취했다. 이렇게 홍길동은 하루 종일 다양한 음식을 취하며 건강하고 활기찬 하루를 보냈다.
      """

    • Step-by-step Reasoning : LLM의 단점에서 기인한 것으로, LLM은 논리적 추론 능력은 뛰어나지 못하다. 그래서 커다란 질의를 단계별 또는 작은 단위의 태스크들로 수행하게끔 하면, 작은 단위에서의 파악할 문맥 및 논리가 급격히 줄어들기 때문에 더 잘 수행하는 특징이 있다.

      프롬프트 예시)
      더보기
      다음 문제를 보고 Data analysis를 사용하지 말고, 문제를 다시 말하거나 풀이과정 없이 답만 말해라.
      """
      A는 현재 총 5개의 테니스공을 가지고 있다.

      테니스를 칠 때마다 시간당 1개의 공을 잃어버린다.

      테니스를 치기 전 다음의 규칙에 따라 공을 구매해야 한다.
      1. 공이 2개 이하로 남아있다.
      2. 해당 주에 공을 구매한 적이 없어야 한다. (월요일부터 일요일까지를 한 주로 본다.)
      3. 공은 한 번 구매할 때 5개씩 구매한다.

      평일에는 1시간씩 테니스를 치고, 토/일요일에는 하루에 2시간씩 친다.

      오늘은 월요일이며 오늘부터 1일차라고 했을 때, A가 공이 없어서 테니스를 치지 못하는 날은 몇일차인가?
      """
      프롬프트 보완)
      더보기
      날짜별로 다음의 항목을 표시하여 다시 계산하여라.
      [n]주차 {요일} : 공 m개가 남아 있음. {공을 구매함} l개 소모. 총 K개 남음. 이번주 구매내역 {있음/없음}

LLM의 한계

  • 최신의 데이터가 학습되어 있지 않다.
  • 할루시네이션(Hallucination) : AI 모델이 정확하지 않거나 사실이 아닌 조작된 정보를 생성하는 것을 의미
  • 근거자료가 부족하다.
  • 커스터마이징에 어려움이 있다. 다시 학습시키거나 fine-tuning조차도 비용이 상당히 많이 든다.

프롬프트 엔지니어링(Prompt Engineering)이란?

: NLP 분야의 개념으로, AI가 생성하는 결과물의 품질을 높일 수 있는 *프롬프트 입력값들의 조합을 찾는 작업

*프롬프트(Prompt) : AI 분야에서의 프롬프트는, AI 모델로부터 응답을 생성하기 위한 입력값이라고 정의할 수 있다.

 

프롬프트는 다음과 같은 구성 요소를 가지며, 해당 요소들을 반드시 모두 포함하여야 하는 것은 아니다.

프롬프트의 구성 요소

  • Instruction : 모델이 수행하기를 원하는 특정 Task 또는 지시 사항
  • Context : 모델이 보다 더 나은 답변을 하도록 유도하는 외부 정보 또는 추가 내용
  • Input Data : 답을 구하고자 하는 것에 대한 Input 또는 Query문
  • Output Indicator : 결과물의 유형 또는 형식을 나타내는 요소

프롬프트를 잘 사용하는 방법은, LLM의 특성을 얼마나 최대한으로 활용하는가로 볼 수 있다.

프롬프트 작성을 위한 기본 가이드라인

1. 대화 스타일 조정

API를 호출하여 사용할 경우, AI 모델의 대화 스타일을 조정할 수 있는 주요 값들이 있는데, 이것들을 적절히 조율할 경우, 프롬프트 결과의 정확도를 높일 수 있다.

  • Temperature : 답변의 창의성과 무작위성을 조정하는 값.
    최소 0, 최대 1의 값을 가지며, 해당값이 낮을수록 사실에 근거한 정확한 답변을 제공하고, 높을수록 보다 창의적인 결과물을 생성하게 된다.
  • Top_p : 답변의 무작위성을 제어하는 조정값.
    Temperature와 마찬가지로, 값이 낮을수록 답변이 보다 정확하고 높아질수록 창의적이고 광범위해진다.
  • frequency_penalty : 값이 높을수록 AI가 기존 답변에서 많이 사용하는 단어를 답변에 포함하도록 한다.
    반대로 값이 0이라면, 페널티가 전혀 주어지지 않아, AI가 흔히 사용되지 않는 단어를 답변에 포함할 가능성을 높이게 된다.
  • presence_penalty : 값이 높을수록 AI가 유사하거나 동일한 단어 및 문구를 답변 시 반복할 가능성을 낮추게 된다.
    반대로 값이 0이라면, 페널티가 전혀 주어지지 않아,  AI가 단어나 문구를 반복할 가능성이 높아지게 된다.

2. 미사여구를 최소화하여 쉽고 간결하게 표현

프롬프트로서 비추천 예시) 

더보기

혹시 가능하다면, 인공지능 분야에서 트랜스포머가 어떤 개념인지, 파이썬이나 C++같은 프로그래밍 언어들을 한 번도 활용 해본 적 없는 모든 사람들을 대상으로 알아듣기 쉽게 글로 설명해줄 수 있어?

 

위 예시를 개선한 프롬프트) 

더보기

비개발자들을 대상으로 트랜스포머의 개념을 쉽게 설명해줘.

 

3. 열린 질문보다는 닫힌 지시문을 사용할 것

LLM의 Instruction Following 특징을 잘 활용하기 위해 지정된 프롬프트 가이드라인이라고 볼 수 있다.

 

다음과 같이, 모호하고 주관적인 답변이 많이 가능할 것 같은 질문보다는, LLM이 적절한 근거를 들어 답변을 낼 수 있도록 보고서와 같은 Form을 함께 제시하여 지시문을 사용해야, 맥락을 이해하고 해당 지시를 잘 따를 수 있게 된다.

 

프롬프트로서 비추천 예시) 

더보기

프롬프트 엔지니어라는 직업이 미래에도 지속될 수 있을까?

 

위 예시를 개선한 프롬프트)

더보기

프롬프트 엔지니어가 미래에도 지속될 수 있는 직업인지에 대한 보고서를 써줘.

 

4. InstructionContext를 구체적으로 명시

구분 기호를 사용하여 참고 문장 또는 맥락 문장(Context)에 작성하며, 지시 문장(Instruction)은 가능한 맨 뒤에 사용하는 것이 좋다.

 

아래 링크의 예시를 통해 살펴보자!

https://chatx.ai/marketplace/chatgpt/write-a-novel-with-chatgpt/

 

Write a novel with ChatGPT - ChatX

This ChatGPT prompt can help you with a starting point. By using this prompt, you can generate ideas for characters, storylines, and settings.

chatx.ai

 

소설가로서의 역할과 목표를 chatgpt에게 Context로 알려주고, 이후 사용자가 실제 원하는 Instruction에 대해서는 특수 문자로 묶어준 예시)

더보기

소설가로서 너의 임무는 독자의 마음을 사로잡고 오랜 시간동안 몰입할 수 있는 이야기를 만드는거야.

장르는 판타지, 로맨스, 역사 소설 등 어떤 장르든 자유롭게 선택 가능해.

주요 목표는 매력적인 줄거리, 잘 발달된 캐릭터, 놀라운 클라이맥스로 눈에 띄는 이야기를 만드는 거야.

너의 첫 번째 과제는, [다른 행성에 사는 한 남자의 이야기를 다룬 공상과학 소설을 작성하는 것으로, 미래 기술, 외계 생명체, 환상적인 개념을 다룰 수 있어. 너의 이야기는 독자들을 모험과 미스터리 흥분으로 가득 찬 흥미진진한 신세계로 안내해야 해. 목표는 독자들에게 깊은 인상을 남길 수 있는, 생각을 자극하는 동시에 재미있는 공상 과학 소설을 만드는거야.]

 

5. 예제를 함께 제공

Main-Task 또는 Instruction을 요청하기 전, 올바른 질문과 답변 예제를 한 개 또는 다수 제공하는 기법을 활용할 수 있다.

 

6. RAG를 활용

RAG(Retrieval Augmented Generation, 검색 증강 생성)

: 외부 소스에서 가져온 정보로 생성형 AI 모델의 정확성과 신뢰성을 향상시키는 기술

 

-> LLM 모델의 학습되어 있는 데이터만 활용하지 않고, 모델 외부의 자료도 답을 도출하는 데에 함께 사용할 수 있도록 한다.

-> 모델 학습 없이도 외부 데이터를 사용함으로써 최신 데이터에 기반으로 한 정답에 대한 정확도가 올라간다.

-> 이에 따라 최신 회사 정보도 활용이 가능하다.

 

RAG의 한계점

  • 내부 데이터의 DB/검색엔진의 성능이 매우 중요하다.
  • RAG을 위한 별도의 내부 시스템 구축이 필요하다.
  • Hallucination 및 부정확한 결과 출력을 100% 막을 수는 없다.

참고

https://www.youtube.com/watch?v=rMJErYfGLCU&t=310s

https://tech.kakaoenterprise.com/188

 

[IT TREND] 프롬프트 엔지니어링, AI라는 도구를 잘 사용하는 방법

시작하며 생성형 AI, 그 중에서도 특히 거대 언어 모델들을 중심으로 기술 시장은 이례없던 속도로 움직이고 있습니다. 대중의 생성형 AI에 대한 높아진 관심을 기반으로 다양한 애플리케이션 사

tech.kakaoenterprise.com

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기