금융 도메인 언어모델 학습을 위한 합성데이터 생성 기법 Part2: Wizard LM
Sep 17, 2024
이 글은 'WizardLM: Empowering Large Language Models to Follow Complex Instructions(2023)' 논문을 기반으로 언어모델 학습을 위한 합성데이터 생성 기법을 설명하고 있습니다.
해당 기법으로 원라인에이아이가 생성한 데이터들은 허깅페이스 HAE-RAE Hub에서 확인하실 수 있습니다.
특정 도메인 학습데이터는 원라인에이아이 AI팀에게 문의주시기 바랍니다.
금융 도메인 언어 모델 학습을 위한 합성데이터 생성 기법
본 시리즈는 금융 분야에서 활용할 수 있는 인공지능 언어 모델의 학습을 유명 합성데이터 생성 기법을 다룰 예정입니다. 합성데이터 생성 기술 3가지를 살펴보면서 합성데이터의 중요성, 다양한 생성 기법, 그리고 이를 통한 언어 모델의 학습 효과 등을 세부적으로 탐구할 것입니다. 각 포스팅은 이론적 배경부터 실제 적용 사례까지 폭넓게 다루어, 본 시리즈를 통해 금융 분야의 AI 전문가들과 관심 있는 독자들에게 유용한 인사이트를 전달하고자 합니다.
Timeline
SELF-INSTRUCT: Aligning Language Models with Self-Generated Instructions (Link)
WizardLM: Empowering Large Language Models to Follow Complex Instructions (현 포스팅)
Cosmopedia: how to create large-scale synthetic data for pre-training (Link)
AI가 AI를 가르치는 시대의 학습 데이터 생성 방법
저번 포스팅에서는 Alpaca의 학습 데이터 생성에 사용되었던 ‘SELF-INSTRUCT’에 대해 알아봤습니다. 사람의 노력 없이 AI 모델이 자동적으로 생성한다는 점에서 굉장히 인상적이었는데, 본 포스팅에서 소개하고자 하는 "WizardLM: Empowering Large Language Models to Follow Complex Instructions"은 이러한 합성 데이터 생성 방식에 ‘Evol-Instruct’라는 아이디어를 접목하여 보다 복잡하고 난이도 있는 합성 데이터 생성 방식을 제시하였습니다.
WizardLM - Evol-Instruct
이 논문의 핵심 아이디어인 Evol-Instruct는 간단한 초기 instruction에서 시작해, 언어 모델 스스로 이를 점진적으로 복잡하고 다양한 형태로 진화시키는 방식입니다. 이는 크게 두 가지 방향으로 진행됩니다:
In-depth Evolving (심화 발전): 기존 instruction을 더 복잡하고 구체적으로 만듭니다.
In-breadth Evolving (폭 넓은 발전): 완전히 새로우면서도 동등한 복잡성을 가진 instruction을 생성합니다.
이 과정을 통해 WizardLM은 인간이 만든 지시사항보다 더 다양하고 복잡한 지시사항을 생성할 수 있게 되었습니다. 논문에서는 이러한 방식으로 생성된 지시사항들이 인간 평가에서 우수한 성능을 보였다고 합니다. 특히 주목할 만한 점은, 고난도 지시사항에 대해서는 WizardLM이 ChatGPT보다 더 선호되는 결과를 보였다는 것입니다.
[Evol-Instruct: AI가 스스로 데이터셋을 진화시키는 방법]
WizardLM의 핵심 방법론인 Evol-Instruct는 초기 instruction에 대해 대규모 언어 모델(LLM)을 활용하여 자체적으로 더욱 복잡하고 다양한 형태로 변화시키는 방법입니다. 이 과정을 통해 다양한 태스크에 대해서 다양한 복잡도를 가지는 대규모 데이터셋을 자동으로 구축할 수 있습니다. 앞서 살펴본 ㄸEvol-Instruct의 전반적인 프로세스에 대해 자세하게 알아보겠습니다.
Step 1. Instruction Evolving
초기 instruction에 대해 난이도를 개선시키고 풍부함과 다양성을 확장시키는 방식으로 instruction에 변화를 줍니다. 이 과정에서 instruction evolver가 사용되는데, 이때 in-depth evolving과 in-breadth evolving의 2가지 유형으로 evolving이 진행됩니다.
In-depth Evolving: instruction의 난이도를 높이는데 초점을 두고 있습니다. 제약 조건 추가, 심층화, 구체화, 추론 단계 늘리기, 입력 복잡화를 포함한 5가지의 evolving 방식을 사용합니다. 이때 언어 모델이 합리적이고 AI에 의해 쉽게 생각될 수 없는 instruction을 생성하도록 요구합니다.
In-breadth Evolving: instruction의 다양성을 높이는데 초점을 두고 있습니다. 주제 범위, 스킬 범위, 데이터셋 다양성 증진을 목표로 기존의 instruction에 기반하여 완전히 새로운 instruction을 생성하도록 유도합니다.
Step 2. Response Generation
‘instruction evolving’에서 사용된 모델과 똑같은 모델을 사용하여 evolved instruction에 대한 응답을 생성합니다.
Step 3. Elimination Evolving
‘instruction evolving’을 통해 생성된 instruction은 오류를 포함하고 있을 수도 있기 때문에 elimination evolving 과정을 통해 오류가 포함된 instruction은 배제하는 과정을 거쳐야 합니다. 다음의 4가지 evolution 실패 상황을 따라서 evolution 실패를 분류하였습니다.
evolved instruction이 기존의 instruction과 비교하여 어떠한 새로운 정보도 제공하지 않음
evolved instruction이 LLM의 응답을 생성하는데 어렵게 만듦. LLM이 “sorry” 등의 거절 의사 또는 비교적 짧은 길이로 대답할 경우 LLM의 응답 생성에 어려움이 있다고 판단.
LLM에 의해 생성된 응답이 오직 구두점과 불용어만을 포함하고 있음
evolved instruction이 evolution prompt에 등장하는 몇 단어를 카피함
Step 4. Repeat
Step 1 ~ 3을 반복하여 총 4번의 반복적인 evolution을 통해 다양한 종류와 난이도를 가지는 250,000개의 Evol-Instruct 데이터셋을 제작합니다. 이때 언어 모델로는 ChatGPT가 사용되었습니다.
[Experiments]
Evol-Instruct는 instruction 데이터셋 뿐만 아니라 모델을 평가하기 위한 Evol-Instruct 테스트셋도 함께 제작하여 여러 베이스라인 모델과 Evol-Instruct로 학습된 모델 간의 성능 비교를 진행하였습니다. Evol-Instruct 테스트셋은 다음 그림 와 같이 다양한 skill과 난이도를 가지는 테스트 데이터로 구성되어 있습니다. 이는 Evol-Instruct 테스트셋이 기존의 Alpaca와 Vicuna에 비교해서 더 고른 난이도 분포를 가진다는 것을 시사합니다.
(a) Evol-Instruct 테스트셋의 스킬 분포 (b) Vicuna, Alpaca, Evol-Instruct 테스트셋 간의 어려움 및 복잡도 레벨 비교
Evol-Instruct와 Vicuna 테스트셋에 대해 사람 평가와 GPT-4 평가를 진행한 결과 두 테스트셋 모두에서 Alpaca, Vicuna보다 더욱 개선된 성능을 보여주었습니다. 이는 Evol-Instruct로 생성된 데이터셋이 Alpaca와 Vicuna 학습 데이터보다 더 뛰어난 퀄리티를 가진다는 것을 시사합니다.
Human Evaluation 결과
GPT-4 Evaluation 결과
또한 눈여겨볼 결과는 GPT-4를 이용한 자동 평가에서 WizardLM이 29개의 기술 중 17개 부문에서 ChatGPT 능력의 90% 이상을 달성했다는 점입니다. 이는 AI 모델을 활용한 Evol-Instruct로 생성된 데이터가 인간이 만든 지시사항과 근접한 성능을 낼 수 있음을 시사합니다.
Evol-Instruct 테스트셋에서 WizardLM과 ChatGPT 사이의 각 스킬에 대한 GPT-4 Score
Evol-Instruct를 통해 생성된 데이터셋에 대해 전반적인 분석을 보면 사람이 작성한 instruction인 ShareGPT와 AI 모델이 자동으로 생성한 Alpaca 데이터셋에 비해서 더 복잡하고 난이도 있는 instruction으로 구성되어 있는 것을 확인할 수 있습니다. 추가적으로 iteration이 늘어날수록 instruction의 복잡도가 조금씩 우상향한다는 것도 확인할 수 있습니다. 이는 WizardLM이 다른 방법들에 비해 뛰어난 성능을 보여주는 이유 중 하나입니다.
ShareGPT, Alpaca, Evol-Instruct의 instruction 간에 복잡도 비교 결과
Conclusion
간단한 instruction에서 시작해서 instruction을 진화시키는 Evol-Instruct를 다음과 같이 금융 합성 데이터셋 생성에 활용할 수 있습니다:
금융 용어 및 개념 진화: "주식이란 무엇인가?"라는 간단한 질문에서 시작해, "테크 기업의 주가가 실적 발표 이후 급락했을 때, 해당 기업의 장기 성장 잠재력과 현재 시장 상황을 고려하여 투자 전략을 수립하시오."와 같은 복잡한 태스크로 진화시킬 수 있습니다.
시나리오 기반 데이터 생성: "미국 연준이 기준금리를 0.25% 인상했다"라는 기본적인 시장 상황에서 시작해, "미국 연준의 0.25% 금리 인상, 중국의 경기 부양 정책 발표, 그리고 유럽의 에너지 위기가 동시에 발생했을 때, 아시아 신흥국 통화와 글로벌 원자재 시장에 미칠 영향을 분석하시오."와 같은 복잡한 시나리오로 발전시킬 수 있습니다.
규제 준수 학습: "자금세탁방지법의 기본 원칙은 무엇인가?"라는 간단한 규제 설명에서 시작해, "글로벌 금융 기관이 미국, EU, 그리고 아시아 시장에서 동시에 운영될 때, 각 지역의 자금세탁방지법과 개인정보보호법을 모두 준수하면서 효율적인 고객 실사(Due Diligence) 프로세스를 설계하시오."와 같은 복잡한 규제 시나리오로 확장할 수 있습니다.
리스크 분석 고도화: "시장 리스크란 무엇인가?"라는 기본적인 리스크 정의에서 시작해, "글로벌 투자 은행이 신흥국 채권, 선진국 주식, 그리고 암호화폐 파생상품에 투자할 때, 지정학적 리스크, 규제 리스크, 시장 리스크, 그리고 운영 리스크를 종합적으로 고려한 리스크 평가 모델을 개발하고, 스트레스 테스트 시나리오를 제시하시오."와 같은 복합적 리스크 분석으로 진화시킬 수 있습니다.
결론적으로, Evol-Instruct 방식의 합성 데이터 생성은 기존의 간단한 금융 데이터를 추가적으로 발전시켜서 금융 AI의 능력을 한 단계 높일 수 있습니다. 이는 단순히 데이터 부족 문제를 해결하는 것을 넘어, AI의 창의성과 문제 해결 능력을 극대화시킬 수 있는 방법입니다. 우리는 이를 통해 금융 전문가들에게 더욱 신뢰할 수 있고, 정교한 AI 파트너를 제공할 수 있게 될 것입니다.
고성능 AI 모델의 학습을 위해서는 데이터의 양 뿐만 아니라 데이터의 질 및 다양성이 대두되는만큼, 금융 AI 모델의 미래 또한 데이터의 질과 다양성을 고려해야 합니다. 그리고 여기에 Evol-Instruct를 활용한다면 금융 AI의 새로운 장을 열어갈 수 있을 것입니다.