반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- sum
- 교차엔트로피오차
- 합계
- PYTHON
- 렐루함수
- 신경망
- COUNT
- 데이터베이스
- total
- Next.js
- 학습 구현
- Depthwise Convolution
- sigmoid
- 최댓값
- MIN
- max
- AVG
- 오차제곱합
- Pointwise Convolution
- 제약조건
- Depthwise Separagle Convolution
- sqlite3
- 평균
- PyQt5
- next.js 튜토리얼
- 밑바닥부터 시작하는 딥러닝
- join
- 수치미분
- 미니배치
- 시험데이터
Archives
- Today
- Total
우잉's Development
[LLM 기초] 프롬프트 엔지니어링 기초 1 본문
728x90
반응형
- 프롬프트 엔지니어링 과정
- 프롬프트 결과 설정
- 프롬프트 평가 설계
- 그라운딩 설계 및 평가
- 프롬프트 디자인
- 모니터링 및 개선
- 프롬프트 구성요소
- Role : 답변자로써 페르소나를 설정 답변에 대한 배경지식을 가지고 답하므로 더 높은 정확도로 답하게됨.
- Audience : 답변의 대상이 되는 특정 인구, 그룹 또는 개인의 페르소나
- Knowledge(Information) : 답변에 참고할 정보, 사용자의 질문에 해당하는 정보를 DB나 검색엔진등에서 가져와서 삽입 혹은 다음처럼, 유명한 정보 출처를 지정하는 방법 사용
예) 위키피디아의 내용에 따라 나폴레오에 대해 설명해주세요. - Task : 수행해야하는 특정 작업이나 목표
예) 500단어로 자기소개서를 작성해주세요. - Policy (Rule)
:응답을 만들 때 따라야 하는 특정 정책이나 규칙
예) 성격의 긍정적인 측면만을 강조하며 자기소개서를 작성해주세요.
:응답에 사용해야 할 특정 톤, 유머, 감정등의 스타일도 포함. (style)
예) 유머러스한 톤으로 생일 축하 메시지를 작성해주세요.
: 응답이 따라야 하는 특정 제한 사항이나 조건 (Constraint)
예) 한 페이지 내로 비즈니스 제안을 작성해주세요. - Format : 응답이 따라야하는 특정 형식이나 구조
예) JSON형식으로 결과를 출력해주세요. - Examples : 원하는 응답의 예시를 제공하여 원하는 출력을 더 잘 이해하도록 도움.
예) 다음과 같은 형식으로 출력해주세요.
{"name" : "wooing", "age": 20, ...}
- 프롬프팅 테크닉 7가지
- Few-shot examples
- 모델의 몇가지 예시를 제공하고 해당 예시를 참고하여 답변을 하도록 하여 더 나은 성능을 발휘하도록 만드는
기술
1) Zero-shot : 예제를 제공하지 않음
2) One-shot : 한 개의 예제를 제공함
3) Few-shot : 두 개 이상의 예제를 제공함
!! 제약사항!!
- 충분히 큰 모델에서만 유의미하게 작동
- 산술 추론 문제에는 적합하지 않음
- 정답을 정확히 주기 보다 레이블의 랜덤한 분포를 가진 것이 더 나음
(샘플의 내용이나 논리가 아니라, 형식만 참고한다는 연구가 있음) - Chain-of-Thought (CoT)
- LLM에게 이유에 대해서 설명하도록 만들어 답을 더 정확하게 생성하도록 만드는 기술로, 중간 추론 단계를
거치도록 하여, 복잡한 사고가 필요한 작업에 정확도를 향상 시키는 방법.
- 답이 나오는 과정에 대해 설명한 예시를 보여주고, 지시에 대한 답을 생성할 때 예시와 동일한 방식으로 그에
대한 과정을 설명하도록 만듦.
- 산수를 잘 못하는 LLM에게 이 방법을 사용하면 정확도가 올라갑니다.
- Zero-shot CoT : 다음 문구를 마지막에 추가함으로써 CoT예제를 제공하는 것과 같은 효과를 내어 성능을
향상시키는 방법. (예: 단계별로 생각해봅시다. 라는 문구를 추가.) - Self-Consistency
- 여러가지 방식의 CoT를 제공하고 이를 통해서 다양한 추론과정을 거친 다음 그중에 가장 많이 나온 즉, 일관된
답을 선택하는 확장된 방법
- 20개정도의 추론과정을 주는게 가장 좋은 방법을 낸다는 논문 결과가 있다.
- 추론경로를 최대한 다양하게 제공해야 하므로 토큰수를 많이 사용한다. 결과 취합을 위한 후처리도 필요하다. - Selection-Inference
- 복잡한 문제를 해결하기 위해서 여러 추론단계를 연결하기 위한 기술
- 선택과 추론사이를 번갈아 가면서 해석 가능한 원인과 결과에 추론 단계를 생성해서 최종단계를 내는 프레임
워크
- context에서 질문에 답할 수 있는 정보를 선택한 다음, 그 선택한 정보를 기반으로 답변을 하게 만드는 방법
- 추론 흔적이 남아 인과를 해석 가능하여 디버깅에 유용함.
- 논문에서 제안하는 반복적인 Selection-Inference를 실사용 케이스에 구현하려면 추론단계를 생성하고 종료
하는 프레임워크를 세심하게 구성해야 함.
- 복잡한 추론 뿐만 아니라, 주어진 컨텍스트에서 정보를 정확히 추출하여 답하도록 하여 성능을 높이는데에
유용함. - Least-to-Most
- 하나의 문제를 더 작은 여러개의 하위 작업으로 분할하는 기법.
- "{주어진문제}를 풀려면 먼저 다음 문제를 풀어야 합니다:" 라는 프론프트로 다음 문제(질문)을 생성하고, 해당 질문을 통해 다음 답을 생성. 이 과정을 최종 답변이 생성될 때 까지 반복.
- 하위 작업을은 한번에 하나씩 해결되며, 이전에 생성한 답을 다음 문제를 해결하는데 사용함.
- CoT와 Selection-Inference을 결합한 방법
- Task를 분할하여 작은 문제로 나눠 해결하는, 분할 정복 방법으로 응용하여 AutonomousAgent개발 등에 사용 - ReAct
- 실행 계획을 유도하고 추적하여 작업별로 실행할 액션을 선택하고 실행하는 방법
- 외부 API와 상호 작용하여 검색엔진을 통해 신뢰할 수 있는 정보를 사용하거나, 계산기나 이미지 생성등의
도구를 사용할 수 있음.
- 실제 툴을 사용해서 정보를 주입하지 않아도, Wikipedia 검색을 시뮬레이션 하는 것 만으로 성능을 향상 시킬
수 있음.
- 기본 프롬프트가 매우 길어지므로 토큰 제어에 유의 할 필요가 있음. - SelfEvaluation
- LLM이 생성한 결과를 LLM이 평가하게 하여, 오류를 잡거나 결과를 향상 시키는 방법
- 데이터셋 생성 자동화, RLHF의 AI피드백, 프롬프트 평가 자동화 등에 사용하여 데이터셋이나 LLM의 결과를
스스로 조정할 수 있게 함.
- 구체적인 프레임 워크가 존재하는 것은 아니며, 스스로 평가한다는 컨셉으로 Self Critique, Constitutional AI등 다양한 응용 방식이 있음.
- 장기적으로 Automatic Prompt Engineer, Autonomous Agent 등, AI가 스스로의 결과를 평가하고 향상 시키는
방법이 가장 중요한 방법론 중 하나가 될 것으로 예상함. 다만, GPT-4 수준의 성능을 가진 LLM으로만 의미가
있는 평가를 할 수 있으므로, 당분간은 사용범위에 상당한 제약이 있음.
- Few-shot examples
728x90
반응형
'Deep learning > LLM' 카테고리의 다른 글
[LLM 기본] 생성 조건 (0) | 2023.09.05 |
---|---|
[LLM 기초] 프롬프트 보안 (0) | 2023.08.31 |
[LLM 기초] 프롬프트 엔지니어링 기초2 (0) | 2023.08.31 |
[LLM 기초] 프롬프트 엔지니어링 개요 (0) | 2023.08.30 |
[LLM 기초] Prompt 엔지니어링 개념이해 (0) | 2023.08.29 |
Comments