Ref.
https://bgreat.tistory.com/m/231
LLM 모델 성능 향상을 위한 다양한 방법들
대형 언어 모델(LLM, Large Language Model)은 자연어 처리(NLP) 분야에서 많은 혁신을 이루었으며, 다양한 분야에 걸쳐 활용되고 있습니다. 그러나 이러한 모델의 성능을 극대화하기 위해서는 여러 기법
bgreat.tistory.com
초거대 언어 모델의 수업시대 2부 - 언어 모델은 어떻게 추론하는가
초거대 언어모델을 활용한 다양한 추론 방법에 대한 연구에 대해서 알아봅니다.
ncsoft.github.io
[프롬프트 엔지니어링] (3) 고급 기법: Few-shot, Chain-of-thought, Self-consistency, Selection-inference, Least-to-mo
이번 포스팅에서는 프롬프트 엔지니어링의 고급 기법들에 대해 알아보려고 해요. 이 기법들은 AI 모델이 복잡한 작업을 더 효과적으로 수행할 수 있도록 도와주는 중요한 도구들이에요. 특히 few
mvje.tistory.com
현재 진행중인 프로젝트에서, 모델이 최종적으로 풀어야하는 문제(데이터)는, 다음과 같이 분류할 수 있다.
사회 탐구 영역의 문제처럼 외부의 지식을 통해 풀어야하는 데이터 → RAG
수능 국어 문제처럼 지문을 읽고 추론(Inference)하는 능력 → ?
train데이터를 살펴보았을 때, 사회 탐구 영역스러운 문제처럼 외부 지식이 필요하다고 판단한 데이터는 RAG를 활용해보기로 팀원들과 논의되었다.
(RAG로 참고 문서를 가져와서, 참고 문서를 참조하도록 프롬프트에 추가해주는 방법으로)
지문을 읽고 질문의 답을 구하세요.<start_of_turn>user
지문:
상소하여 아뢰기를 , “신이 좌참 찬 송준길이 올린 차자를 보았는데 , 상복(喪服) 절차에 대하여 논한 것이 신과는 큰 차이가 있었습니다 . 장자를 위하여 3년을 입는 까닭은 위로 ‘정체(正體)’가 되기 때문이고 또 전 중(傳重: 조상의 제사나 가문의 법통을 전함)하기 때문입니다 . …(중략) … 무엇보다 중요한 것은 할아버지와 아버지의 뒤를 이은 ‘정체’이지, 꼭 첫째이기 때문에 참 최 3년 복을 입는 것은 아닙니다 .”라고 하였다 .-현종실록 -ㄱ.기 사환국으로 정권을 장악하였다 .ㄴ.인 조반정을 주도 하여 집권세력이 되었다 .ㄷ.정조 시기에 탕평 정치의 한 축을 이루었다 .ㄹ.이 이와 성혼의 문인을 중심으로 형성되었다.
질문:
상소한 인물이 속한 붕당에 대한 설명으로 옳은 것만을 모두 고르면?
선택지:
1 - ㄱ, ㄴ
2 - ㄱ, ㄷ
3 - ㄴ, ㄹ
4 - ㄷ, ㄹ
힌트:
나라 목록: 이 문서는 나라 목록이며, 전 세계 206개 나라의 각 현황과 주권 승인 정보를 개요 형태로 나열하고 있다.
이 목록은 명료화를 위해 두 부분으로 나뉘어 있다.
# 첫 번째 부분은 바티칸 시국과 팔레스타인을 포함하여 유엔 등 국제 기구에 가입되어 국제적인 승인을 널리 받았다고 여기는 195개 나라를 나열하고 있다.
# 두 번째 부분은 일부 지역의 주권을 사실상 (데 팍토) 행사하고 있지만, 아직 국제적인 승인을 널리 받지 않았다고 여기는 11개 나라를 나열하고 있다.
두 목록은 모두 가나다 순이다.
일부 국가의 경우 국가로서의 자격에 논쟁의 여부가 있으며, 이 때문에 이러한 목록을 엮는 것은 매우 어렵고 논란이 생길 수 있는 과정이다. 이 목록을 구성하고 있는 국가를 선정하는 기준에 대한 정보는 "포함 기준" 단락을 통해 설명하였다. 나라에 대한 일반적인 정보는 "국가" 문서에서 설명하고 있다.
힌트는 지문 내에서 답을 찾을 수 없을 때만 참고하세요.
1, 2, 3, 4, 5 중에 하나를 정답으로 고르세요. Let's think step by step.
정답:<end_of_turn>
<start_of_turn>model
2<end_of_turn>
그럼, 수능 국어 문제 영역스러운 문제는 어떻게 잘 풀어내도록 만들까?
paragraph에 근거가 그대로 나와있는(추론할 필요도 없는) 문제에 대해서 오히려 스스로 꼬아서 생각한다는 생각이 들어, 'Reader 쓰면 해결되는거 아닌가?' 라는 생각을 했는데, 현재 진행방향과 다른 생각이었다.
현재 "LLM에 프롬프트를 어떻게 줘야 더 잘 맞출 수 있을까?" 가 진행 방향인데, 진행 방향과 어긋나는 생각이었고, 앙상블로써 Reader모델을 섞는다고 하더라도, Reader로 해결할 수 있는 문제를 필터링해내는것도 일이라서, 그냥 창의적인 무언가 말고 시중에(?) 나와있는 기법들에 대해 더 잘 배워보기로 했다.
이를 고민해보기 위해 아래와 같은 내용들을 참고해보았다.
CoT, ToT, GoT 및 세 가지 방법을 잘 조합해서 사용하는 기법들
Ref : https://aiheroes.ai/community/153
https://aiheroes.ai/community/153
aiheroes.ai
CoT(Chain of Thoutht)
복잡한 문제 해결 과정에서 단계별 추론을 사용하여, 모델의 답변 퀄리티를 높이는 기법.
단순히 답을 내는 것이 아닌, 어떤 사고의 흐름을 통해 답을 냈는지 모델의 풀이과정을 보는 것을 목표로 한다.
(예시)
'''
프롬프트 : 아래 문제를 단계별로 풀어주세요.
문제 : 철수와 영희가 달리기 시합을 합니다. 철수의 달리기 속도는 100km/h 이고, 영희의 달리기 속도는
300,000km/s 입니다. 철수와 영희가 1분동안 이동한 거리는 몇 km일까요?
'''
'''
문제 해석
철수의 속도: 100km/h
영희의 속도: 300,000km/s
시간: 1분
풀이 과정
1단계: 단위 통일하기
먼저 두 사람의 속도 단위를 통일해야 합니다. 시간을 분으로 맞추겠습니다.
철수: 100km/h = 100km/60min = 5/3 km/min
영희: 300,000km/s = 300,000 * 60 km/min = 18,000,000 km/min
2단계: 1분 동안의 이동 거리 계산하기
철수의 이동 거리:
5/3 km/min * 1 min = 5/3 km ≈ 1.67 km
영희의 이동 거리:
18,000,000 km/min * 1 min = 18,000,000 km
결론
1분 동안:
철수는 약 1.67 km를 이동합니다.
영희는 18,000,000 km를 이동합니다.
참고: 영희의 속도는 빛의 속도와 비슷합니다. 실제로 사람이 이런 속도로 달릴 수는 없지만, 문제에서 주어진 대로 계산했습니다.
'''
CoT 프롬프팅은 모델이 step by step으로 문제를 풀어나갈 수 있게 해주며, 이를 통해 모델의 동작 방식에 대해서도 이해할 수 있게된다.
충분히 큰 규모의 상용 언어 모델에 CoT 시퀀스 예시를 추가하는식으로 쉽게 적용할 수 있다.
다만, CoT는 단 하나의 추론 경로만 가지며, 정확한 추론 경로를 보장할 수 없다는 문제점을 가진다.
즉, 단순히 Reasoning과정을 추가해주어 문제 해결 능력을 향상시킬 수 있으나, 단 한 갈래의 Reasoning만 가능하다는 문제점을 갖는다.
ToT(Tree of Tought)
ref : https://blog.kakaocloud.com/87
<지식 사전> 프롬프트 엔지니어링이란 ③ - 고급 기법 (CoT, ToT, ReAct)
프롬프트 엔지니어링의 기초를 다졌으니, 이제 좀 더 심화된 내용으로 들어가 볼까요? 오늘은 Chain of Thought, Tree of Thought, ReAct 프레임워크 등 프롬프트 엔지니어링의 고급 기법들을 소개하려고
blog.kakaocloud.com
ToT는 기본 프롬프팅이나 CoT기법 모두 가능하며, CoT처럼 단일한 추론 경로를 갖는 것이 아닌, 다양한 추론 경로를 가지며, 이 경로를 트리 구조로 표현하는 방식이다.
여러 사고의 흐름을 동시에 탐색할 수 있게 해주며, 각 추론에 대해 모두 평가해보고, 최적의 추론을 도출한다.
(예시)
'''
프롬프트 : 아래 문제를 Tree of Thought 방식으로 아래 제시된 각각 접근 방식에서 분석하고 그 중
최적의 솔루션을 찾아주세요.
문제: A 도시에서 B 도시로 가는 최적의 경로를 찾아주세요.
접근 방식:
1. 최단 거리 경로
2. 최소 시간 경로
3. 최소 비용 경로
트리 구조로 표현하면서, 각 접근 방식의 장단점을 분석하고 최적의 솔루션을 제안해 주세요.
'''
'''
트리 구조:
1. 최단 거리 경로
1.1. 고속도로 이용
장점: 거리가 가장 짧음
단점: 통행료가 비쌈, 정체 가능성 있음
1.2. 국도 이용
장점: 통행료가 없거나 저렴함
단점: 거리가 상대적으로 김, 신호등이 많아 시간이 오래 걸림
2. 최소 시간 경로
2.1. 고속철도 이용
장점: 가장 빠른 이동 수단
단점: 역까지의 접근성 고려 필요, 비용이 높음
2.2. 항공편 이용
장점: 장거리 이동 시 가장 빠름
단점: 공항까지의 접근성 고려 필요, 비용이 가장 높음
3. 최소 비용 경로
3.1. 버스 이용
장점: 가장 저렴한 이동 수단
단점: 시간이 오래 걸림, 환승 횟수가 많을 수 있음
3.2. 카풀 이용
장점: 비용 절감 효과가 있음
단점: 동승자와의 시간 조율 필요, 경로 유연성 낮음
최적의 솔루션:
- A 도시와 B 도시 간의 거리, 이동 시간, 비용 등을 종합적으로 고려할 때, 고속철도를 이용하는 것이 가장 최적의 솔루션으로 보입니다.
- 고속철도는 빠른 이동 속도와 함께, 항공편보다는 저렴한 비용으로 이용할 수 있습니다.
- 다만, A 도시와 B 도시의 고속철도 역까지의 접근성을 고려하여, 역까지의 이동 수단과 소요 시간을 함께 고려해야 할 것입니다.
- 만약 A 도시와 B 도시 간의 거리가 매우 먼 경우, 항공편을 이용하는 것이 시간 절약 측면에서 더 나은 선택일 수 있습니다.
'''
다양한 추론 경로를 통해 최적의 답변을 도출해내는 구조를 갖고있으며, 전체 과정을 Generation, Evaluation, Search Algorithm으로 분리해서 관리할 수 있다는 장점이 있다.
다만, 추론 경로의 구조가 단조롭고 유연하지 않으며, 생성되는 대부분의 추론 경로는 낭비된다.
GoT(Graph of Thought)
GoT는 그래프를 활용하여, 개념 간의 관계와 맥락을 표현함으로써 프롬프트를 설계하는 방법이다.
개념들을 정점(Vertex), 개념간의 관계를 간선(Edge)로 표현하는 그래프 구조를 기반으로 하며, 이를 통해 특정 주제에 대한 지식을 체계적으로 조직하고, 관련 개념 간의 연결성을 강화한다.
(예시)
'''
프롬프트:
기후 변화 대응 전략을 수립하기 위해 Graph of Thoughts 방식을 사용해주세요.
주요 노드로 '온실가스 감축', '재생에너지', '에너지 효율', '산업 구조 개편'을 고려하고, 각 노드 간의 관계와 영향을 분석해주세요.
GoT 결과:
온실가스 감축 (노드 1)
↓
재생에너지 (노드 2)
관계: 온실가스 감축의 주요 수단
영향: 화석연료 의존도 감소, 에너지 안보 강화
온실가스 감축 (노드 1)
↓
에너지 효율 (노드 3)
관계: 에너지 소비 절감을 통한 간접적 감축
영향: 비용 절감, 기술 혁신 촉진
재생에너지 (노드 2)
↔
산업 구조 개편 (노드 4)
관계: 상호 영향 및 시너지 효과
영향: 새로운 일자리 창출, 기존 산업의 변화
에너지 효율 (노드 3)
→
산업 구조 개편 (노드 4)
관계: 산업 프로세스 최적화 필요성 증가
영향: 생산성 향상, 경쟁력 강화
분석 결과:
온실가스 감축은 재생에너지와 에너지 효율 향상을 통해 가장 효과적으로 달성할 수 있습니다.
재생에너지 확대는 산업 구조 개편과 밀접한 관련이 있어, 새로운 경제 기회를 창출할 수 있습니다.
에너지 효율 개선은 산업 구조 개편을 촉진하며, 이는 전반적인 경제 경쟁력 향상으로 이어질 수 있습니다.
모든 노드가 상호 연결되어 있어, 통합적인 접근이 필요합니다.
'''
혼합해서 사용하기
CoT, ToT, GoT를 혼합해서 쓸 수도 있는데, 예를 들면 아래와 같은 식이다.
- CoT + ToT
CoT를 통해 문제 해결 과정을 단계별로 분해 + ToT를 통해 각 단계에 대한 관련 개념을 구체적으로 설명
- CoT + GoT
CoT로 추론 과정을 단계화 + GoT로 각 단계에서 필요한 지식을 제공 → AI가 추론 근거가 되는 지식을 더 명시적으로 활용할 수 있도록~
- ToT + GoT
ToT로 개념의 계층 구조를 설명 + GoT로 개념 간 연결 관계 및 속성 정보 제공 → AI가 주제에 대해 종합적으로 이해할 수 있도록 ~
이건 특히 전문분야(e.g. 법률, 의학 등)에서 유용하게 활용할 수도 있다.
- CoT + ToT + GoT
CoT로 추론 단계 구조화 + ToT&GoT로 고려해야할 요인 및 맥락 정보를 종합적으로 제공 → AI가 문제를 다각도로 분석하고, 최선의 솔류션을 도출하도록~
다만, 프롬프트에 다 때려박는다고 항상 좋은 결과를 가져오진 않는다. 주어진 task에 대한 특성 및 요구사항을 잘 파악해서, 이에 기반하여 프롬프트를 작성해야한다.
ReAct 프레임워크
ref : https://blog.kakaocloud.com/87
<지식 사전> 프롬프트 엔지니어링이란 ③ - 고급 기법 (CoT, ToT, ReAct)
프롬프트 엔지니어링의 기초를 다졌으니, 이제 좀 더 심화된 내용으로 들어가 볼까요? 오늘은 Chain of Thought, Tree of Thought, ReAct 프레임워크 등 프롬프트 엔지니어링의 고급 기법들을 소개하려고
blog.kakaocloud.com
ReAct = Reasoning(추론) + Action(행동) 을 연결하여 문제를 해결하는 방식이다.
모델이 문제에 대해 추론을 하고, 그에 대한 행동을 생성하고, 다시 그 행동의 결과를 바탕으로 추론하는 과정을 반복하는 것이다.
'''
“상황: 당신은 마케팅 회사에서 일하는 데이터 분석가입니다. 소셜 미디어 캠페인의 효과를 분석하는 새 프로젝트를 맡게 되었습니다.
이 캠페인은 여러 디지털 광고를 포함하고 있으며, 각 광고는 다양한 지표를 통해 성과가 측정됩니다.
문제: 최근 캠페인 데이터를 분석하던 중, 몇몇 광고가 예상보다 낮은 성과를 보이고 있는 것을 발견했습니다.
Reason: 당신의 역할은 이 문제의 원인을 파악하는 것입니다. 원인을 조사하기 위해 어떤 데이터를 분석하겠습니까?
이 문제에 대해 어떤 가설을 세울 수 있습니까?
Act: 원인을 파악한 후, 상황을 개선하기 위해 어떤 조치를 제안할 수 있습니까?
여러분의 제안은 어떤 근거에 기반하고 있습니까?”
'''
'''
<분석>
데이터 분석:
데이터 파일에서 사용자 참여율, 클릭 수, 전환율 등의 지표를 종합적으로 분석합니다.
특정 광고가 평균보다 낮은 성과를 보인 지표들을 상세히 파악합니다.
시간대별, 지역별, 타깃 오디언스별 데이터를 분석하여 어느 부분에서 문제가 발생했는지 추적합니다.
가설 설정:
타깃 오디언스가 잘못 설정되어 광고가 의도한 대상에게 도달하지 못했을 수 있습니다.
광고 콘텐츠의 메시지가 경쟁 광고에 비해 덜 매력적이거나 명확하지 않을 수 있습니다.
광고 게재 시간이 타깃 오디언스의 온라인 활동 시간과 맞지 않을 수 있습니다.
<조치 제안>
타깃 오디언스 재조정:
타깃 설정을 보다 세밀하게 조정하여, 광고가 정확한 대상에게 도달하도록 합니다.
이를 위해 타깃 오디언스의 소비 행태와 관심사를 재분석합니다.
광고 콘텐츠 개선:
광고 메시지를 더욱 명확하고 매력적으로 재작성하고, 디자인을 개선하여 사용자의 관심을 끌 수 있도록 합니다.
경쟁 광고를 분석하여 우리 광고의 차별점을 강조합니다.
광고 시간 조정:
광고가 게재되는 시간을 조정하여, 타깃 오디언스의 최대 활동 시간에 맞춰 효율을 높입니다.
데이터 분석을 통해 최적의 광고 시간대를 결정합니다.
'''
'''
프롬프트:
"ReAct 프레임워크를 사용하여 '서울에서 가장 인기 있는 관광지 3곳을 추천하고,
각 장소의 현재 날씨와 입장료를 알아보세요.' 라는 작업을 수행해주세요."
'''
'''
ReAct 결과:
사고: 서울의 인기 관광지 3곳을 찾아야 합니다.
행동: 서울 관광 정보 데이터베이스 검색
사고: 검색 결과, 경복궁, 남산서울타워, 명동이 가장 인기 있는 관광지로 나왔습니다. 이제 각 장소의 현재 날씨를 확인해야 합니다.
행동: 실시간 날씨 API를 통해 각 장소의 현재 날씨 확인
사고: 날씨 정보를 얻었습니다. 이제 각 장소의 입장료를 찾아야 합니다.
행동: 각 관광지의 공식 웹사이트에서 입장료 정보 검색
사고: 모든 정보를 수집했습니다. 이제 결과를 정리하겠습니다.
최종 응답:
서울의 인기 관광지 3곳과 그에 대한 정보는 다음과 같습니다:
경복궁
현재 날씨: 맑음, 기온 22°C
입장료: 성인 3,000원, 어린이 1,500원
남산서울타워
현재 날씨: 흐림, 기온 20°C
입장료: 전망대 성인 11,000원, 어린이 9,000원
명동
현재 날씨: 맑음, 기온 23°C
입장료: 무료 (쇼핑 지역)
이 정보를 바탕으로 방문 계획을 세우시면 좋을 것 같습니다.
'''
위와 같이 ReAct 프레임워크를 사용하면, 모델은 사용자와의 대화를 통해 문제에 대한 Reasoning과 Action을 반복하면서 단계적으로 문제를 해결해간다.
ReAct의 핵심은, 외부 소스와 상호작용하여 정보를 가져오고, 작업을 수행할 수 있다는 점이다. → 단순히 "생각하게 하는 것"은 프롬프트 엔지니어링만으로 가능하지만, 외부 소스로부터 검색하는 과정을 구현하려면 RAG를 활용하거나, API를 활용해야한다.
(즉, 단순 프롬프팅만이 아닌 프로그래밍적인 요소를 곁들여야함)
self-consistency
Ref : https://www.ncloud-forums.com/topic/370/
전문가 소환술! Self-consistency에서 다중 패널 프롬프팅까지
ExpertPrompting Quote “너는 과학 선생님이야.” 그동안 모델에 정체성을 부여하는 것이 프롬프트 엔지니어링 관점에서 얼마나 효과적인지 경험해 왔습니다. "You are a {job}" 형태로 말이죠. ExpertPrompti
www.ncloud-forums.com
Self-Consistency의 핵심 아이디어는다음과 같다.
1. 다양한 추론 경로 생성 : 동일한 문제에 대해 추론을 여러 번 수행하며, 다양한 해결 경로를 만든다.
2. 확률적 디코딩 : 각 추론 과정에서, 모델의 출력을 샘플링하여 다양성을 확보한다.
3. 일관성 평가 : 생성된 여러 경로의 추론 중, 가장 일관성있는 답변을 선택한다.
ToT, GoT처럼 Self Consistency도 CoT의 확장 버전(여러 추론 경로를 통해 추론하기 위한)이라고 보면 된다. 일관성있는 답을 고른다는 점이 ToT, GoT와는 성격이 살짝 다른 듯 하다.
추가로, 다중 패널 접근법(PanelGPT)라는 기법도 있는데, 여러 명의 전문가가 토론하여 최종적인 답을 도출해내도록하는 프롬프팅 기법도 있다고 한다.
어떤 기법을 적용하는것이 적절할까
원래로 돌아와서, "현재 task의 특성과 요구사항을 잘 판단해서" 적절한 프롬프팅 기법을 적용해보아야 한다.
CoT로 단계별로 분석하는것까진 생각해봤는데, 지문을 읽고 수험생처럼 추론하는 능력을 갖도록 프롬프팅하려면 GoT도 적절하려나? 싶었다.
근거를 충분히 생각해보고 실험을 하는것이 중요하지만, 잘 생각이 안나므로 선 실험 후 결과분석을 통해, 다시 역으로 근거에 대해 생각해볼 것이다.
'AI' 카테고리의 다른 글
[GPU 메모리 절약] 메모리를 절약해서 학습시켜보자 (0) | 2024.12.14 |
---|---|
[시계열 데이터] Sequential Data의 Validation(Sequential Data의 Cross-Validation) (1) | 2024.12.12 |
[NLP] Embedding이란? & Text데이터의 Embedding(Word, Sentence) (1) | 2024.12.04 |
[Fine Tuning] PEFT(Parameter Efficient Fine Tuning), SFT(Supervised Fine Tuning) (2) | 2024.11.22 |
[Clustering] 실루엣 계수, KMeans(엘보우 기법), HDBSCAN (2) | 2024.11.18 |