프로그래머가 바닥에 떨어진 동전을 주웠더니 왜 행복한가요? 그 이유는 그의 “비트"를 찾았기 때문이죠! 프로그래머들은 이진수에서 “0"과 “1"을 “비트"라고 부르는데, 그 비트를 찾았으니 행복한 거죠! 자, 이제 다시 본론으로 돌아가서 앞서 언급한 대형 언어 모델의 내용을 다시 살펴 보겠습니다. 대형 언어 모델은 두 단계로 훈련됩니다. 첫 번째 단계는 비지도 사전 훈련 단계
인데, 이때 모델은 원시 텍스트를 사용해 일반적인 언어 이해를 학습합니다. 그래서 대부분의 지식이 여기서 얻어지는거죠. 두 번째 단계는 큰 규모의 지시 튜닝과 강화 학습을 통해 모델을 최종 작업과 사용자 기호에 더 적합하게 조정하는 단계
입니다.
LIMA 언어 모델의 연구 배경
앞서 이 두 단계(비지도 사전 훈련 단계와, 큰규모의 지시튜닝과 강화 학습)의 상대적 중요성을 알아보기 위해 LIMA(Less Is More for Alignment)
라는 언어 모델을 사용한 연구가 진행되었습니다. 근데 재밌는 건, LIMA는 지시 튜닝이나 인간의 기호를 사용하지 않고도 훌륭한 성능을 보였다
는거죠! 이 모델은 단지 1,000개의 프롬프트와 응답 쌍에 대해 표준 지도 학습을 진행
했습니다. 즉, 이 모델은 제한된 지시 튜닝 데이터만으로도 놀라운 성과를 거두었고, 훈련 데이터에 없던 새로운 작업에도 잘 일반화되었다고 해요. 그래서 사실 사전 훈련이 대부분의 지식을 제공하고, 추가 튜닝 데이터는 모델을 작업에 맞게 미세하게 조정하는 데에 중요한 역할을 한다는 거죠.
LIMA라는 언어 모델은 인간과의 실험에서 GPT-4보다 좋거나 같은 답변을 보였다고 해요. 그러면서 LIMA가 Bard와 비교했을 때 58%
의 경우에서 인간들에게 더 선호되었고, DaVinci003
과 비교했을 때는 65%
의 경우에서 더 선호되었다고 하네요. 그런데 재미있는 건 DaVinci003
은 인간의 피드백을 사용하여 훈련되었던 모델이라는거죠.
간단히 말하면, LIMA는 인간들에게 놀랄 만큼 좋은 답변을 제공하며, 때로는 인간이 직접 훈련한 DaVinci003
보다도 더 좋은 성과를 보여준다는 거죠! 어때요? 이렇게 설명하니까 좀 더 재미있지 않나요?
이러한 결과들은 대부분의 지식이 큰 언어 모델의 사전 훈련 단계에서 학습되며, 높은 품질의 출력을 생성하기 위해서는 제한된 지시 튜닝 데이터만 필요하다는 것을 강력하게 시사합니다. 즉, 사전 훈련이 모델에게 대부분의 지식을 제공하고, 추가 튜닝 데이터는 모델을 작업에 맞게 조정하는 데에 중요한 역할을 한다는 것을 의미합니다.
Introduction
사전 학습된 언어 모델은 다음 토큰을 예측하는 놀라운 규모의 학습을 통해 일반적인 표현을 학습합니다. 이를 통해 거의 모든 언어 이해나 생성 작업으로 전이할 수 있는 범용적인 표현을 습득합니다. 이러한 전이를 가능하게 하기 위해 다양한 언어 모델 정렬 방법이 제안되었는데, 주로 대규모 데이터셋을 통한 “instruction tuning"에 초점을 맞추고 있습니다. 사전 학습(pretraining)은 언어 모델이 일반적인 지식과 표현을 학습하는 단계입니다. 반면에 “instruction tuning"은 사전 학습된 언어 모델을 특정 작업에 맞게 조정하는 단계입니다. 이 과정에서는 모델이 특정 작업을 수행하는 방법을 배우도록 지침(instruction)을 제공합니다. 이러한 지침은 보통 작업과 관련된 특정 예제 데이터를 사용하여 모델을 조정합니다.
기존의 정렬 방법은 컴퓨팅 리소스와 특정 데이터에 의존하여 ChatGPT 수준의 성능을 달성하기 위해 많은 비용이 필요합니다. 그러나 본 연구에서는 강력한 사전 학습된 언어 모델을 가지고 있다면, 1,000개의 신중하게 선별된 훈련 예제에 대해 단순히 파인 튜닝
하는 것으로도 놀라운 성능을 달성할 수 있음을 보여줍니다. 정렬
은 모델이 사용자와 상호작용하는 스타일이나 형식을 배우는 간단한 과정일 수 있다고 가정하며, 이미 습득한 지식과 능력을 노출시키기 위한 과정일 수 있다는 가설을 세우고 있습니다.
Alignment Data
이 연구에서는 한 가지 가설을 세웠어요. 그 가설은 "모델의 대부분 지식과 기능은 사전 학습 때 이미 학습했고, 그저 모델이 사용자와 잘 대화할 수 있도록 사용자와 상호작용을 위한 기능을 가르치는데 사용 된다는 것"
입니다. 만약 ‘alignment'가 모델이 사용자와 대화할 때 어떤 스타일을 사용해야 하는지를 배우는 것이라면, 작은 파인 튜닝 데이터셋으로도 사전 학습된 모델을 충분히 잘 가르칠 수 있다고 보았던 것이죠. 정리하면, alignment란 "사용자와 인공지능 모델이 상호작용할 때, 모델이 사용자의 요청에 맞게 적절한 방식으로 응답하는 과정"
을 말해요. 결과적으로, 이 논문은 1,000개의 프롬프트와 답변 쌍을 사용해서 데이터셋을 구성
했어요. 답변은 형식적으로 비슷한 스타일로 작성
되었지만, 프롬프트는 다양한 주제를 다룰 수 있도록 구성
했어요. 이렇게 하면 모델이 다양한 상황에서 잘 대응할 수 있게 되는 거죠.
Community Questions & Answers
연구자들은 데이터를 모으기 위해 Stack Exchange, wikiHow, Pushshift Reddit Dataset을 활용했어요. 그 중에서도 Stack Exchange와 wikiHow에서 얻은 답변들은 일관성이 있고 유용한 정보를 담고 있어서 그대로 모델에 사용했어요. 하지만 Reddit에서 수집된 답변들은 상황에 따라 유머적인 요소가 들어간 답변들이 많았거나 도움이 되지 않는 내용이 포함되어 있을 수도 있었어요. 그래서 연구자들은 이런 답변들 중에서 적절하고 유용한 것들만을 선별하여 모델에 사용했습니다.
-
- 데이터 추출시 너무 짧거나 긴 글을 필터링하고, 1인칭으로 쓴 글도 필터링했습니다.
- 또한 다른 답변을 참조한 답변도 제외하고, 답변 내의 링크나 이미지 등을 제거했습니다.
-
- 데이터를 다양한 분야의 정보를 담기 위해 분야별로 수집했습니다.
- 또한 “이 글은…“으로 시작하는 내용을 “질문에 대한 답변은…“의 형식으로 전처리했습니다.
-
The Pushshift Reddit Dataset
- r/AskReddit와 r/WritingPrompts 카테고리에서 데이터를 수집했습니다.
- r/AskReddit에서 수집된 데이터는 테스트 데이터셋으로 사용했고
- r/WritingPrompts에서 수집된 150개의 데이터는 훈련 데이터셋으로 사용되었습니다.
Alignment란?
alignment
란 사용자와 인공지능 모델이 상호작용할 때, 사용자와의 상호작용을 위해 모델을 특정 스타일이나 사용자 기호에 맞게 조정하는 과정을 말합니다. 파인 튜닝 단계에서는 모델이 주어진 작업이나 사용자 목적에 맞게 조금 더 정교하게 학습됩니다. 이 과정에서 모델은 특정 형식, 톤, 어휘 등을 사용하여 사용자와 더 잘 상호작용할 수 있는 방식을 배우게 됩니다. Alignment는 주로 작은 규모의 훈련 데이터셋이나 사람의 피드백을 활용하여 모델을 보완하는 과정이기도 합니다. 이를 통해 모델은 사용자와의 상호작용에서 더 좋은 결과를 제공하고 원하는 스타일과 선호도에 더 잘 부합하는 답변을 생성할 수 있습니다. 따라서 Alignment는 주로 파인 튜닝 단계에서 모델이 사용자와의 상호작용을 더욱 효과적으로 수행할 수 있도록 학습하는 과정을 의미합니다.
예를 들어, 사용자가 인공지능 비서에게 “오늘 날씨 알려줘"라고 말한다고 해봅시다. 이때, alignment은 인공지능 비서가 사용자의 요청에 맞게 정확하고 유용한 답변을 제공하는 과정을 말해요. 인공지능 비서는 미리 학습한 지식을 바탕으로 일반적인 언어 이해와 처리 능력을 갖추고 있습니다. 그러나 사용자와 대화를 할 때는 더 많은 조정이 필요해요. alignment 과정은 인공지능 모델이 사용자와 자연스럽게 대화하고 요청에 적절하게 응답을 하고, 적절한 스타일과 형식으로 응답을 선택하고 제공하는 과정을 의미합니다. 모델은 alignment를 통해 사용자와 자연스러운 대화를 이어나갈 수 있어요!
LIMA 학습
본 연구는 LLaMa 65B 사전 학습 모델
을 기반으로 시작하고, 1000개의 데이터셋을 사용하여 파인 튜닝을 진행했습니다. 연구에서는 특별한 토큰인 end-of-turn (EOT)
토큰을 사용했습니다. 이 토큰은 일반적인 문장의 끝을 나타내는 end-of-sentence (EOS)
토큰과 유사한 역할을 하지만, 이 토큰은 끝을 나타내는 역할을 하면서도 사전 훈련된 모델이 이미 존재하는 EOS 토큰에 부여한 다른 의미와의 혼동을 피할 수 있도록 도와줍니다.파인 튜닝에는 표준적인 방식으로 하이퍼파라미터를 설정했습니다.
- AdamW 최적화 알고리즘을 사용하였으며, 총 15 epochs 동안 학습을 진행했습니다.
- β1은 0.9, β2는 0.95, weight decay는 0.1로 설정했습니다.
- 웜업 단계 없이 초기 학습률은 1e-5에서 시작하여 훈련 종료시까지 선형적으로 1e-6까지 감소하도록 설정했습니다.
- 배치 크기는 32이며(더 작은 모델은 64개), 최대 시퀀스 길이는 2048로 설정되었습니다.
- 잔여 연결(residual connection)에 드롭 아웃을 적용했으며 가장 아래 레이어의 드롭아웃 확률은 0.0부터 시작하여 0.3까지 선행 적으로 증가시켰습니다.
연구 결과로는 perplexity와 답변 생성의 품질이 관련되어 있지 않다는 것을 확인하였습니다. 따라서, perplexity를 확인하면서 모델의 성능을 평가하기 위해 개발 데이터셋을 사용하고 5번째 에포크와 10번째 에포크 사이에서 수동으로 체크포인트를 선택했습니다.