Introduction
이번 강의에서는 언어 모델을 사용하기 위해서 어떤 방식을 활용해야 하는지 2가지 챕터로 나눠서 설명한다.
첫번째는, 프롬프트 형식들이 어떻게 발전해왔는지 프롬프트의 아이디어는 무엇이 있는지 "PROMPTS ARE MAGIG SPELL"이라는 제목으로 설명한다.
두번째는, 언어 모델을 통해서 원하는 결과를 얻기 위해 어떻게 텍스트를 입력해야 하는지 "PROMPTING TECHNIQUES"라는 제목으로 설명한다.
LM are "just" statistical models of text
프롬프트는 선형대수 알고리즘을 기반으로 한다. 따라서 언어 모델은 텍스트를 기반한 통계적인 모델이다. 즉, 어떤 문장이 입력되면 그 다음에 어떤 단어가 올지 예측하도록 학습한 "Auto-regreesive"한 모델이다.
하지만, 통계에 기반한 모델은 표면적인 패턴으로 예측하기 때문에, 선형대수와 같은 전통적인 단순한 통계기반 모델의 경우 언어 모델에서 가장 좋은 방법은 아니다. 따라서, 해결 방안으로 확률 프로그램을 사용할 경우 더 나은 직관을 얻을 수 있다. Graphical 모델로 표현함으로써 랜덤하게 변수를 조작하고 매번 다른 답을 도출할 수 있기 때문이다. 따라서 복잡한 텍스트에 대해 통찰력을 제공할 수 있다. 하지만, 이 방법도 모호한 측면이 있다.
Prompts are magic spells
프롬프트 방식은 복잡한 규칙이 필요하기 때문에 마법의 주문이라고 발표자는 표현했다. 이때, 프롬프트를 사용하는 세가지 방식이 있다.
- 사전 훈련된 모델: GPT-3, LLAMA
- Instruction-tuned 모델: ChatGPR, 알파카
- Agent simulation: 최신 언어모델
Prompts are portals to alternate universes
앞서 말한 프롬프트는 우주를 대체할 수 있는 포탈이라고 표현했다. 그 이유는 언어 모델은 모든 문서에 확률에 따라 가중치를 부여해서 원하는 문서가 존재하는 세계로 연결하는 포털을 생성하기 때문이다.
이 언어 모델은 유사성이 있는 주변 텍스트를 생성할 순 있지만, 유사성이 전혀 없는 새로운 정보는 제공할 수 없다. 왜냐하면 모델의 주요 목표는 관련이 없는 확률 값은 감소 시키고, 확률 모델을 조절하여 관심 있는 부분에 초점을 맞추도록 예측 값을 집중시키기 때문이다.
그러므로, 이 언어 모델은 기존 아이디어와 유사한 아이디어와 문서를 찾는데 도움을 줄 수 있다.
A prompts can make a wish come true
프롬프트를 활용할 때, 모델에 편견이 없고 고정 관념에 의존하지 않는 답변을 요청하면 성능이 크게 향상될 수 있다. 또한 복잡한 대화보다는 낮은 수준의 텍스트 패턴에 집중해 단순화 해야한다. 또한 언어 모델은 설명의 시작 부분에만 집중하는 경향이 있으므로 설명을 글머리 기호로 전환하는 것도 좋다. "고정관념에 사로잡히지 마세요" 라는 말투 대신, "고정관념에 의존하지 않도록 답변해 주세요"라고 프롬프트를 작성하는 것이 좋다.
또한, 작성한 질문과 GPT모델이 생성한 답변은 annotator에게 전달이 되는데 답변에 대하여 annotator들이 확인한 다음, annotator들을 통해 일부 수정된다. 이후 수정된 답변들은 GPT-3 fine-tuning 과정에 활용된다.
A prompts can make a wish come true
사람들은 비디오 게임을 비롯해 다양한 설정들을 통해 상세한 페르소나를 가진 모델을 만들어 왔다. 언어모델도 마찬가지로 언어 모델의 페르소나는 모델을 입력 텍스트의 맥락에 맞게 번역과 같은 태스크에서 성능을 개선하는데 도움이 될 수 있다. 그 이유는 언어모델은 발화가 이루어지는 맥락과 환경을 이해하는 등 텍스트를 생성하는 프로세스를 모델링함으로써 더욱 향상되기 때문이다.
따라서 프롬프트를 신중하게 설계하면 agent를 시뮬레이션할 수 있는 언어 모델을 확보하여 원하는 답을 잘 얻을 수 있다.
하지만, 앞서말한 시뮬레이터도 인간이 작성한 텍스트로 훈련된다. 따라서 언어 모델은 단발성 데이터에 대해서는 인간의 사고를 잘 시뮬레이션 해 답변을 생성할 수 있지만, 개인이 오랜 시간동안 대화한 데이터에서는 맥락을 얻어서 올바른 답변을 생성하기에는 한계점이 있다.
따라서 커널에서 python 코드를 실행하는 등, 약간 시뮬레이터를 대체할 수 있다. 또한 pre-train된 모델을 활용해 agent 시뮬레이터를 만듦으로써 더큰 가치를 창출 할 수 있을 것이다.
Prompting Techniques
강연자는 few-shot learning이 prompting에 적합한 모델이 아니라고 한다. 비록, GPT-3 논문에서 few-shot learning이 소개되면서 수학이나, 번역 같은 task를 학습 할 수 있다는 것을 보여주었지만, pre-trained 시 학습된 데이터가 있어야지만 가능하다는 한계점이 존재한다.
예를 들어, 감성 분석에서 permuted labels을 무시하는 경향이 있기 때문이다. 게다가 permuted label을 수행하려면 관련된 많은 예제 데이터 셋이 필요하다. 그러므로 프롬프트를 few-shot learning을 통해 학습시키는 것이 제일 좋은 방식이 아닐 수도 있다.
추가적으로, 모델은 문자 그 자체가 아닌 토큰을 보기 때문에 단어를 반전하거나 돌리는 것에 한계점이 분명히 존재한다. 물론 문자 사이에 공백을 추가해 토큰을 변경해 성능을 개선할 수도 있고, GPT-4에서 이러한 문제를 일부 해결할 수 있지만, 여전히 한계점이 존재한다. 따라서 문자열 조작과 같은 task의 경우 LLM 대신 기존 프로그래밍을 사용하는것이 더 좋다.
최종적으로 정리하자면,
- 언어 모델은 구조화된 텍스트를 사용하면 결과를 개선시킬 수 있다.
- 프롬프트에서 입력 text를 더 작은 단위로 입력하고 단계별로 생각하면서, 더 좋은 성능을 얻도록 해야 한다.
- 여러가지 모델 결과를 앙상블하여 보다 정확한 답변을 얻는 것도 방법이다.
- random화를 사용해서 응답의 이질성을 높일 수 있다.
- few-shot, 앙상블, Chain of Thought과 같은 프롬프트 기술들을 활용해 성능을 향상시킬 수 있지만, 시간 및 컴퓨팅 비용도 염두하면서 향상시켜야 한다.
느낀점 및 알게된 점
네이버나 구글을 검색할때처럼 생각나는대로 프롬프트를 작성해서 chatGPT를 활용했는데, 프롬프트를 활용하는 방식에 대해 여러가지 측면으로 알게되니 "잘" 활용하는 것도 중요하다는 것을 깨닫게 되었다.
기존에 프롬프트에 대한 생각이 단순히 text를 입력하는 것이라고 생각했다면 훨씬 더 넓은 의미를 가지고 있다는 사실도 알게되었다. 그리고 항상 현재 나와있는 GPT모델이 현재 대부분의 NLP task에서 sota 모델이라고 생각했다. 하지만, 특정 task(문자열 바꾸는 것)과 같은 경우에는 기존방식을 활용하는게 제일 좋다는것을 알게되었다. 따라서 주어진 task에 맞춰서 여러가지 방식을 실험해 제일 best를 도출하는 것이 역시 답인 듯 하다.
그리고 역시 few-shot보단 zero-shot을 기반한 학습방식이 효율성 측면에서 우수하기 때문에 이 방식에 대해 좀 더 공부하고 적용시켜봐야겠다.
'Natural Language Processing > LLM Bootcamp' 카테고리의 다른 글
[LLM Bootcamp 리뷰] Launch an LLM App in One Hour (0) | 2023.05.16 |
---|
댓글