-
[LLM] 프롬프트 엔지니어링공부/A.I 2024. 10. 20. 23:59
LLM(Large Language Model)
거대 언어 모델: 대형 언어 모델 또는 거대 언어 모델은 수많은 파라미터를 보유한 인공 신경망으로 구성되는 언어 모델
LLM Parameters
- temperature: 언어 생성 모델에서 생성하는 텍스트의 다양성을 조절하는 파라미터
값이 높을수록 생성하는 문장이 더 다양해지고, 낮을수록 더 일관성 있는 문장이 생성됨
즉, 사실 기반의 질답을 하는 경우에는 낮은 값을 창의력이나 아이디어가 필요한 경우에는 높은 값을 주면 도움이 될 수 있음
범위는 0 ~ 무한대이며, 주로 0.5 ~ 1.0사이로 사용한다.
- top_p: temperature과 비슷함, 텍스트의 확률 분포에서 상위 몇 퍼센트의 단어들만 선택할지를 결정하는 파라미터
1.0이면 모든 단어를 고려하고, 0.9면 상위 90%에 속하는 단어들만 사용함
마찬가지로 사실적 답변을 원한다면 이를 낮게 유지하면 됨
- Max Length: 모델이 생성하는 토큰의 수를 관리할 수 있음
답변 생성 시 최대 길이를 정의
- Stop Sequences: 모델의 토큰 생성을 중지하는 문자열로 모델의 응답 길이나 구조를 제어할 때 사용
예를 들어 '11'을 추가하면 리스트의 항목이 10개를 초과하지 않도록 할 수 있음
- Frequency Panalty: 동일한 단어나 구문이 반복되는 것을 줄일 때 사용
어떤 토큰이 응답 및 프롬프트에 등장한 빈도에 비례하여 다음에 등장할 토큰에 이익/불이익을 적용
값이 높을수록 동일한 단어가 반복될 가능성이 줄어들고 더 다양한 단어가 답변에 사용됨
값이 0이면 패널티가 없고, 음수로 설정하면 반복을 늘리게 됨
범위는 -2.0 ~ 2.0
- Presence Penalty: Frequency Panalty와 다르게 모든 토큰에 동일한 패널티가 적용됨
즉 토큰이 2회 등장하든 10회 등장하든 동일한 패널티가 적용됨, 일반적으로는 Frequency와 Presence 중 하나를 선택하여 사용
값이 0이면 패널티가 없음
범위는 -2.0 ~ 2.0
프롬프트 엔지니어링(Prompt Engineering)
프롬프트 엔지니어링은 AI의 한 개념으로, AI가 역량을 발휘할 수 있도록 적절한 지시어를 내려주는 것을 의미한다.
프롬프트 엔지니어링의 종류
1. Zero shot learning(제로 샷)
학습된 적 없는 새로운 문제를 해결할 수 있는 능력, 이전에 본 적 없는 데이터에도 적절한 답변을 생성하도록 훈련된 방식
2. One-shot learning(원 샷)
단 한 번의 학습 또는 예시만으로 새로운 작업을 수행할 수 있는 학습 방법
3. Few-shot learning(퓨 샷)
몇 개의 예시만으로 새로운 문제를 해결할 수 있는 능력으로 소량의 데이터로도 높은 성능을 발휘하도록 훈련된 방식
4. Chain of Thought(연쇄적 사고)
문제 해결을 위해 모델이 단계별로 사고 과정을 따라가는 방식, 복잡한 문제를 단계적으로 해결하도록 사고 과정을 학습
5. Self-Consistency(자기 일관성)
여러가지의 해결 경로 중에서 가장 일관성 있는 답을 선택하는 방법
다양한 사고의 경로를 생성하고 그 중 가장 일관된 결과를 찾는 방식6. Generate Knowledge Prompting(지식 생성 프롬프팅)
모델이 답을 생성하기 전에 관련 배경지식을 스스로 생각하게 유도하는 방법
7. Prompt Chaining(프롬프트 체이닝)
여러 프롬프트를 연속적으로 사용하여 복잡한 문제를 해결하는 방법, 프롬프트의 응답이 다음 프롬프트의 입력으로 사용됨
8. Tree of Thoughts(사고의 나무)
문제 해결 시 사고 경로를 나무 형태로 확장하여 다양한 해결책을 탐색하는 방법
9. Retrieval Augmented Generation(검색 기반 생성)
외부 지식베이스나 검색 엔진에서 정보를 가져와서 이를 기반으로 답변을 생성하는 방식으로 검색과 생성이 합쳐짐
10. Automatic Reasoning and Tool-use(자동 추론 및 도구 사용)
모델이 문제를 해결할 때 자동으로 추론하고 필요한 경우 도구를 활용하여 더 나은 답변을 제공하는 방법
11. Automatic Prompt Engineer(자동 프롬프트 엔지니어링)
모델이 스스로 최적의 프롬프트를 찾아서 문제를 해결하는 방식
문제에 따라 적합한 프롬프트를 스스로 설계함
12. Active-Prompt(능동적 프롬프트)
모델이 사용자의 피드백이나 상호작용을 바탕으로 프롬프트를 동적으로 수정하는 방식, 지속적인 학습과 개선을 함
13. Directional Stimulus Prompting(방향성 자극 프롬프트)
모델이 특정 방향으로 사고하여 문제를 해결하도록 유도를 해주는 방식
14. Program-Aided Language Models(프로그램 보조 언어 모델)
언어 모델이 문제 해결을 위해 프로그램을 사용하거나 작성할 수 있도록 지원하는 방식
해답을 얻기 위해 Python 인터프리터와 같은 프로그래밍 방식의 런타임을 통해 단계적으로 해결해 나감
15. ReAct(추론 + 행동)
모델이 논리적으로 추론하고 동시에 필요한 조치를 취하는 방식
16. Reflexion(반사적 사고)
모델이 과거의 자신의 답변에 대해 반성하고 개선하는 방식
17. Multimodal CoT(다중모달 연쇄적 사고)
텍스트 외에도 이미지, 소리 등 여러 형태의 데이터를 결합하여 문제를 해결하는 방식
18. Graph Prompting프롬프트 엔지니어링 기본
지시: 프롬프트의 시작 부분에 지시 사항을 명확히 하는 것
### 지시 ### 다음 텍스트를 스페인어로 바꿔줘 텍스트: "안녕하세요."
특이성: 모델에 실행시킬 지시와 작업을 구체적으로 설명하는 것
다음 텍스트에서 장소의 이름을 추출해 줘 원하는 형식: 장소: <콤마로 구분된 장소의 목록> 입력: ~~~~~
부정확성 피하기: 설명을 정확하게 하는 것
프롬프트 엔지니어링에 대해 설명해줘. 설명은 간결하게 몇 문장으로 해줘(X) 고등학생에게 프롬프트 엔지니어링의 개념을 2~3개의 문장으로 설명해 줘(O)
프롬프트 엔지니어링 예시
1. 문장 요약
2. 정보 추출
3. 질의응답
4. 텍스트 분류
5. 대화
6. 코드 생성
7. 추론
참고
프롬프트 엔지니어링 가이드
https://www.promptingguide.ai/kr
AI 어시스턴트 북, GPT 3.5 기반으로 다양한 형태의 문제를 생성하고 풀이를 제공
https://www.ki-it.com/_common/do.php?a=full&b=22&bidx=3507&aidx=38944
'공부 > A.I' 카테고리의 다른 글
[LLM] 프롬프트 엔지니어링 - 2 (1) 2024.10.21 [OpenCV] Frame latency 문제 (0) 2024.08.17 [YOLOv8] Hyperparameter Tuning (0) 2024.07.27 [YOLOv8] 라벨링부터 모델 테스트까지 (0) 2024.07.27 [Jetson Orin Nano] Csicam과 YOLOv8을 위한 기본 세팅 (2) 2024.07.27