항목 | 내용 |
논문의 주제 | LLM의 협상 대화에서의 다면적 능력을 체계적으로 평가. |
연구 목표 | - 협상 대화에서 LLM의 이해, 주석, 파트너 모델링, 응답 생성 능력을 평가. - LLM을 활용한 협상 시스템의 가능성과 한계를 탐구. |
데이터셋 | CRA, DND, CA(CaSiNo), JI(Job Interview) 등 총 4개 데이터셋 사용. - Multi-Issue Bargaining Task(MIBT) 기반으로 협상 시나리오 설계. |
평가 방식 | - 태스크 설계: 35개 태스크로 세분화(이해, 주석, 파트너 모델링, 응답 생성). - 시간 단계: 협상 시작(Start), 진행(During), 종료(End)로 구분. - 객관적(정답 존재) 및 주관적(심리 상태 추론) 평가로 나눔. |
비교 모델 | GPT-4, GPT-3.5, Mistral-7B, Vicuna-13B 등 다양한 LLM 비교. |
평가 지표 | - 정량적: Accuracy, Macro-F1, Pearson Correlation Coefficient(PCC). - 정성적: 전문가 평가(Coherence, Strategy). |
주요 결과 | - GPT-4가 대부분의 태스크에서 우수한 성능. - CoT(Chain-of-Thought) 프롬프트가 다단계 논리적 태스크에서 성능을 크게 향상. - 소규모 모델(Mistral-7B 등)은 큰 성능 격차를 보이며 제한적. |
강점 | - 협상 능력을 체계적으로 평가할 수 있는 프레임워크 설계. - LLM의 응용 가능성을 확장(예: 주석 자동화, 교육, 데이터 수집). |
한계점 | - Agent로서의 자율성과 목표 지향성 부족. - 동적 협상 시나리오 미반영(선호도 변경 등). - 주관적 평가(만족도, 호감도)에서 인간과 상충되는 결과 존재. - 소규모 모델 성능 부족. |
발전 가능성 | - 강화학습(RL)과 통합해 목표 지향적 행동 및 자율성 강화. - 동적 환경 변화에 적응 가능한 시스템 설계. - 소규모 모델 개선을 위한 Knowledge Distillation 및 Fine-tuning 활용. - 협상 결과를 예측하는 장기적 시나리오 도입. |
결론 | - LLM은 협상 대화에서 유용한 도구로 활용 가능하나, Agent로서의 완전한 자율성을 구현하지 못함. - 향후 연구는 강화학습, 동적 시뮬레이션, 전략적 사고 강화를 통해 진정한 AI 협상 에이전트 개발을 목표로 삼아야 함. |
Data set | Scenario | Issues | #of Dialogues | 특징 |
CRA | Artifacts trading | Painting, Lamp, Album |
119 | - 발화 단위 대화 행위(Dial Act) 주석 포함 - 명확한 대화 구조 제공 |
DND | General items | Ball, Hat, Book | 6,251 | - 다수의 대화 데이터 제공 - 전반적인 물품 교환 시나리오 - 협상 결과에서 점수 계산 가능 |
CA | Campsite Neighbors | Food, Water, Firewood | 1,030 | - 만족도 및 호감도 등 주관적 메트릭 포함 - 발화 단위 전략(Strategy) 주석 포함 |
JI | Job Recruiter-Worker Interaction | Salary, Day-off, Position, Company, Workplace |
2,639 | - 다양한 직장 선택 시나리오 - 다중 이슈 협상 지원 |
세부 설명
- CRA (Artifacts Trading):
- 아트 아이템(그림, 램프, 앨범) 거래를 다룸.
- 상대적으로 작은 데이터셋(119개의 대화).
- 발화 단위 대화 행위(Dial Act) 주석 포함.
- DND (General Items):
- 일반적인 아이템(공, 모자, 책) 협상을 중심으로 구성.
- 가장 큰 데이터셋(6,251개의 대화).
- 다수의 대화를 포함하여 점수 계산 기반 평가 가능.
- CA (Campsite Neighbors):
- 캠핑 상황에서 음식, 물, 장작을 협상.
- 만족도 및 호감도와 같은 주관적 평가 메트릭 포함.
- 대화의 전략(Strategy) 주석 제공.
- JI (Job Recruiter-Worker Interaction):
- 급여, 휴가, 직책 등 직업 협상 시나리오.
- 다중 이슈 협상을 다루며, 복잡한 협상 문제를 테스트하기 적합.
Start - 협상 상황 이해 및 준비 작업
C1: 본인에 대해 파악(우선 순위, 품목 개수)하고, 상대방 정보는 보이지 않는다.
During - 협상 진행 중 대화, 전략 교환
C2: 대화를 하며 상대방의 요구를 탐색한다.
C3: 상대방의 선호도를 추론한다.
C4: 요구를 반영하며 구체적인 제안을 생성한다.
End - 종료 후 결과 평가
- Comprehension (Comp):
- 협상 맥락과 정보를 이해.
- 예: 항목의 점수, 총 개수, 최종 결과 등.
- Partner Modeling (Part):
- 상대방의 선호도와 심리 상태 추론.
- 예: "상대방이 음식을 가장 중요시한다."
- Annotations (Anno):
- 대화 행위와 전략 주석화.
- 예: 특정 응답이 "질문(Inquiry)"인지 "제안(Proposal)"인지 분류.
- Generation (Gen):
- 다음 응답 생성.
- 예: "음식 3개는 내가 받고, 물 2개는 당신이 받는 게 어떨까요?"
단계 | 주어진 정보 | 수행 Task |
Start | 협상 맥락(Task descriptions, Counts) | 항목별 점수 계산, 우선순위 파악, 총 개수 및 최대 점수 계산 (Comp). |
During | 협상 대화 일부(Partial Dialogue) | 상대방의 우선순위 추론(Part), 대화 행위/전략 주석화(Anno), 다음 응답 생성(Gen). |
End | 협상 대화 전체(Complete Dialogue) | 최종 결과(Outcome)와 만족도 평가 (Comp, Part). |
유형 | 설명 | 예시 Task |
Comprehension | 협상 맥락과 결과를 이해. | - 총 아이템 개수 파악 - 우선순위 및 최대 점수 이해 - 최종 결과 세부사항 및 만족도/호감도 추론 |
Annotation | 발화의 의미와 기능을 주석 처리. | - 대화 행위 주석 (제안, 반대) - 전략 주석 (선호도 요청, 자기 필요) - 들어오는 제안 파싱 |
Partner Modeling | 상대방의 전략과 우선순위를 추론하여 협상에 적응. | - 상대방 우선순위 예측 - 상대방 만족도 및 호감도 추론 |
Generation | 대화 맥락과 히스토리를 기반으로 적절한 응답 생성. | - 제안 및 반박 제안 생성 - 대화 응답 생성 |
1. Start 단계의 태스크
Start 단계는 협상의 초기 단계로, 에이전트가 협상 조건을 기반으로 아이템의 수량, 점수, 우선순위를 이해하는 작업을 포함
테스크 | 설명 |
sta_total_item_count_dnd | DND 데이터셋에서 협상 가능한 아이템의 총 개수를 정확히 이해. |
sta_total_item_count_ca | CA 데이터셋에서 협상 가능한 아이템의 총 개수를 정확히 이해. |
sta_max_points_dnd | DND 데이터셋에서 협상 가능한 최대 점수를 정확히 이해. |
sta_max_points_ca | CA 데이터셋에서 협상 가능한 최대 점수를 정확히 이해. |
sta_ask_point_values_dnd | DND 데이터셋에서 각 아이템의 우선순위(점수)를 정확히 이해. |
sta_ask_point_values_ca | CA 데이터셋에서 각 아이템의 우선순위(점수)를 정확히 이해. |
sta_ask_low_priority_ji | JI 데이터셋에서 가장 낮은 우선순위 아이템을 정확히 이해. |
sta_ask_low_priority_ca | CA 데이터셋에서 가장 낮은 우선순위 아이템을 정확히 이해. |
sta_ask_high_priority_ji | JI 데이터셋에서 가장 높은 우선순위 아이템을 정확히 이해. |
sta_ask_high_priority_ca | CA 데이터셋에서 가장 높은 우선순위 아이템을 정확히 이해. |
2. During 단계의 태스크
During 단계는 협상이 진행되는 단계로, 대화와 전략 추론, 응답 생성 등 동적인 작업이 포함
테스크 | 설명 |
dur_strategy_ca | CA 데이터셋에서 특정 발화의 협상 전략을 주석 처리. |
dur_partner_ask_low_priority_ji | JI 데이터셋에서 상대방의 가장 낮은 우선순위 아이템을 추론. |
dur_partner_ask_low_priority_ca | CA 데이터셋에서 상대방의 가장 낮은 우선순위 아이템을 추론. |
dur_partner_ask_high_priority_ji | JI 데이터셋에서 상대방의 가장 높은 우선순위 아이템을 추론. |
dur_partner_ask_high_priority_ca | CA 데이터셋에서 상대방의 가장 높은 우선순위 아이템을 추론. |
dur_gen_resp_dnd | DND 데이터셋에서 대화에 기반한 적절한 응답을 생성. |
dur_gen_resp_ca | CA 데이터셋에서 대화에 기반한 적절한 응답을 생성. |
dur_full_proposal_dnd | DND 데이터셋에서 특정 발화의 전체 제안을 주석 처리 (예: 아이템 개수). |
dur_full_proposal_cra | CRA 데이터셋에서 특정 발화의 전체 제안을 주석 처리 (예: 아이템 개수). |
dur_dial_act_ji | JI 데이터셋에서 특정 발화의 대화 행위를 주석 처리. |
dur_dial_act_dnd | DND 데이터셋에서 특정 발화의 대화 행위를 주석 처리. |
dur_dial_act_cra | CRA 데이터셋에서 특정 발화의 대화 행위를 주석 처리. |
dur_ask_low_priority_ji | JI 데이터셋에서 에이전트의 가장 낮은 우선순위 아이템을 정확히 이해. |
dur_ask_low_priority_ca | CA 데이터셋에서 에이전트의 가장 낮은 우선순위 아이템을 정확히 이해. |
dur_ask_high_priority_ji | JI 데이터셋에서 에이전트의 가장 높은 우선순위 아이템을 정확히 이해. |
dur_ask_high_priority_ca | CA 데이터셋에서 에이전트의 가장 높은 우선순위 아이템을 정확히 이해. |
3. End 단계의 태스크
End 단계는 협상 종료 후 결과를 평가하고, 만족도와 같은 주관적 메트릭을 추론하는 작업이 포함됩니다.
테스크 | 설명 |
end_partner_deal_satisfaction_ca | CA 데이터셋에서 대화를 기반으로 상대방의 최종 거래 만족도를 추론. |
end_partner_deal_likeness_ca | CA 데이터셋에서 대화를 기반으로 상대방이 자신에게 느끼는 호감도를 추론. |
end_deal_total_dnd | DND 데이터셋에서 최종 거래 점수(아이템 개수와 점수의 내적)를 이해. |
end_deal_total_ca | CA 데이터셋에서 최종 거래 점수(아이템 개수와 점수의 내적)를 이해. |
end_deal_specifics_ji | JI 데이터셋에서 최종 거래의 세부사항(아이템별 개수)을 이해. |
end_deal_specifics_dnd | DND 데이터셋에서 최종 거래의 세부사항(아이템별 개수)을 이해. |
end_deal_specifics_ca | CA 데이터셋에서 최종 거래의 세부사항(아이템별 개수)을 이해. |
end_deal_satisfaction_ca | CA 데이터셋에서 자신의 최종 거래 만족도를 이해. |
end_deal_likeness_ca | CA 데이터셋에서 자신이 상대방에게 느끼는 호감도를 이해. |
https://github.com/DSincerity/SysEval-NegoLLMs
여기서 git clone 해오면 됩니다.
저는 main.py를 그대로 쓰기 보단 출력을 하나하나 보고 싶어서 ipynb파일을 통해 나눠서 확인해봤습니다.
class Args:
def __init__(self):
self.task_name = "sta_total_item_count_dnd,sta_max_points_dnd,mid_dial_act_dnd,mid_gen_resp_dnd,end_deal_specifics_dnd,sta_ask_point_values_dnd,mid_full_proposal_dnd,end_deal_total_dnd"
self.dataset_name = "dnd"
self.model_name = "hf_model"
self.storage_dir = "storage/"
self.num_instances = 1
self.max_num_instances = 200
self.hf_model_str = "mistralai/Mistral-7B-Instruct-v0.1"
self.num_utts_partial_dial = -1
self.use_cot = False
self.num_multishot = 0
self.num_prior_utts = 0
이렇게 만들어줘서 사용했습니다!
다른것은 동일하게 main.py에서 가지고 와서 사용했습니다!
그럼 로그파일에 이렇게 동일하게 생깁니다.
저는 gpt-4도 api key를 통해 동일하게 진행해서 이렇게 결과가 나와있습니다.
GPT는 본인을 너무 까발리네요...?
COT도 한번 더 해봐야 겠습니다.
다를 게 없네요 ㅎㅎ...
생성에서는 CoT를 사용하지 않습니다.
확실한 것은 단순히 평가만 진행하고, 그 평가가 다시 Model에 들어가서 유동적으로 사용되는 것이 아니라 모델에 발전이 없네요
이러한 점을 발전시키면 될 것 같습니다.
1. num_utts_partial_dial
- 의미: 대화 도중 주어진 부분 대화(partial dialogue)에서 포함되는 발화(utterance)의 수를 나타냅니다.
- 목적: 협상 기록의 일부만 제공된 상황에서 모델이 제한된 정보를 바탕으로 얼마나 잘 추론하고 응답을 생성할 수 있는지 평가하기 위해 사용됩니다.
- 데이터 출처: 협상 중인 대화 데이터셋에서 가져옵니다. 일반적으로 협상 상대 간 교환된 발화 중 특정 시점까지의 내용을 포함합니다.
- 적용 사례: 정보가 불완전한 상황에서 모델의 추론 능력을 테스트하는 데 적합합니다.
2. use_cot (Chain of Thought, 사고의 연결)
- 의미: Chain of Thought(COT) 방식을 사용할지 여부를 나타냅니다.
- 목적: 모델이 중간 사고 과정(Intermediate Reasoning)을 명시적으로 설명하도록 유도하여 다단계 추론(multi-hop reasoning)이나 산술적 과제(arithmetic tasks)를 더 잘 수행하도록 돕습니다.
- 데이터 출처: 훈련 데이터와는 무관하며, 평가 단계에서 프롬프트 전략으로 적용됩니다.
- 적용 사례:
- 협상 결과 계산이나 상대방 만족도 측정과 같은 복잡한 과제를 수행할 때 사용됩니다.
- 다단계 추론이나 주관적 과제에서 모델의 성능을 향상시킵니다.
3. num_prior_utts
- 의미: 협상 기록 중 과거 발화(prior utterances)가 프롬프트에 포함되는 개수를 나타냅니다.
- 목적: 이전 대화 맥락이 모델의 응답 정확도와 품질에 어떤 영향을 미치는지 분석하기 위해 사용됩니다.
- 데이터 출처: 대화 데이터셋의 대화 기록에서 가져옵니다. 과거 발화가 모두 포함되거나 특정 개수로 제한될 수 있습니다.
- 적용 사례:
- 과거 발화를 더 많이 포함하면 상대방의 우선순위와 선호도를 더 잘 이해할 수 있습니다.
- 그러나 지나치게 많은 발화는 모델이 과거 맥락에 혼란을 느낄 수 있으며, 최근 정보에 대한 편향(recency bias)이 발생할 가능성이 있습니다.
4. num_multishot
- 의미: 프롬프트에 포함되는 Few-Shot 예제의 개수를 나타냅니다.
- 목적: 모델이 프롬프트 내에서 제공된 예시를 학습하여(컨텍스트 내 학습) 예상되는 출력의 구조나 사고 방식을 이해하도록 돕습니다.
- 데이터 출처: 훈련 데이터셋에서 선택되거나, 특정 작업을 나타내기 위해 생성된 인위적인 예제를 포함할 수 있습니다.
- 적용 사례:
- 전략 생성이나 상대방 모델링과 같은 복잡한 작업에서 사용됩니다.
- 작업 특성에 맞는 예제를 제공하여 모델의 성능을 개선합니다.
데이터 처리 및 맥락
- 데이터 출처:
- num_utts_partial_dial 및 num_prior_utts는 논문에서 언급된 협상 데이터셋(CRA, DND, CA, JI)에서 가져옵니다.
- use_cot 및 num_multishot는 데이터셋보다는 평가 과정에서 구조화된 프롬프트를 통해 작업에 적용됩니다.
- 이전 출력과의 관계:
- 위 설정은 모델의 추론 및 응답 생성 시 제공되는 사전 정보의 양과 유형을 제어합니다.
- 예를 들어, use_cot는 협상 결과 점수 계산을 개선하고, num_prior_utts는 대화 맥락 이해도를 높입니다.
이러한 매개변수는 모델이 논리적 사고, 전략적 응답 생성, 상대방 선호도 추론을 얼마나 잘 수행하는지 평가하는 데 중요한 역할을 합니다. 추가적인 질문이 있다면 알려주세요!