툴 정리하기
- 데이터 수집(웹 스크랩핑) 노코드 툴 - octoparse
- 데이터 분석 노코드 툴 - orange
- 데이터 분석과 머신러닝을 위한 노코드 툴
- 드래그 앤 드롭 방식으로 데이터를 시각화하고 분석할 수 있음
- LLM 테스트 툴
- flowise
- groq -
- 클로드 피드백 주고 파인튜닝 최적화하는 방법
- 논문 정리 플랫폼
- litmap - ai 논문 찾아볼 수 있는 사이트
- elicit - 논문 비교 분석 추천
2. LLM 프롬프트 엔지니어링 & RAG & 파인튜닝에 대한 내용 정리
- [[Inference 차원의 성능 향상 패러다임]]
- [[프롬프트 엔지니어링 방법]] 정리
- [[RAG란]]?
- [[Fine Tuning이란]]?
- [[RAG와 FineTuning 비교]]
- [[Group-Reflection ]]
3. LLM 모델 성능평가 방법 정리
- [[프롬프트 엔지니어링 성능 평가 방법]]
- [[LLM 성능 평가 방법]]
프롬프트 엔지니어링으로 정확도 향상폭을 키울 수 있음.
-> 풀고자하는 문제 해결 => 데이터 파인튜닝 + 프롬프트 엔지니어링
프롬프트 엔지니어링 학습 사이트 : https://learnprompting.org/
프롬프트 엔지니어링 기법
1. 예시 많이 넣어주기
- Zero shot - 예제 x
- One shot - 예제 1개
- Few shot - 예제 몇개 -> 여기까지는 프롬프트 안에다가 담기
- [[Fine Tuning이란]]- 예제 10개 이상 넣어주는 것
2. System Instruction - 까먹지 말아야 할 정보 여기에 넣어야 안까먹음
User Input
3. 생각의 사슬 기법(Chain of Thought) - 풀이과정
- 예제를 넣어줄 때 풀이과정을 함께 넣어주면 답변을 더 잘한다.
- chat gpt에서는 풀이 과정 생각하는 걸 숨겨놓는 경우도 있음
- 파인튜닝 데이터셋을 만들 때도 쓸 수 있음 !
- 추론 향상 모델에 들어가 있음 - 굉장히 중요
- Scaling low를 빗겨갈 수 있음
- 답변을 할 때 추론 레벨에서 답변을 향상시킴
- 연산을 덜 먹고 경제적임
- 현실적으로 기업레벨에서 해볼만 함
- 베이스 모델 크기가 크면 클 수록 성능 향상 폭이 큼 ㅠㅠ
- 작은 모델은 학습한 데이터에 해당 패턴이 없을 수 있기 때문
4. 반례를 알려주는 방법 (Contrastive Chain-of-Thought)
- 예제를 넣어줄 때 반례도 함께 넣는 것
- 이미지 인식 모델에서 많이 썼음
- 어떨 때 잘 동작 ?
- 풀려는 문제가 일반적 상식과 다를 때
- ex) 특정 도메인의 문제
5. Chain-of-Code(CoC)
- 문제 풀이 과정을 코드로 하게 하니까 성능이 높아짐 !
- 코드를 짜서 넣어주기
- 구글 딥마인드 연구
6. Self-Consistency
- 다수의 답변을 생성하게 한 다음, 투표를 통해 가장 높은 점수의 답변을 채택
7. Diversity-of-Thought
- 접근 방법을 다르게 줌
- 다양한 접근 방법을 생성하게 한 다음, 투표를 통해 가장 높은 점수의 답변을 채택
- 같은 방법에 대한 여러 형태의 답안을 내는 SC와 차이
- SC 대비 상대적으로적은답변의 숫자로도성능이향상
8. Self-Discover
1. ex) 연산 자원, 데드라인, 로컬 환경 고려 -> LoRA, Full Finetuning
2. 선박 설계, IoT 장애 감지 등 - 회항이 5회 이상 연속으로 늦으면 장애 -> Resoning Module -> 탐지 성능 향상
3. 이런 식으로 문제를 풀어봐 접근 방법의 자세한 제시
4. ex)
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. 문제는 창의적인 해결책과 혁신이 필요한 디자인 도전인가?
31. 문제는 단지 개별 사례만이 아니라 체계적 혹은 구조적 문제를 다루어야 하는가?
32. 문제는 즉각적인 관심과 조치가 필요한 시간에 민감하거나 긴급한 문제인가?
33. 이와 같은 문제 명세에 대해 일반적으로 어떤 종류의 해결책이 제시되는가?
34. 문제 명세와 현재 최고의 해결책을 고려할 때, 다른 가능한 해결책에 대해 추측해 보라.
35. 현재 최고의 해결책이 완전히 틀렸다고 가정하면, 문제 명세를 생각할 수 있는 다른 방법은 무엇인가?
36. 이와 같은 문제 명세에 대해 알고 있는 것을 고려할 때, 현재 최고의 해결책을 수정하는 가장 좋은 방법은 무엇인가?
37. 현재 최고의 해결책을 무시하고, 문제에 대한 전혀 새로운 해결책을 만들어 보라.
38. 한 걸음씩 생각해 보자.
39. 한 걸음씩 계획을 세우고, 좋은 기호와 설명을 통해 그것을 실행하자.
9. Self-Notes
- 스스로 추론하는 과정 속에서 질문과 답변을 기록하며 추론하는 방식-
10. Optimizer Instruction (매직 프롬프트)
1. 롤플레잉 : 기대하는 결과 값 넣어주기
2. 답변의 형식 지정하기
3. 모르면 모른다고 말하게 하기
4. 긍정형 명령 : "차근차근 풀어봐.", "심호흡을 하고 차근차근 문제를 풀어봐"
5. 팁 줄게 -> 너무 많이하면 무리수 둠
6. 혼난다 -> 너무 많이 하면 잘 모르겠다고 그럼 ㅋㅋㅋ
7. 정말 중요한 문제야 -> context 들어가서 성능 향상
- o* 모델은 명확한 Task & 적당한 롤플레잉
- 4o 모델은 자세한 롤플레잉, 매직 프롬프트 잘 먹힘
### 1. 평가 기준
- 정확성
- 일관성
- 유창성
- 창의성
- 편향 및 윤리성
- 출력 형식 준수
### 2. 정량적 평가 방법
- 정확도 측정 - LLM의 응답을 정답 데이터와 비교하여 성능을 수치로 측정
- Accuracy
- F1 Score
- BLEU
- ROUGE
- Self-Consistency - 동일한 질문을 여러 번 실행하고 다수결 투표로 최적의 답을 선택 (일관성)
- Likert Scale - 사람 평가자가 1~5점 등급을 매겨 평가
- Pairwise Comparison - 두 개의 프롬프트 결과를 비교하여 더 나은 응답 선택
### 3. 정성적 평가 방법
- 수치화하기 어려운 자연스러움, 창의성, 편향성 등을 인간 평가자가 직접 평가하는 방법
- Human Rating - 평가자가 직접 모델의 응답을 보고 점수를 매김
- Prompt Chaining - 여러 개의 프롬프트를 연속 실행하여 논리적 일관성을 테스트
- Diversity Test - 같은 프롬프트에서 생성된 답변이 얼마나 다양한지 측정
- Bias & Fairness Test - 특정 집단에 대해 편향적인 답변을 하는지 검토
=> 전체 답변을 놓고 상대평가를 하면 객관성을 유지할 수 있지 않을까