본문 바로가기

코딩/자연어처리

[생성형 AI]Chat GPT 효율적으로 사용하기 - 프롬프트 엔지니어링

반응형

  최근 Chat GPT를 좀더 효율적으로 사용할 수 있는 방법에 대해 공부하고 있다. 유튜브에서 좋은 영상을 하나 찾았고, 영상의 내용을 간단히 정리할 겸 올려보는 포스팅.

 

1. LLM의 Emergent Ability

 

  LLM은 파라미터수가 많고 인공신경망으로 이루어진 언어모델이다. 영상에서는 LLM이 Emergent Ability라는 특징을 가진다고 설명한다. 이 특징에 따라  LLM은 3가지 능력을 가지는데 Instruction Following, In-Context Learning, Step-by-Step resoning을 말한다.

 

1) Instruction Following :

LLM은 명령어를 그대로 따른다. "나이거에 대해 알려줘?"라는 질문을 했을 때, 이전의 통계학적인 언어모델과 LLM을 비교해보면 아래와 같다.

 

- 이전의 언어모델 : 확률적으로 이전에 있었던 문장 뒤에 올만한 문장을 답으로 한다. 즉, 문장 완성에 초점을 맞춤 혹은 이미 존재하는 문장을 학습시켜 비슷한 문장을 조회하는 방식으로 진행한다.

- LLM : 이전의 언어모델을  뛰어넘어서 앞에 있던 문장을 이해해서 지시를 따른다.


ex) 양자역학의 불확정성의 원리에 대해 100자 이내로 설명해줘

 

 

2) In-Context Learning (맥락)

LLM은 눈치가 빠르다. 문장과 문맥을 이해하는 능력을 가진다. 따라서, 질문자의 상황을 이해하고 그에 따라 답변 수준을 변경할 수

있다.

 

 

 

ex) 내 불편한 감정과 상황(맥락)에 대해 이해하고 인간적으로 상식적인 답변을 제공해줌

 

 

ex) 간식이라고 표현하지 않았지만 LLM은 유사도 검색을 진행 함.

(아마 간단한 요기랑 간식이 유사하다고 판단했을 것으로 추측 됨)

 

 

 

3) Step-by-step Reasoning

LLM의 단점에서 기인한 것-> LLM은 논리적 추론을 잘못한다.

근데 이걸 쪼개서 수행하라고 하면 LLM은 지시를 잘 수행한다.

 

ex) 아래는 영상의 이미지를 참고 함

 

하단 유튜브 영상 이미지 참고

 

살제로 답은 15일이 아니라 13일이지만 Chat GPT가 틀린 답을 주었다.

-> 영상에서는 Chain-of-Thought(CoT) 프롬프트 전략을 사용하면 된다고 이야기하고 있다.

이 전략은 아래와 같이 LLM에게 

날짜별로 계산하도록 가이드를 주는 방법이다.

 

하단 유튜브 영상 이미지 참고

 

 

  LLM의 이러한 특징들을 대표적으로 활용한 사례는 "고객서비스 자동화"이다. 고객서비스 자동화를 챗봇으로 구현함으로써 고객이 질문을  했을 때, 기존의 답변이 달린 것을 찾아서 유사한 답변을 해준다. AI가 항상 정확한 정답을 주지 않기 때문에 기존의 답변을 참고하기 때문에 좀더 정확한 답변이 가능하다.

 

 

2. LLM의 한계점

 

1) 데이터 부족

- 최신 데이터가 LLM에 있기 힘들다. 학습 1번에 비용이 큼. 

- 기업들의 보안정보는 LLM에 학습될 수 없다.

- 최근에 Chat GPT는 browsing 기능을 통해 데이터 부족 기능을 보완했다.

- Browsing 기능은 인터넷에서 검색하는 기능을 말함.

- 전지전능해보이는 chat gpt는 세상의 모든 데이터를 학습하지 않았다.(분명 모르는게 있다.)

 

2) 할루시네이션

- 할루시네이션은 Chat GPT가 답안(문장)을 생성하나 정확한 정보가 아닌 문장을 생성하는 것을 의미한다.

- 아직 왜 발생하는지 원인이 명확하게 밝혀지지 않았다.

- 학습한 데이터가 올바르지 않거나 뭔가 오해를 불러일으킬만한 자료를 학습해서 발생되는 것이 아닌가로 추정되고 있음.

- Chat GPT 4.0에서 어느정도 개선은 된걸로 확인되지만 근본적으로는 100%  해결이 안된 것으로 알고있다.

 

3) 근거자료가 부족하다.

LLM은 많은 지식을 학습했지만 학습 지식마다 태그를 달아놓지 않았기 때문에 어떤 근거로 답변을 주는 것인지 알 수없음

 

4) 커스터마이징이 어렵다.

LLM은 다시 학습시키는게 비용이 많이 든다.(Fine 튜닝 포함)

 

 

3. LLM 한계점 극복방안

 

1) 극복방안1 : 프롬프트 엔지니어링

- LLM에게 어떻게 원하는 바를 전달할까?

- 비용이 가장 적게 드는 방법

- 원하는 결과를 얻기 위해 잘 질문하기

 

아래의 팁을 잘 참고해보자.

 

TIP1. 지시 문장과 참고 문장을 구분한다.

기호사용 + 지시문장, 순서유의

기호는 아무거나 사용해도 된다.(구분할 수있으면 됨)

 

지시문장 : 다음 문제를 ~ 답만 말하기

구분기호 : """

참고문장 : """ 참고문장 """

 

 

LLM은 앞에서 해석하는 경향이 있음?

명령어는 맨뒤에, 참고사항은 앞쪽에

아래 예시는 뒤에 나온 문장을 따르지 않음.

 

※ 프롬프트 인젝션 : 명령을 취소시킬 수 있는 지시문장이 참고문장에 들어가 있어서 솔루션의 제약을 뚫고 나가는 현상이 있을 수 있다.

 

프롬프트 인젝션 사례 : 하단 영상 링크 이미지 참고

 

 

TIP2. 예시를 들어 설명하자.

 

 

TIP3. 지시가 충분했는지 되묻기

 

 


TIP4. 논리적 사고 필요시 쪼개서 지시하자.

(STEP BY STEP RESONING 특징 활용)

 

 

  위 팁 이외에도 영상에서는 Meta Language Creation pattern이라는 것을 제시한다. 아직 감은 정확히 안오지만 질문을 효율적으로 하기 위해 질문을 구조화하는 방법을 의미하는 것 같다.

 

 

 

 

2) 극복방안2. RAG(Retrieval Augmented Generation)

검색결과에 뭔가를 조금 더 첨가를 해서 생성한다. 외부에 있는 데이터를 가지고 오는 방식이다.

LLM은 자체적으로 많은 데이터를 학습했지만 어떤 근거자료를 바탕으로 대답을 하는지 알 수 없다. 또한 위에서 설명했듯이 정확한 정보가 아닌 답을 할 수 있다는 할루시네이션이라는 단점을 가지고 있다.

-> 이 점을 Chat GPT에서는 외부에서 데이터를 가져와서 개선하는 방식을 적용했다.(LLM을 다시 학습시키지 않아도 됨)

-> 해당 방식을 적용하면 기존의 단점이었던 회사 데이터를 사용하여 답변을 받을 수도 있다.

 

 

RAG에 대해서는 좀더 공부해 볼 예정이다.

 

 

참고영상 : 

https://www.youtube.com/watch?v=rMJErYfGLCU

 

728x90