데이터중심 AI강좌: 데이터세트 구축 및 효율적인 데이터 학습 방법
파인튜닝(Fine-tuning)이란, 사전학습을 마친 대규모언어모델(LLM, Large Language Model)의 능력을 최대한 이끌어내어, 실제 다양한 과제에 적용하기 위해 필요한 학습기법을 말합니다. 최근 전세계적으로 많은 사람들이 사용하고 있는 ChatGPT, Claude와 같은 LLM 또한, 이 기술을 통해 높은 응답 성능을 실현하고 있습니다. 파인튜닝은 사전학습에 비해 필요한 컴퓨팅 자원이 적고, 파라미터 효율적인 파인튜닝(Parameter-Efficient Fint Tuning, PEFT)이라 불리는 방법을 통해 효율적으로 파인튜닝을 수행할 수 있기 때문에 기업이나 개인이 특정 요구사항을 맞춰 고유모델을 구축하는 수단으로도 활용됩니다. 이렇게 파인튜닝은 LLM을 실용화하기 위한 중요한 기술이 되고 있습니다.
이번에는 사전학습모델이 자연스럽고 유창한 응답을 생성하기까지의 과정을 파인튜닝에 필요한 데이터(파인튜닝 데이터)와 그 구축방법을 통해 설명합니다. 우선 파인튜닝을 설명하고 파인튜닝에 필요한 2종류의 데이터인 Instruction Data, Preference Data에 대해 설명합니다. 그 다음 각각의 데이터가 지닌 특징과 대표적인 데이터세트를 소개합니다. 그리고 파인튜닝된 LLM의 성능 평가방법과 평가에 사용되는 데이터세트에 대해 다룹니다. 마지막으로 한국어 LLM파인튜닝 현황등에 대해서도 다룹니다.
파인튜닝(Fine Tuning)이란, 이후 수행될 하위 태스크(Downstream Task)를 해결하기 위해 사전학습을 마친 모델에 대해 추가적인 학습을 진행하는 것을 의미합니다. 이 기법은 이미지 처리, 음성인식, 자연어 처리등 다양한 분야에서 폭넓게 활용되고 있습니다. 자연어 처리분야에서는 LLM이 등장하기 이전부터 BERT, RoBERTa와 같은 사전학습 모델을 통해 문서분류나 개체명인식(NER)등 여러 하위 태스크를 해결하기 위해 파인튜닝이 사용되어 왔습니다. 특히 LLM의 경우에는 "인간의 지시에 따른다"와 같이 보다 추상적인 태스크를 학습하는데 활용됩니다. 이번에는 수십억개 이상의 파라미터를 갖춘 LLM의 파인튜닝 프로세스와 파인튜닝에 사용하는 데이터세트를 구축하는 방법에 초점을 맞춰 설명합니다.
LLM에서의 사전학습은 웹등에서 대규모 텍스트(사전학습 데이터)를 수집하고, 그 텍스트를 기반으로 다음 단어를 예측하는 성능을 높이는 방식으로 이루어집니다. 이 때문에, 만들어지는 모델은 문자 그대로 '언어모델'이며, 본질적으로 주어진 문장의 뒤를 이어서 생성하는 것을 목적으로 하는 모델입니다. 그러나 많은 사용자들은 ChatGPT와 같이 질문이나 지시에 적절히 응답하는 'AI 어시스턴트'를 기대하며 LLM을 사용합니다. 이런 격차를 해소하기 위한 방법, 즉, 사람이 사용하기 쉽도록 사전학습 모델을 조정하는 방법이 파인튜닝입니다. 이번에는 파인튜닝이 제안된 경위와 개요를 설명합니다.
앞서 설명했듯이 언어모델은 주어진 단여열을 바탕으로 다음 단어를 예측하는 모델입니다. 따라서 단순히 문장을 입력하는 것만으로는 번역, 문서요약, 대화와 같은 태스크를 해결하기가 어렵습니다. 이에 따라 다양한 태스크를 LLM으로 해결하기 위해 2020년에 발표된 GPT-3논문에서 제안된 방법이 ICL(In-Context Learning)입니다. 이는 사전학습된 LLM에 대해 태스크 설명, 구체적인 질문과 답변샘플, 그리고 질문을 입력으로 제공함으로써 모델이 태스크를 이해하고 올바른 해답을 생성하도록 합니다. ICL(In-Context Learning)의 장점은 모델의 파라미터를 업데이트하지 않고도 입력 텍스트를 어떻게 설계하느냐에 따라 모델동작을 제어하고 소량의 샘플만으로도 다양한 태스크를 해결할 수 있다는 것입니다. 그러나 ICL(In-Context Learning)에는 다음과 같은 문제가 존재합니다.
Zero-shot Learning의 성능이 극도로 낮음: 사전학습에 사용된 코퍼스는 ICL(In-Context Learning)에서 주어지는 텍스트 형식과 크게 다릅니다. 따라서 어떤 샘플도 제공하지 않는 Zero-Shot Learing 설정에서는 사전학습 모델이 태스크를 제대로 이해하기 어려우며, 충분한 성능를 내기 어렵습니다.
성능이 샘플에 크게 의존: ICL(In-Context Learning)은 제공되는 샘플수가 적을 경우 성능이 불안정해지기 쉽습니다. 또한 샘플내용이나 순서에 따라서도 성능이 크게 달라집니다.
샘플수에 제한이 있음: 제공되는 샘플은 '프롬프트'라 불리는 텍스트 일부로 입력됩니다. 이때 언어모델의 최대 입력 길이 제한을 받으므로, 샘플을 많이 준비하더라도 그 중 일부만 사용할 수 있게 될 가능성이 있습니다.
이러한 문제를 해결하기 위해, 2021년에 Instruction Tuning(지시 튜닝)이 제안되었습니다. 이 방법은 다양한 태스크의 데이터세트를 지시(Instruction)와 응답(Response)형식으로 통일하고, 지도학습으로 LLM의 파라미터를 업데이트함으로써 성능을 끌어올리는 파인튜닝기법입니다. 이렇게 지시와 응답을 쌍으로 구성된 데이터를 Instruction Data(지시 데이터)라고 합니다. 이 지시데이터에 포함된 다양한 태스크의 지시와 응답쌍을 학습함으로써 모델은 다양한 지시에 대해 적절한 응답을 생성할 수 있는 범용적 능력을 갖추게 됩니다. Instruction Tuning이 처음 제안되었을 당시에는 파인튜닝에 사용되는 데이터세트를 기존에 존재하던 라벨링된 데이터세트를 템플릿으로 변환해 지시와 응답형식으로 만드는 방식을 사용했으나, 최근에는 사람이나 LLM이 직접 데이터세트를 작성하는 방식이 주류를 이루고 있습니다.
Instruction Tuning을 통해 모델은 다양하고 자연스러운 응답을 생성하는 능력을 얻게 됩니다. 그러나, 이러한 응답이 항상 사람에게 유용하거나 안전한 것은 아닙니다. 예를 들어, 부정확하고 잘못된 정보를 기반으로 한 응답이나 편견, 차별, 불법행위를 조장할 수 있는 유해한 응답을 할 가능성도 있습니다. 또한 사용자는 매우 다양한 종류와 스타일의 지시를 모델에 제공하며, 이에 대한 완벽한 응답을 기대합니다. 따라서, Instruction Data에서는 지시에 대한 이상적인 응답을 마련해야 합니다. 하지만, '사람들의 이목을 글고 있는 슬로건을 만들어 주세요'와 같은 지시에 대해서 완벽한 응답을 찾는 것은 쉽지 않습니다.
이러한 맥락에서 2022년에 RLHF(Reinforcement Learning from Human Feedback, 인간피드백을 활용한 강화학습)이 제안되었습니다. RLHF는 지시에 대해 생성된 여러 응답들을 사람이 평가하고 그 평가결과를 활용하여 모델을 파인튜닝하는 방식입니다. 이 접근법은 강화학습의 틀을 활용하여 모델의 출력을 사람의 선호에 좀 더 가깝게 만드는 것을 목표로 합니다. 최근에는 이와 같은 취지를 따른 방법으로 DPO(Direct Preference Optimization)이나 IPO(Identity Preference Optimization)등이 제안되어 주목받고 있습니다.이런 일련의 파인튜닝 기법을 Preference Tuning(선호 튜닝)이라고 부릅니다.
Instruction Tuning, Preference Tuning은 사전학습된 LLM의 잠재적 능력을 끌어내고, 사람에게 더욱 유용한 모델을 만들기 위해 제안된 파인튜닝 기법입니다. 이 두가지 기법은 서로 베타적이지 않으며, 여러 기법을 조합하여 활용할 수도 있습니다.
Instruction Tuning(지시튜닝)을 수행하기 위해서는 지시와 해당지시에 대한 이상적인 응답으로 구성된 Instruction Data(지시 데이터)가 필요합니다.
여기서 지시(Instruction)이란 사용자가 LLM(대규모언어모델)에게 수행해주길 원하는 태스크를 전달하기 위한 문장을 말합니다. 예를 들어, "오늘 저녁 식사 메뉴 후보를 제시해줘"처럼 간단한 것부터 "Python으로 난수를 생성하는 함수를 알려줘"처럼 프로그래밍 같은 전문적 지식이 필요한 지시까지 다양한 종류가 있습니다. 아래 표와 같이 대표적인 지시와 정의를 제시했습니다.
이상적인 응답(Ideal Response)은 개발자가 해당 지시에 대해 LLM이 생성해주길 바라는 문장입니다. 다만, 구축하려는 모델의 목적이나 성격에 따라 그 응답이 달라질 수 있습니다. 예를 들어, "삼각형의 내각의 합은 다음 중 어느 것이 맞을까요? A) 90 B) 180 C) 360"이라는 지시에 대해 "B) 180"처럼 짧고 간결한 응답을 생성하도록 하고 싶을 수도 있고, "B의 180입니다. 어떤 삼각형리라도 내각의 합은 180이고, 사각형은 360이 됩니다"처럼 좀 더 구체적인 설명이 포함된 응답을 원할 수도 있습니다. Instruction Data를 구축할 때는 앞으로 만들 모델이 어떤 응답을 하길 원하는지 미리 고려하고 이에 해당하는 이상적인 응답을 정의해두는 것이 중요합니다.
대표적인 지시별 카테고리 정의 예시
좋은 Instruction Data(지시 데이터)를 만들기 위해서는 일반적으로 응답 품질, 지시의 다양성과 복잡성 3가지 관점이 중요하다고 알려져 있습니다.
▣ 응답의 품질
아무리 대량의 Instruction Data를 준비하더라도 응답 내용이 저품질이라면 해당 데이터를 학습한 모델의 출력에 큰 기대를 걸기 어렵습니다. 모델에게 어떤 형태의 응답을 원하느냐에 따라 '고품질'과 '저품질'을 나누는 기준은 달라질 수 있지만, 일반적으로 다음과 같은 기준을 생각해 볼 수 있습니다.
고품질 응답의 특징
지시(Instruction)의 의도를 정확하게 의도하고 적절히 답변합니다.
너무 짧지도 길지도 않고, 짓시에 부합하는 적절한 길이를 갖습니다.
윤리적, 도덕적 관점에서 부적절하거나 유해하다고 판단될 경우, 지시이행을 거부할 수 있습니다.
저품질 응답의 특징
지시의 의도를 이해하지 못하고 전혀 맞지 않는 대답을 합니다.
무례한 말투, 공격적 및 차별적인 표현이 포함되어 있습니다.
사실과 다른 부정확한 정보를 포함하고 있습니다.
예를 들어, "한국에서 가장 높은 산에 대해 알려줘"라는 지시에 대해서는 "한국에서 가장 높은 산은 '한라산입니다. 위치: 제주특별자치도, 높이 1,947.06m"으로 답하는 것은 질문에 대한 직접적이며 상세한 정보를 제공하므로 고품질 응답이라고 할 수 있습니다. 반면에 같은 지시에 대해 의도를 파악하지 못하고 인사만 하는 '안녕하세요! 용건을 말씀해주세요.", 비협조적이고 무례한 말투의 '직접 알아보세요', 틀린 정보를 제공하는' "높이가 400미터입니다"'와 같은 답변은 저품질 응답의 특징에 해당하여 학습에 적합하지 않은 데이터입니다. Instruction Data를 수집할 때는 가장한 하나의 전저와 같은 고품질 데이터를 모으는 것이 중요합니다.
Instruction Data의 품질이 중요하다는 사실은 Zhou 논문에서도 나와 있습니다. 이는 LLM이 지닌 다수의 지식과 능력이 이미 사전학습에서 획득된다는 '표층 정렬 가설(Superficial Alignment Hypothesis)'를 제안했습니다. 이 가설에 따르면, Instruction Tuning(지시튜닝)은 주로 대화에서 적절한 스타일을 습득하기 위한 과정이며, Instruction Data는 소량이어도 모델의 성능을 충분히 향상시킬 잠재력이 있다고 봅니다. 이를 검증하기 위해 Zhou등은 약 1000건의 고품질 Instruction Data만으로 파인튜닝한 모델을 구축했습니다. 그 결과, 매우 적은 양의 Instruction Data로 학습했음에도 불구하고, 43%의 사례에서 GPT-4o와 동등하거나 그 이상의 응답을 생성했다는 평가를 받았습니다. 이 연구는 Instruction Data의 품질이 매우 중요하다는 점을 보여줍니다.
또한, Instruction Data내에서 저품질 데이터를 제거함으로써, 적은 데이터로도 높은 성능을 내는 모델을 구축하는 방법도 존재합니다. Cao논문은 Instruction Data의 품질을 추정하여 고품질 데이터를 선별하는 Instruction Mining이라는 기법을 제안했습니다. 비슷한 접근으로 Chen논문은 GPT-3.5를 사용해 데이터 선별을 수행함으로써 Instruction Data를 52,000건에서 9,000건으로 줄이면서도 동등한 것 이상의 성능을 달성했습니다.
▣ 지시의 다양성
Wang논문등은 번약, 질문응답(QA)과 같은 태스트 종류의 수와 각 태스크에 대한 데이터수를 변화시키면서, 모델의 성능과 태스크 다양성 간의 관계를 조사했습니다. 그 결과, Instruction Data에 포함된 태스크 종류를 늘려 다양성을 높이면 모델의 성능이 향상된다는 사실을 확인했습니다. 반면, 태스크 종류를 바꾸지 않고 단순히 각 태스크에 대한 데이터수만 늘리는 경우에는 성능이 눈에 띄게 개선되지 않는다는 점도 밝혀졌습니다.
또한, Lu논문은 ChatGPT를 활용해, 지시에 태그를 부여하는 InsTag라는 방법을 제안했습니다. 이 방법을 통해 여러 데이터세트에 포함된 지시(Instruction)에 대해 'information-related'나 data manipulations'처럼 지시의 의도를 나타내는 태그를 달고, 데이터세트의 다양성을 태그 커버리지로 복잡성을 지시에 할당된 평균 태그수로 정량화했습니다. 이렇게 각 데이터세트를 학습한 모델들을 AlpacaEval로 비교한 결과 복잡하면서도 다양성이 높은 데이터세트가 모델성능 향상에 기여한다는 점을 확인했습니다.
▣ 지시의 복잡성
Instruction Data에 포함된 지시의 복잡성은 모델성능에 큰 영향을 미칩니다. 예를 들어, 같은 수학관련 지시라도 다음과 같이 여러 복잡도 수준이 있을 수 있습니다.
복잡도 낮음: 1 + 1의 답은?
복잡도 중간: 사과 한개가 2000원일 때, 사과 5개를 사면 합계 얼마일까요?
복잡도 높음:
LLM이 복잡한 지시에 정확히 응답하기 위해서는 높은 수준의 능력이 필요합니다. 따라서 복잡한 지시와 응답쌍을 효과적으로 학습시키는 것이 모델 성능 향상의 핵심이라 할 수 있습니다. Liu논문은 ChatGPT를 활용해 Instruction Data의 복잡도를 5단계로 평가하고, 이 결과를 ㅂ바탕으로 데이터 선별을 위한 복잡도 예측모델을 구축했습니다. 그리고 이 모델을 사용해 대량의 Instruction Data중에서 복잡도가 높ㅇ튼 데이터부터 우선적으로 선택함으로써, 무작위로 데이터를 고르는 경우보다 더 성능이 우수한 모델을 만들 수 있음을 보여줍니다. 이 연구는 Instruction Data의 복잡도를 고려한 데이터 선택이 모델 학습 효율을 높일 가능성이 있음을 시사합니다.
Instruction Tuning(지시튜닝)이 처음 제안된 논문에서는 번역, 검정분석등 자연어 처리 분야의 다양한 탯스크를 다루는 대규모 데이터세트에 각각의 태스크에 맞는 템플릿을 적용하여 Instruction Data(지시 데이터)를 구축했습니다. 이 방법의 목적은 기존 데이터세트를 템플릿으로 변환함으로써, 여러 가지 태스크를 Instruction Data에 적합한 형식으로 재구성하는데 있습니다. 아래와 같은 방식으로 구축된 대표적인 데이터세트 2가지를 소개하고 각각이 어떤 식으로 설계되었는지 설명합니다.
▣ Flan Collection
Flan Collection은 Flan, P3, Super-Natural Instructions등 여러 데이터세트를 통합하고, 대화, 코드생성, CoT(Chain-of-Thought) 데이터세트를 추가해 총 1800개 이상의 태스크로 구성된 대규모 데이터세트입니다. 다양한 태스크와 방대한 데이터를 통해 Instruction Data를 구축함으로써 모델 성능의 향상을 이뤄냈습니다.
▣ xP3(Crossligual Public Pool of Prompts)
xP3는 여러 언어로 구성된 Instruction Data를 모은 데이터세트입니다. 영어로 된 Instruction 데이터세트인 P3(Public Pool of Prompts)를 기반으로 비영어권 데이터를 추가해 구축되었습니다. xP3는 대규모 사전학습 언어 모델인 BLOOM의 사전학습 코퍼스인 ROOTS의 언어분포를 재현하도록 설계되었으며, ROOTS와 동일한 46개 언어를 포함합니다. 그뿐만 아니라, 프로그래밍 코드와 16개 자연어 처리 태스트를 더해 매우 방대한 규모의 데이터세트를 형성하고 있습니다.
기존 데이터세트에 템플릿을 적용해 Instruction Data를 만드는 방법의 장단점
장점
낮은 비용: 개발자는 템플릿만 설계해두면, 기존 데이터세트를 간단히 대량의 Instruction Data로 전환할 수 있으므로 구축에 드는 비용이 매우 낮습니다.
자연어 처리 관련 데이터의 수월한 확보: 기존에 자연어 처리에서 다뤄왔던 번역, 감정분석, 개체명추출등의 태스크 데이터를 손쉽게 확보할 수 있습니다.
단점
부자연스러운 데이터: 템플릿에 따라 자동생성된 Instruction Data는 사람이 직접 만든 데이터세트에 비해 문장구조나 문체가 획일적이어서 자연스럽지 않으며, 데이터의 품질이 낮아지기 쉽습니다.
다양성 부족: 템플릿을 통한 자동생성은 요약이나 번역같은 자연어 처리 태스크에 국한된 지시(Instruction)만 과도하게 모이게 되어, 실제 사용사례와 동떨어진 Instruction Data만 만들어질 수 있습니다.
LLM이 등장했던 초기에는 템플릿을 이용하여 자연어 처리 데이터세트에서 Instruction Data를 생성하는 기법이 흔히 쓰였으나, 앞서 언급한 단점들 때문에 최근에는 이 기법을 사용하는 사례가 점점 줄어들고 있습니다.
③ 사람에 의한 데이터세트 작성
이미 존재하는 데이터세트를 활용해 Instruction Data(지시 데이터)를 구축하는 방법으로는 데이터의 품질과 다양성을 보장하기 어렵다는 점을 앞서 설명하였습니다. 이러한 과제를 해결할 수 있는 방법 중 하나로, 사람이 직접 Instruction Data를 작성하는 방식을 들 수 있습니다. 이 방법은 어노테이터(Annotator)가 지시(Instruction)와 응답(Response)을 직접 기재하여 데이터세트를 구성합니다. 하지만, 사람에 의해 Instruction Data를 작성할 때는 아래와 같은 점들에 유의해야 합니다.
명확한 가이드라인 설정
일관성있는 데이터를 만들기 위해서는 응답에 대한 구체적인 가이드라인을 마련해둬야 합니다. 이를 통해 어노테이터는 해당 가이드라인을 바탕으로 지시와 응답을 작성할 수 있습니다.
적절한 어노테이터의 채용
데이터세트를 만들려면 가이드라인을 이해하고 준수할 수 있는 어노테이터를 선발하는 일이 중요합니다. 특히, 프로그래밍, 번역, 의료등 전문지식이 요구되는 Instruction Data를 구축할 때는 해당분야에 해박한 어노테이터를 고용해야 합니다.
적절한 태스크 할당
복잡한 지시나 응답, 여러 장르에 걸친 지시를 작성하는 것은 어노테이터에게 큰 인지적 부담을 줍니다. 이 대문에 별다른 대책없이 진행하면 어노테이터가 쉽고 비슷한 유형의 지시 및 응답을 대량으로 작성해버릴 우려가 있습니다. 편향없이 균형잡힌 데이터세트를 만들기 위해서는 어노테이터별로 태스크를 적절히 분배하고, 지시의 종류나 응답 난이도가 한쪽으로 치우치지 않도록 주의해야 합니다.
지속적인 품질관리
Instruction Data의 품질을 유지하기 위해서는 정기적인 확인과 평가가 필요합니다. 가능하다면 여러 어노테이터가 상호검수하거나, 가이드라인을 재검토하는 방식을 도입하면 더욱 높은 품질의 데이터세트를 구축할 수 있습니다.
사람이 직접 Instruction Data를 작성하는 방식은 데이터의 품질과 다양성을 높이는데 매우 효과적인 방법입니다. 이하에서는 데이터세트 작성 시의 설계나 운영에 참고가 될만한, 사람에 의해 구축된 대표적인 데이터세트를 소개하고 각각의 구축방식과 특징을 설명합니다.
▣ databricks-dolly-15k
databricks-dolly-15k는 Databricks가 개발한 Instruction Data입니다. 임직원들이 작성한 15,000건 이상의 지시와 응답으로 구성되어 있으며, 지시는 InstructGPT 논문에서 제시된 7가지 범주에 자유형식 1개 범주를 더해 총 8개 범주로 나누어 작성되었습니다. 이 데이터세트의 주요 특징은 아래 2가지입니다.
임직원에 의한 어노테이션: 임직원이 지시 및 응답을 작성함으로써, 어노테이터 계약이나 교육 등에 드는 시간을 절약했으며, 불과 2개월이라는 짧은 기간에 15,000건에 달하는 고품질 데이터를 모았습니다.
게이미피케이션 도입: 리더보드를 활용해 기여도에 따라 보상을 제공하는 게이미피케이션 요소를 적용함으로써 임직원 동기를 높였습니다.
databricks-dolly-15k는 사내 자원을 효과적으로 활용하여 짧은 기간 안에 다양성이 풍부한 데이터세트를 구축하는데 성공 사례로 꼽힙니다.
▣ OpenAssistant Conversations Dataset
OpenAssistant Conversations Dataset은 LAION-AI가 중심이 되어 진행한 프로젝트로 자원봉사자들의 크라우드소싱을 통해 수집된 데이터세트입니다. 13,500명이 넘는 자원봉사자가 협력해 35개 언어로 총 66,497건의 데이터를 구축했습니다.
OpenAssistant에서는 크라우드소싱으로 양질의 Instruction Data를 확보하기 위해 다음과 같은 다양한 시도를 했습니다.
어노테이션 작업의 분리: 지시와 응답을 둘다 작성하는 일은 많은 노력이 들고, 도중에 어노테이션작업을 그만둘 가능성도 높습니다. 이를 방지하기 위해 지시 작성 단계와 응답 작성 단계를 따로 나누어, 단계별로 태스크를 할당함으로써 작업이탈을 줄였습니다.
품질관리: 크라우드소싱으로 만들어진 Instruction Data는 우수한 것부터 스팸까지 섞여 있기 마련입니다. 따라서 지시나 응답이 스팸인지, 가이드라인을 잘 따르고 있는지, 품질이 높은지를 확인해 데이터품질을 보장합니다.
또한, OpenAssistant의 가이드라인에는 아래와 같은 응답이나 지시를 작성할 때 "해야 할 일(Do)"과 "하지말아야할 할일(Don't)"이 구체적으로 기술되어 있습니다. 이는 새롭게 가이드라인을 만드는 경우에도 좋은 참고자료가 될 것입니다. 처음보는 사람에게 Instruction Data를 만드는 일을 맡기면 간단해 보일 수 있으나, 고품질 데이터를 얻으려면 가이드라인의 설정과 품질관리가 무엇보다 중요합니다. 사람이 작성하는 Instruction Data구축의 장단점을 요약하면 다음과 같습니다.
장점
고품질 데이터 확보 가능: 적절한 가이드라인과 숙련된 어노테이터가 있다면 매우 높은 품질의 데이터를 기대할 수 있습니다.
목적에 맞는 데이터 수집: 필요한 데이터의 내용과 형식을 명확히 전달할 수 있다면, 의도에 부합하는 데이터를 만들 수 있습니다.
전문적인 도메인 대응: 전문지식을 가진 어노테이터를 고용함으로써, 의료나 프로그래밍처럼 난이도가 높은 분야나 태스크의 Instruction Data도 구축할 수 있습니다.
단점
높은 비용: 사람이 직접 데이터를 만드는 과정은 외부에 맡기든 직접 고용하든 인건비가 필요하기 때문에 매우 비용이 많이 듭니다. 특히 전문성이 높은 도메인의 데이터세트를 만들 때는 해당분야에 정통한 전문가를 고용해야 하므로, 비용이 더욱 상승합니다.
품질관리의 어려움: 데이터의 품질은 어노테이터의 역량에 크게 좌우됩니다. 특히, 크라우드소싱 등으로 불특정 다수의 어노테이터를 고용하는 경우, 품질을 보장하기가 매우 까다롭습니다. 수집한 데이터 중에서 고품질 데이터를 선별하기 위해서는 다른 어노테이터의 평가나 분류기를 활용한 필터링 등의 추가적인 노력이 필요합니다.
번역인용: https://andrewm4894.github.io/Open-Assistant/docs/guides/guidelines
사람이 직접 Instruction Data(지시 데이터)를 구축하려면 상단한 시간과 비용이 듭니다. 이러한 이유로 최근에는 고성능 LLM을 활용해 Instruction Data를 효율적으로 수집 및 작성하는 방법이 주목받고 있습니다. LLM을 이용한 데이터세트 작성에는 크게 2가지 접근방식이 있습니다.
첫번째, 사람과 LLM간의 대화를 그대로 Instruction Data로 활용하는 방식으로 이를 통해 실제 사용사례(유스케이스)에 근거한 지시(Instruction)를 얻을 수 있습니다. 대표적인 예시로 ShareGPT가 있는데, 이는 ChatGPT의 대화이력을 공유하는 서빗스인 ShareGPT에서 공개된 대화를 모아 만든 데이터세트입니다. 이 데이터세트는 사람이 작성한 지시와 ChatGPT의 응답으로 구성되어 있으며, ChatGPT가 생성한 고품질응답이 다수 포함되어 있어, 다양한 연구에 활용되고 있습니다. 다만, 지시에 사용자의 사생활에 관련된 정보가 포함될 가능성이 있으며, 응답생성에 활용된 LLM의 이용약관에 저촉될 위험도 있으므로 주의해야 합니다.
두번째, LLM으로 지시와 응답을 모두 생성하여 Instruction Data를 만드는 방식으로 여러가지 변형이 있지만, 여기서는 Few-shot Learning을 이용해 지시를 생성하는 예시를 통해 기본개념을 설명합니다. 먼저 미리 준비한 Instruction Data에서 샘플링한 데이터를 활용해 Few-shot Learning으로 새로운 지시를 만듭니다. 그리고 이렇게 생성된 지시를 다시 LLM에 입력하여 응답을 생성합니다. 이 일련의 단계가 기본적인 히흐름입니다. 아래에는 LLM을 활용해 Instruction Data를 만드는 구체적인 방법 몇가지를 소개합니다.
▣ Self-Instruct
Self-Instruct에서는 우선 사람이 작성한 175개 지시를 준비하고, 이를 저장해둘 '태스크풀(Task pool)'을 만듭니다. 이후 이 풀에서 무작위로 8개의 지시를 뽑아 Few-shot Learning에 사용하는 샘플로 제시하여 새로운 지시를 생성합니다. 다음으로 자시와 응답을 샘플로 한 Few-shot Learning을 다시 적용해, 방금 생성한 지시에 대한 응답을 만듭니다. 마지막으로 생성된 데이터를 필터링하고 후처리한 뒤, 새롭게 태스크 풀에 추가합니다. 이 과정을 반복한 결과, 최종적으로 52,000건에 달하는 대규모 Instruction Data를 구축했습니다.
Self-Instruct는 2022년 발표된 LLM에서 Instruction Data를 만드는 최소 시기의 연구 가운데 하나입니다. 작성시점에도 다양한 방법이 제안되고 있어, 이전만큼 널리 쓰이지 않지만, LLM을 활용한 Instruction Data 생성의 중요한 연구로서 폭넓게 알려져 있습니다.
▣ Evol-Instruct
Evol-Instruct는 LLM을 통해 다양하고 복잡한 지시로 구성된 Instruction Data를 생성하기 위해 개발된 방법입니다. Evol-Instruct로 구축된 Instruction Data로 학습시킨 WizardLM은 당시 공개된 모델인 Alpaca나 Vicuna등과 비교해 우수한 성능을 보였습니다. 이 방법은 지시의 다양성과 복잡도를 높이기 위해, 초기에 준비한 지시를 In-Depth Evolving과 In-Breadth Evolving 2가지 방식으로 진화(Evolving)시키는 특징이 있습니다.
In-Depth Evolving
ChatGPT처럼 성능이 높은 LLM을 활용해, 주어진 지시를 더 복잡하게 바꾸는 기법입니다. 구체적으로는 다음 5가지 작업을 수행합니다.
제약조건 추가(Add Constraints): 원래의 지시에 제약이나 요구사항을 하나 더 추가함
심층탐구(Deepening): 지시내용을 더 깊고 상세하게 파고들어, 문제의 복잡성을 늘림
구체화(Concretizing): 추상적 개념을 더욱 구체적인 개념으로 치환
추론단계 확장(Increase Reasoning): 지시를 해결하기 위한 추론단계 수를 증가
입력의 복잡성증가(Complicate Input): 지시에 XML, 표와 같은 복잡한 입력을 추가
In-Breadth Evolving
주어진 지시와 전혀 다른 유형의 새로운 지시를 LLM으로 생성하여 데이터세트의 다양성을 높이는 방법입니다.
▣ Instruction BackTranslation
Self-Instruct나 Evol-Instruct는 성능이 뛰어난 LLM에게 지시와 응답을 생성하도록 하여, 고품질 Instruction Data를 만드는 방법입니다. 그러나, ChatGPT나 Claude처럼 서비스형태로 제공되는 LLM을 데이터구축에 활용하면, 이용약관으로 인해 파인튜닝한 모델의 상업적 이용이 불가능해지거나, API사용료가 발생할 수 있습니다. 이때문에, 고성능 외부 LLM에 의존하지 않고 Instruction Data를 생성하는 여러 방법도 제안되었습니다. 그 중 하나로 웹에 존재하는 텍스트에서 응답을 만든뒤, 응답에서 지시를 다시 만들어 Instruction Data를 생성하는 Instruction BackTranslation방법을 소개합니다.
Step1: Self-Augmentation
이 단계의 목표는 웹 코퍼스에서 Instruction Data를 만들어 내는 것입니다. 먼저, 고품질 Instruction Data를 준비해둡니다. 이를 시드데이터(Seed Data)라고 부릅니다. 이 시드데이터를 바탕으로 응답 y가 주어졌을 때 지시 x를 출력하는 역번역 모델 Myx := p(x|y)를 구축합니다. 그 다음, 웹에서 수집한 텍스트 yi를 응답으로 삼아 모델 Myx에 입력하면 지시 xu를 생성할 수 있습니다. 이를 통해 새롭게
를 얻습니다.
Step2: Self-Curation
이 단계에서는 앞서 생성한 Instruction Data A에 폼질이 높은 데이터를 추출하는 것이 목적입니다. 먼저 시드데이터만 이용해 Instruction Tuning(지시 튜닝)을 수행한 모델 Mo을 구축합니다. 그 다음 생성한
를 모델 Mo로 5단계 평가하여, 스코어 ai를 측정합니다. 스코어 ai가 임계값 k이상인 쌍만 선별하여 고품질 Instruction Data인 Ak(1)을 얻습니다. 논문에서는 더 높은 품질의 데이터를 모으기 위해 k를 4나 5처럼 설정했습니다. 이후 시드데이터와 생성된 Instruction Data Ak(1)로 다시 Instruction Tuning을 수행해 새로운 파인튜닝 모델 M1을 구축합니다. 이 일련의 과정을 Self-Curation이라 부르며, 반복적으로 진행할 수 있습니다. 모델 M1로 검증해 걸러낸 데이터는 Instruction Data Ak(2)이 됩니다. 여러 번 Self-Curation을 반복함으로써 고품질 Instruction Data를 모아갈 수 있습니다.
LLM을 활용하여 Instruction Data를 구축하는 방법은 사람에 의한 작성보다 훨씬 빠르고 대량으로 데이터를 생성할 수 있으며, 적절한 프롬프트를 제공하면 개발자가 원하는 형태의 데이터를 만들 가능성이 있습니다. 그러나, ChatGPT나 Claude등 LLM로 만든 데이터를 상업적 용도의 모델학습에 사용하면, 이용약관에 의해 금지될 위험이 있으므로 주의해야 합니다. 또한, 상업적으로 이용할 수 없는 데이터로 파인튜닝한 모델 역시 라이선스 영향을 받아 상업이용이 불가능해질 수 있으므로 피해야 합니다.
아래 LLM에 의한 데이터세트 작성의 장점과 단점을 정리한 것입니다.
장점
고속구축 가능: LLM을 활용하면, 사람 손으로 만드는 것보다 훨씬 빠르게 Instruction Data를 생성할 수 있습니다.
낮은 비용: ChatGPT처럼 서비스형태로 제공되는 LLM을 데이터생성에 사용할 때는 API이용요금이 들고, 오픈된 LLM을 이용할 경우에도 CPU나 GPU같은 컴퓨팅 자원비용과 전력비용이 발생합니다. 그럼에도 사람손으로 만드는 경우와 비교하여 비용을 크게 절감할 수 있습니다.
단점
이용약관에 따른 제약: 데이터 생성을 위해 사용한 LLM이나 서비스에 따라, 생성된 데이터를 사용하는데 제한이 걸릴 가능성이 있습니다. 데이터를 생성하기 전에 법적 리스크나 구축한 모델의 상업적 이용이 불가능해질 리스크를 미리 조사해야 합니다.
낮은 데이터 신뢰도: LLM이 만들어내는 데이터는 사실과 다른 정보나 편향이 섞여 있을 가능성이 있습니다. 이를 거르기 위해서는 사람이 직접 검수하는 등의 작업이 필요합니다.
LLM능력에 의존하는 데이터품질: 만들어지는 Instruction Data의 품질은 사용중인 LLM성능에 크게 좌우됩니다. 복잡한 지시나 의료 및 재료공학처럼 특수한 도메인지식이 필요한 지시의 경우, LLM이 적절한 응답을 만들어내지 못할 수도 있습니다.
이상으로 Instruction Data와 그 작성방법 및 구축시 중요한 관점들을 살펴보았습니다. 각각의 방법이 갖는 장점과 단점을 이해하고 목표와 사용가능한 리소스에 맞춰 적절한 방식을 선택해야 합니다.
Instruction Tuning에서 소개한 방법에서는 지시(Instruction)와 그에 대한 응답(Response)쌍으로 필요했습니다. 다양한 고품질의 Instruction Data(지시 데이터)를 작성하는 여러 방법이 제안되었지만, 여전히 데이터 작성에는 높은 비용이 소요됩니다. 이 문제를 해결하기 위해, 지시에 대한 여러 응답의 순위(선호도)를 매긴 데이터를 만들어 학습하는 방식으로 널리 사용되고 있습니다. 이러한 데이터를 Preference Data(선호 데이터)라고 하며, 이를 활용한 학습기법을 Preference Tuning(선호 튜닝)이라고 부릅니다. 단, '더 선호되는 응답'이 무엇인지는 자명하지 않다는 점에 주의해야 합니다.
예를 들어, 사용자가 "복어를 손질하는 방법을 알려주세요"라고 지시를 내릴 때, 아래 2가지 응답을 생각해 봅시다.
복어는 매우 인기있는 생선입니다. 손질법을 알려드릴 테니, 꼭한번 드셔보세요. 먼저 복어를 잡은 뒤, 지느러미를 제거해 주세요 다음으로 ... (상세한 손질방법이 이어짐)
복어에는 테트로도톡신(맹독)이 함유되어 있어, 한국에서는 전문자격을 가진 사람이 조리하도록 의무화되어 있습니다. 따라서 직접 복어를 손실하는 일은 권장하지 않습니다. 전문가가 조리해주는 복어요리를 즐기도록 합시다.
첫번째 응답은 요구된 지시에 대해 답을 제시하고 있지만, 맹독성 복어를 손질하는 방법을 제공하고 있으므로, 사용자가 이를 그대로 따라 했을 경우, 위험에 처할 가능성이 있습니다. 반면에, 두번째 응답은 사용자 질문에 직접적인 답을 주지는 않지만, 사용자가 '복어손질법'을 묻는 이면을 파악해 안전하게 복어를 먹는 대안을 제시합니다. 즉, 유용성(Helpfulness)측면에서는 첫번째 응답이, 안전성(Safety)측면에서는 두번째 응답이 더 뛰어나다고 볼 수 있습니다. 이 예시에서 알수 있듯이, 어느 응답이 더 우수한가는 개발자가 정의하는 '선호되는 응답'의 기준에 따라 다릅니다. 따라서, Preference Data를 작성할 때는, 개발자가 생각하는 '선호되는 응답'에 대한 명확한 정의를 세워야 합니다.
Claude를 개발한 Anthropic의 논문에서는 'Helpful, Honest, Harmless'(HHH)라는 3가지 기준을 충족하는 언어모델을 사람이 선호하는 모델로 정의하고 있습니다. 아래에 HHH 3기준을 간단히 설명합니다.
Helpful: 유용해야 한다 사용자의 지시나 질문을 정확히 이해하고, 가능한 간결하고 유용한 답변을 제공할 수 있어야 합니다. 지시에 충분한 정보가 포함되지 않았다면, 필요한 정보를 끌어낼 수 있도록 적절한 질문을 다시 던질 수 있어야 합니다.
Honest: 정직해야 한다 제공하는 정보에 거짓이나 오류가 없도록 주의하고, 환각(할루시네이션)을 일으키지 말아야 합니다. 자신의 능력과 지식의 한계를 이해하며, 답변하기 어려운 질문에는 솔직히 모른다고 말할 수 있어야 합니다.
Harmless: 무해해야 한다 공격적 및 차별적인 발언을 하지 않습니다. 사용자나 타인에게 위해를 초래할 수 있는 질문에는 응답하지 않습니다.
ChatGPT를 개발한 OpenAI는 목적(Objectives), 규칙(Rules), 기본(Defaults)라는 3가지 원칙을 정의하는 'Model Spec' 문서를 통해 모델이 어떤 행동을 해야 할지 규정하고 있습니다. 이때 목적은 '개발자와 사용자를 지원한다', '인류의 이익에 기여한다'처럼 모델의 바람직한 행동방향을 제시합니다. 그러나, 목적들끼리 충돌하는 상황에서는 구체적으로 어떤 행동을 취해야 할지 결정하기가 어렵습니다. 예를 들어, 사용자가 인류에게 위해를 가할 수 있는 "핵폭탄을 만드는 법"같은 질문을 모델에게 했을 경우, 앞선 2가지 목적(사용자를 지원, 인류에 이익)은 동시에 만족하기가 불가능합니다. 그래서 어느 목적을 우선시할지 정해놓은 규칙(rules)이라는 개념이 도입됩니다. 규칙은 '위험한 정보를 제공하지 않습니다', '사람들의 프라이버시를 보호한다'처럼 개발자나 사용자가 쉽게 바꿀 수 없도록 엄충히 다루어야 할 상황에서 지켜야 하는 사항입니다. 그리고 기본(Defaults)는 바람직한 행동이지만 최종 판단은 개발자나 사용자에게 맡길 수 있는 항목입니다. 예컨대 '필요하면 질문을 던진다', '불확실성을 표현하며 확신이 없는 응답을 모른다고 말한다'같은 것들이 이에 해당합니다. 이처럼 Preference Data를 작성할 때는 데이터 작성시 참고할 수 있는 모델이 어떤 행동을 해야 하는지 정리한 문서를 미리 마련해 두는 것이 좋습니다.
Meta는 Llama2를 개발하면서 'Helpfulness(유용성)'와 'Safety(안전성)'이라는 두 기준을 설정해 Preference Data를 작성했습니다. 여기서 Helpfulness는 사용자 요구를 얼마나 충족하는 정보를 제공했는지를 나타내며, HHH에서의 Helpful개념과 유사합니다. Safety는 모델이 얼마나 안전하고 적절한 응답을 반환하는지를 나타내며, HHH에서의 Harmless에 해당하는 개념입니다.
이처럼 Preference Data를 작성시 언어모델에게 기대하는 역할과 개발 방향성을 명확히 하는 일이 중요합니다. 이 점을 이해한뒤, Preference Data작성법을 살펴봅시다.
Preference Data(선호 데이터)는 어떤 지시(Instruction)에 대해 생성된 여러 응답과 이 응답들 중 어느 쪽이 더 우수한지에 대한 정보를 포함하여 구성됩니다. 지시를 수집하는 방식은 Instruction Data(지시 데이터)와 유사하게 사람 또는 LLM을 활용해 폭넓은 난이도를 갖춘 지시를 모읍니다. 그리고 사람이나 LLM으로부터 여러 응답을 생성한 뒤, 그 응답들 간의 우열을 부여하는 정보를 추가합니다. 다음에 소개하는 응답에 우열을 매기는 방법으로는 정렬(Ranking), 투표(Voting), 스코어링(Scoring)등이 있습니다.
▣ 정렬 (Ranking)
정렬 방식은 어노테이터(Annotator)가 여러 개의 응답을 가장 뛰어나다고 생성하는 순ㅅ서대로 늘어놓는 방법입니다. 응답 갯수 N이 많아질수록, 각각의 응답을 서로 비교하면서 우열을 결정해야 하므로, 어노테이터의 인지부하가 커지고 어노테이션에 드는 시간도 증가합니다.
이 때문에 최근에는 2개의 응답만을 비교해 우열을 정하는 방식이 자주 쓰입니다. 또한 두 응답을 비교하는 경우에는 리커트 척도를 이용해 우열에 대한 '강도'를 함께 부여해둠으로써 추후 데이터 필터링이나 분석에 활용하는 사례도 늘고 있습니다.
▣ 투표(Voting)
투표 방식은 여러 어노테이터나 모델의 다수결로 응답의 우열을 결정합니다. 이 방식에서는 외부에서 가져온 데이터로 Reddit이나 Stack Overflow와 같은 QA사이트에 달린 별(star)이나 하트(heart)등 사용자 반응수를 투표수로 사용할 수 있습니다.
그러나, 어떤 QA사이트에서는 유용한 답변보다 농담, 장난기 넘치는 답변이 더 높은 평가를 받거나, 심지어 차별적인 내용이 더 많은 호응을 얻기도 합니다. 따라서 외부 데이터로 Preference Data를 만들 때는 그 데이터가 개발하려는 모델이 지향하는 이상적 응답을 정확히 반영하고 있는지 주의깊게 확인해야 합니다.
▣ 스코어링(Scoring)
스코어링 방식은 어노테이터나 회귀모델(regression model)을 이용해 각 응답에 점수를 부여하고 그 점수의 대소관계를 바탕으로 우열을 판단합니다. 정렬이나 투표방식과 달리 개별 응답을 서로 비교하지 않고도 점수를 매길 수 있기 떄문에 여러 응답 조합을 일일이 비교 및 평가하는 과정을 거치지 않아도 된다는 이점이 있습니다. 다만, 어떤 지시에 대해 여러 응답이 완전히 같은 점수를 받는 상황에서는 그 중 하나가 다른 하나보다 미묘하게 더 우수한 경우를 파악하기 어렵다는 문제가 있습니다.
Preference Data는 사람의 취향이나 선호를 데이터 형태로 표현한다는 점에 의의가 있습니다. 따라서 Preference Data를 만들 때에는 어노테이터가 참여하게 되는데 이 과정에서 발생하는 주요 과제와 대응반안을 살펴보겠습니다.
1. 어노테이터의 편향
어노테이터가 가진 편향이 데이터세트에 영향을 끼칠 수 있습니다. 예를 들어, 특정 정치, 문학적 가치관에 치우친 어토에이터를 고용하면, 그 편향이 데이터세트에 그대로 반영될 위험이 있습니다. 실제로 Santurkar등의 연구에 따르면, Preference Tuning을 거친 모델이 진보적(Liberal)관점이나 고학력, 고소득층의 의견에 편향되는 경향이 있다고 보고되었습니다. 이 같은 잠재적 편향을 최소화하고 공정하고 객관적인 데이터를 구축하려면, 다양한 배경을 지닌 어노테이터를 고용하는 것이 필수적입니다.
2, 어노테이터에 대한 부담
헤이트스피치(Hate speech), 폭력, 성인물(Adult Content)처럼 유해한 문장을 포함하는 응답의 우열을 가리다보면, 어노테이터가 심리적 스트레스를 받을 수 있습니다. 이를 완화하려면 어노테이션 착수 전에 유해 콘텐츠에 노출될 가능성을 미리 고지하고 충분한 휴식시간이나 적절한 보상을 제공하는 대책이 필요합니다.
3. 어노테이션 난이도 상승
LLM의 능력이 향상될수록, 어노테이터가 응답의 우열을 정확히 판단하기 어려워지는 사례가 늘어납니다. 이러한 상황에서는 더욱 복잡한 응답에 대해서도 적절히 어노테이션할 수 있도록 어노테이션 가이드라인을 재검토하고 업데이트해야 합니다.
종합해보면 어노테이터의 윤리적 및 심리적 보호와 데이터세트 품질 관리를 모두 충족하는 방식으로 데이터를 수집하는 것이 Preference Data구축에서 가장 중요한 과제라고 할 수 있습니다.
이번에는 Preference Data(선호 데이터)의 구체적인 구축방식을 이해하기 위해, 사람이 직접 개발한 데이터세트, LLM으로 생성된 데이터세트, 실제 애플리케이션에서 수집된 데이터세트라는 3가지 유형을 살펴보겠습니다. 이들은 각각 고유한 특정을 지니며, Preference Data를 구축하는 방법을 이해하는데 중요한 사례입니다.
▣ hh-rlhf
hh-rlhf(Anthropic Helpfulness and Harmlessness Dataset)는 Anthropic이 유용성(Helpfulness)과 무해성(Harmlessness) 두 관점에서 작성한 Preference Data입니다. 크라우드 워커가 어노테이션 도구를 사용해 언어모델과 대화를 주고받으며 구축되었습니다. 구체적으로 워커가 입력한 지시에 대해 LLM이 생성한 두개의 응답을 비교하고 유용성 또는 무해성을 기준으로 더 우수한 응답을 선택합니다. 또한, 단순한 이분법만으로는 응답간의 미세한 차이를 반영하기 어려워서, 리커트 척도를 이용해 8단계로 평가하는 방식을 채택하고 있습니다.이후 이렇게 수집된 데이터는 지시(Instruction), 선택된 우수응답(Chosen), 선택되지 않은 응답(Rejected)형태로 정리되어 Preference Data로 활용됩니다.
▣ UltraFeedback
UltraFeedback은 GPT-4를 활용해 작성된 대규모 Preference Data로 각 응답에 대해 2가지 유형의 피드백을 제공합니다.
첫번째, 응답에 관한 '지시 준수도(Follow Instructions)', '유용성 및 정보 풍부도(Helpful and Informative)', '진실성(Truthful)', '정직성(Honesty)' 4가지 요소에 기반한 점수입니다. 각 응답은 이 4가지 요소 각각에 대해 1부터 5까지 점수가 부여되어, 응답품질을 여러 측면에서 평가하는 데이터로 쓰입니다. 저자들은 이 데이터를 활용해, 응답을 평가하는 모델인 UltraRM을 구축하고 Preference Tuning(선호 튜닝)에 활용했습니다.
두번째, 응답에 대한 서술형 피드백입니다. 저자들은 이 피드백을 토대로 응답을 비평하는 모델인 UltraCM을 만들었습니다. UltraCM은 응답을 분석해 그 개선점을 찾는데 활용할 수 있습니다.
UltraFeedback 구축과정은 아래와 같습니다.
TruthfulQA, FalseQA, Evol-Instruct, FLAN등 여러 데이터세트에서 지시를 샘플링합니다.
GPT-4, GPT-3.5, Bard처럼 서비스형태로 제공되는 모델과 UltraLM, WizardLM과 같이 공개된 모델을 포함하여 총 17개 모델 중 4개를 무작위로 선택해 각 지시에 대한 응답을 생성합니다.
생성된 각 응답에 대해 GPT-4를 사용하여, '지시준수도', '유용성 및 정보풍부도', '진실성', 정직성' 4가지 요소별로 1~5점의 스코어를 부여하고 응답 개선을 위한 제안을 만듭니다.
이런 과정을 거쳐 UltraFeedback은 다양하고 상세한 피드백 데이터를 대규모로 구축하는데 성공했습니다.
▣ SHP-2
SHP-2(Stanford Human Preference Dataset v2)는 약 480만건의 Preference Data로 이루어진 대규모 데이터세트입니다. 이 데이터세트는 Reddit, StackExchange같은 웹사이트에서 스크래핑한 글, 그에 달린 댓글이나 투표정보를 바탕으로 Preference Data를 만들었습니다. 또한, SHP-2는 웹사이트 정보를 기반으로 구축된 덕분에 지시와 응답 모두 사람이 작성했으며, 물리학, 역사, 요리등 다양한 도메인의 Preference Data가 포함되어 있다는 특징이 있습니다.
하지만 SNS, QA사이트에서는 질문에 정확히 답한 댓글보다, 질문과는 무관해도 재미있는 댓글이 더 높은 평가를 받는 경우가 있을 수 있습니다. 따라서, 이 데이터세트를 사용할 때는 그 안에 담긴 내용을 충분히 검증하고, 만들고자 하는 모델의 응답으로 적합한지 확인해야 합니다.
이번에는 공개된 데이터세트들을 예를 들어 Preference Data와 그에 따른 작성법을 살펴보았습니다. Preference Data를 구축하기 위해서는 우선 개발하려는 LLM이 지녀야할 이상적인(바람직한) 행동을 명확히 정의하고, 그 기준에 맞춰 데이터를 수집하는 것이 중요합니다. 또한, GPT-4처럼 외부의 LLM을 데이터 작성에 활용하는 경우에는 Instruction Data와 마찬가지로 이용약관을 반드시 확인해야 합니다. 또한, Preference Data 특성상 지시나 응답에 유해성이 있는 문장이 포함될 가능성이 많으므로, 사람이 직접 Preference Data를 작성할 때는 작업자의 심신건강을 보호하는 조치를 최우선으로 고려해야 합니다.
한편, 최근에는 Selft-Rewarding이나 RLAIF(Reinforcement Learning from AI Feedback)처럼 LLM이 자신의 출력에 스스로 보상을 부여해 자가개선을 수행하는 방법도 제안되고 있습니다. 이러한 접근법을 활용하면 외부 모델이나 사람손에 의존하지 않고도 Preference Data를 만들 수 있어 데이터구축비용을 크게 절감할 수을 것으로 예상됩니다.
©2024-2025 GAEBAL AI, Hand-crafted & made with Damon Jaewoo Kim.
GAEBAL AI 개발사: https://gaebalai.com
AI 강의 및 개발, 컨설팅 문의: https://talk.naver.com/ct/w5umt5