https://arxiv.org/pdf/2305.14233


Abstract:

  • 이 논문의 핵심 아이디어는 “고품질의 지시(Instruction) 데이터에 기반해 언어 모델을 미세 조정(fine-tuning)하면, ChatGPT 같은 대화형 모델의 성능을 크게 높일 수 있다”는 점임.
  • 특히 이들은 이러한 지시 데이터의 “다양성과 규모”를 더욱 확장하면 오픈소스 모델의 상한선(performance ceiling) 또한 끌어올릴 수 있다고 주장을 함.
  • 저자들은 UltraChat이라는 새롭고 대규모의 멀티턴(여러 발화가 오가는) 대화 데이터셋을 제공함. 이건 기존 데이터셋과 달리 인간이 입력한 질의가 직접 포함되지 않고, 모델과 프레임워크를 활용해 “사람과 AI 어시스턴트가 다룰 수 있는 광범위한 주제와 상황”을 최대한 포괄하도록 설계되었음.
    • 즉 2개의 ChatGPT API를 사용해서 대화를 생성하는 방식임. 인간의 개입 없이.
    • 약 150만(1.5M) 개 이상의 대화(각각 여러 턴으로 구성)가 포함되어 있고, 토픽과 지시 유형이 매우 다양하게 생성한다는 점이 특징임.
    • 통계적으로 살펴봤을 때, 규모, 대화 길이(턴 수), 발화 다양성, 맥락적 연결성(일관성) 등이 기존 공개 데이터셋보다 우수하다고 보고함.
    • ^멀티턴 데이터를 어떻게 대용량으로 만들 수 있는거지? (방법론)
  • 이들은 UltraChat 데이터셋을 사용해 Meta의 LLaMA 모델을 추가 미세 조정한 결과, UltraLLaMA라는 강력한 대화형 모델을 개발했다고 함
    • ^애초에 대화형 모델을 만들었네.
  • Vicuna 등 이전까지 오픈소스 분야에서 성능이 우수하다고 알려진 모델들을 평가했을 때, UltraLLaMA가 전반적으로 더 높은 성능을 보여주었다고 한다.

 

Introduction:

  • Instruction Fine-tuning 은 적은 양의 데이터(소량이지만 잘 설계된 지시 데이터)로도 기본적인 지시-응답 능력을 어느 정도까지 확보하는 것은 가능하다는 사실이 여러 연구에서 증명되었음. 하지만 이 방식만으로 Vicuna 수준 이상의 모델을 얻기는 어렵고, ChatGPT나 GPT-4 같은 최상위 모델을 능가하는 것은 더욱 어렵다고 함.
  • 즉 논문에서는 “0에서 60까지” 즉 어느 정도 성능을 내는 모델을 만드는 것은 비교적 쉽지만, 이를 넘어 최고 수준(‘60→100’)으로 발전시키는 것은 훨씬 어려운 과제라고 지적함.
  • 저자들은 대화형 모델 성능을 한 단계 더 끌어올리는 가장 직접적인 방법이 ‘고품질·고다양성 데이터’ 라고 주장한다. 이를 위해 UltraChat이라는 100만(1M) 이상의 멀티턴 대화 데이터셋을 새롭게 제시함.
  • UltraChat 데이터셋의 특징:
    • 사람이 실제로 AI 어시스턴트에게 할 법한 다양한 상호작용을 폭넓게 아우르도록 설계되었음.
    • 특정 태스크(예: Q&A, 요약 등)에만 집중하는 대신, 세상을 묻는 질문(Questions about the World), 창작 및 생성(Creation and Generation), 기존 자료 도움 요청(Assistance on Existing Materials) 이렇게 세 가지 범주를 중점적으로 포함해서 다양한 상황과 주제를 포괄하도록 구성함.
    • ^특정 테스크와 관련된 데이터에만 집중하는 대신에 다양한 범주의 데이터를 포함하는게 더 파인튜닝 성능에 좋은건가? (예: 세상을 묻는 질문(Questions about the World), 창작 및 생성(Creation and Generation), 기존 자료 도움 요청(Assistance on Existing Materials)).
    • 이렇게 한 이유는 인간과 AI 어시스턴트 간의 가능한 모든 상호작용을 포괄적으로 나타내도록 하기 위함임.

 

Instruction Tuning 을 성공적으로 이끄는 방법 - 관련 연구를 통해서:

  • Longpre et al. (2023)은 이 지시 튜닝의 작업의 개수를 1,836개의 작업으로 확장하여, 작업 수를 늘리는 것이 분포 밖 일반화(out-of-distribution generalization)에 이로운 점을 보여줬다고 함.
  • 그리고 Wei et al. (2021) 또한 지시 튜닝의 성공이 데이터셋의 품질과 프롬프트의 설계에 달려 있음을 결론지었음.
  • 또 튜닝된 모델의 동작을 더욱 제어하기 위해, Ouyang et al. (2022)와 Schulman et al. (2017)은 인간의 피드백이 주석된 데이터를 통해 직접 보상 모델을 학습한 다음, 강화 학습을 사용하여 모델의 행동을 인간의 선호에 맞추는 방법을 제안했음. 이 기술은 지시 튜닝과 결합되어 모델의 성능을 더욱 향상시킬 수 있으며, ChatGPT와 같은 LLM에 성공적으로 적용되었다고 함.

 

LLM을 활용한 데이터 증강의 성공:

  • 최근에는 이러한 강력한 LLM을 데이터 증강을 위해 활용하는 데에 많은 관심이 모아지고 있음.
  • 예로 SelfInstruct(Wang et al., 2022) 기법을 사용하여 Alpaca(Taori et al., 2023b)는 Text-Davinci-003을 "디스틸링"하여 175개의 초기 작업(seed tasks)을 기반으로 52,000개의 고품질 지시-응답 쌍을 생성했습니다. 이 데이터셋으로 LLaMA(Touvron et al., 2023) 모델을 훈련한 후, 그 모델은 거의 Text-Davinci-003과 동등한 성능을 보였다고 함.
  • Alpaca의 성공은 LLM을 활용한 데이터 증강에 대한 수많은 후속 연구를 촉진시켰습니다. 예로는 code-alpaca(Chaudhary, 2023), alpaca-cot(Si et al., 2023), GPT4ALL(Anand et al., 2023), ShareGPT(Domeccleston, 2023), Dolly-v2(Conover et al., 2023), BELLE(Ji et al., 2023), Vicuna(Chiang et al., 2023), Koala(Geng et al., 2023), Baize(Xu et al., 2023) 등이 있습니다. 연구 결과에 따르면 데이터 규모를 증가시키는 것이 모델 성능을 지속적으로 향상시킬 수 있다는 것이 밝혀졌습니다.
  • 데이터 크기를 늘리는 것 외에도, 이러한 연구들은 더 나은 품질의 데이터를 수집하기 위한 프롬프트 엔지니어링 방식에서도 차이를 내기 시작했음. 예를 들어, CAMEL(Li et al., 2023)은 LLM이 주어진 복잡한 작업을 해결하기 위한 다중 에이전트 역할극 환경을 설계하여, 실제 인간 대화를 시뮬레이션하는 115,000개의 지시-응답 쌍을 생성했음.

 

UltraChat 의 설계:

  • 다양한 데이터를 위한 설계:
    • 데이터 다양성을 보장하기 위한 핵심 요소는 시작 문장의 다양성과 사용자 응답 스타일의 다양성을 확보하는 것이라고 함.
      • 응답 스타일의 다양성이 데이터에 영향을 줌. 멀티턴 대화다보니까, 대화 스타일이 영향을 준다.
    • 시작 문장을 이용해서 멀티턴 대화를 설계함. 그리고 이런 시작 문장은 모든 작업을 포함해야하며, 다양해야 한다고 한다.
    • 이렇게 시작 문장을 주고, 다양한 언어 스타일로 응답을 유도.
  • 다양한 데이터를 어떻게 설계하는지 예시로 보자:
    • 정보 접근(Information Access) 분야:
      • 세계에 대한 질문을 던지는 분야의 데이터를 수집하는거임.
      • 사용자는 이런 상호작용에서 광범위한 주제에 대해 정확하고 빠른 답변을 기대함.
      • 이런 기대에 맞춰서 데이터를 생성해야한다고 한다:
        • 이거에 맞는 데이터는현실 세계에 존재하는 개념, 사물, 엔티티에 주로 초점을 맞췄다고 함. (분류를 한거지)
        • 개념과 관련된 데이터 생성:
          • ChatGPT에게 일상 생활의 다양한 측면을 포괄하는 30개의 포괄적인 주제를 생성하도록 요청했다고 함.
          • 그런 다음 각 주제를 더 깊이 잇게 탐색하기 위해서 30~50개의 하위 주제나 관련 개념을 요청했다고 한다.
        • 엔터티와 관련된 데이터 생성;
          • 위키데이터(Wikidata)를 활용.
          • 위키백과(Wikipedia) 기사에서의 빈도수를 고려하여 더욱 정제되었으며, 특히 가장 자주 등장하는 10,000개의 엔티티에 집중했다고 한다.
      • 총 50만개의 시작 문장 데이터를 생성하고, 응답 스타일로는 "맥락을 고려해서 간결하고 의미있는 응답을 줘" 라고 함.
    • 조건부 정보 생성(Conditional Information Creation):
      • 이거는 인간의 입력 조건을 기반으로 새로운 정보를 생성하는 것으로, 글을 쓰는 것, 스토리를 쓰는 것, 시를 쓰는 것 이런것과 관련있음.
      • 각 유형별로 글쓰기를 위해 다양한 지시문을 ChatGPT 를 통해 생성했다고 함. (유형별로 분류)
      • 그리고 각 유형별의 지시문을 거의 다 구체화를 했다고 함. 이게 시작 문장이 됨.
      • 프롬프트에서는 "글의 생성과 개선" 이라는 목적을 알려줘서, 우리가 원하는 데이터가 생성이 되도록 했다고 함.
    • 정보 변환(Information Transformation):
      • 인간이 가져온 텍스트 자료를 재구성, 이어쓰기, 요약, 번역, 추론 등을 하는 상호 작용을 말함.
      • 다양한 유형의 데이터에 대해서 이러한 작업을 하는게 중요함.
      • 이를 위해 다양한 유형의 텍스트 자료를 수집했다고 함 (e.g 기사, 블로그, 법률 문서, 계약서, 시나리오, 마케팅 자료, 이메일, 요러법 등)
      • 그리고 이러한 텍스트들에 대해서 각각 재작성, 번역, 요약, 질의응답 등에 대한 상호작용을 하는 데이터셋을 만들었다고 한다.
  • 데이터의 다양성을 평가하기 위해서 어휘적 다양성(lexical diversity) 와 주제 다양성(topic diversity) 를 평가했다고 함.
    • 어휘적 다양성은 MTLD(Measure of Textual Lexical Diversity)는 텍스트의 어휘 다양성을 측정하는 도구를 씀.
    • 이건 Type-Token Ratio(TTR)을 기반으로 함 (Type: 고유한 단어의 수, Token: 전체 단어의 수)
  • 그리고 대화의 자연스러움을 평가하기 위해 대화의 일관성(coherence) 도 평가했다고 한다.

 

멀티 턴 대화 데이터를 만들 떄 팁:

  • Role 지정:
    • 사용자 역할과 어시스턴트 역할의 AI 가 있는데 계속해서 사용자 역할의 AI 가 어시스턴트 역할을 하려고 했다고 함.
    • 그래서 사용자 역할에 대해서 성격을 명확하게 지정하고, 주요 목적을 상기하는 식으로 프롬프트를 줬다고 한다.
    • 예시로 도움이 되고 상세한 응답을 제공하도록 프롬프트를 설정하면, 모델이 더 관련성이 높은 세부 정보를 제공하여 응답의 정보성을 향상시키는 경향이 있었다고 함. 
    • 그 다음 응답의 현실감을 높이기 위해서 "Thank you", "Thanks", "You're welcome" 와 같은 응답은 필터링했다고 한다.

+ Recent posts