목차
데이터셋(dataset) 생성 기술이 중요한 이유를 이해하려면, 생성형 인공지능 모델의 학습 과정부터 생각해 볼 필요가 있습니다. Llama 3.1과 같은 생성형 인공지능 모델은 사람이 주는 데이터를 기반으로 학습하여 언어를 이해하고 생성합니다. 이 모델이 얼마나 똑똑하게 답을 하고 문장을 만들어내느냐는 결국 얼마나 좋은 데이터를 학습했느냐에 달려 있습니다. 쉽게 말해, 인공지능에게 무엇을 배울지를 정해주는 교과서가 데이터셋(dataset)이고, 이 교과서가 잘 만들어졌느냐가 모델의 성적을 결정하는 중요한 요소입니다.
데이터셋(dataset) 생성 기술이 중요한 이유
- 정확한 정보 제공: 인공지능이 잘못된 답변을 하지 않으려면, 정확한 정보로 가득 찬 데이터셋(dataset)이 필요합니다. 만약 모델이 부정확하거나 왜곡된 정보를 학습하면, 이후에 그 정보를 기반으로 틀린 답변을 만들게 됩니다. 그래서 데이터의 품질이 매우 중요합니다.
- 다양한 상황에 대한 대응력: 좋은 데이터셋(dataset)은 다양한 주제와 상황을 포함합니다. 예를 들어, 다양한 대화 상황, 문맥, 주제에 대해 인공지능이 잘 대답하려면, 이에 대한 다양한 예시를 학습해야 합니다. 이렇게 해야 모델이 일상적인 대화부터 전문적인 논의까지 폭넓게 이해하고 대처할 수 있습니다.
- 편향 방지: 데이터셋(dataset)이 특정 편향을 가지면, 모델도 편향된 답변을 내놓습니다. 예를 들어, 특정 지역이나 문화만 반영된 데이터로 모델을 학습시키면 다른 지역이나 문화에 대해선 적절한 답변을 하지 못하게 됩니다. 따라서 다양한 출처의 데이터를 활용해 편향을 최소화하는 것이 중요합니다.
- 특정 목적에 맞는 학습: 만약 특정 도메인, 예를 들어 법률이나 의료 분야에 특화된 모델을 만들고 싶다면, 그 분야의 전문적인 데이터셋(dataset)을 사용해야 합니다. 이는 모델이 해당 도메인에서 필요한 지식과 문맥을 학습할 수 있도록 도와줍니다.
좋은 데이터셋(dataset)을 만드는 방법
데이터셋(dataset) 생성은 단순히 데이터를 모으는 것 이상으로, 데이터의 품질, 다양성, 정확성 등이 모두 고려되어야 하며, 이러한 과정들이 잘 이루어질 때 비로소 성능 좋은 파인튜닝된 모델을 얻을 수 있게 됩니다.
데이터셋을 만드는 데에는 여러 단계가 있습니다. Llama 3.2 1b와 같은 모델에 한국어 파인튜닝을 한다고 가정하고 설명해 보겠습니다.
- 데이터 수집: 먼저 한국어로 된 다양한 데이터를 수집해야 합니다. 이때 뉴스 기사, 블로그 글, 소셜 미디어 대화, 문학 작품 등 여러 종류의 자료를 모아야 합니다. 이렇게 다양한 데이터는 모델이 여러 문맥과 표현을 이해할 수 있도록 돕습니다. 예를 들어 일상 대화뿐만 아니라, 전문적인 글이나 창의적인 글도 학습하게 해야 합니다. 물론 최근에 논란이 되고 있는 법적 사용 권한에 대해서는 주의해야 합니다.
- 데이터 정제: 수집한 데이터에는 오타, 불필요한 광고, 중복된 내용 등이 있을 수 있습니다. 이러한 것들은 모델의 성능에 부정적인 영향을 미칠 수 있으므로, 데이터를 정제하는 과정이 필요합니다. 이를 위해서는 불필요한 문장을 제거하고, 중복된 데이터를 최소화하는 등의 작업이 이루어집니다. 또한, 데이터에서 부정확하거나 의도치 않은 문맥이 생기지 않도록 하며, 표준화된 형식으로 데이터를 일관되게 유지하는 것이 중요합니다.
- 레이블링: 만약 특정 유형의 질문에 대한 답변을 학습시키고 싶다면, 질문과 답변이 짝지어진 형태로 데이터를 레이블링 해야 합니다. 파인튜닝의 경우에는 사용자가 어떤 질문을 할 때 모델이 어떻게 답변해야 할지 구체적으로 학습시키기 위해 이러한 레이블링이 중요합니다.
- 데이터 다양성 확보: 한국어 파인튜닝이라 해도, 서울 중심의 데이터만 모으지 않고, 다양한 지역과 연령층의 언어를 포함하는 것이 중요합니다. 예를 들어, 표준어뿐만 아니라 사투리, 다양한 연령대의 표현 방식, 공식적인 언어와 비공식적인 언어 등 모든 요소를 골고루 포함해야 모델이 한국어 전반에 대해 잘 이해하게 됩니다.
- 도메인 특화 데이터 포함: 만약 특정 분야에 대해 잘 아는 모델을 만들고 싶다면, 그 분야의 데이터도 추가해야 합니다. 예를 들어, 법률에 대한 질문에 대해 정확한 답변을 제공하려면 법률 관련 문서를 추가로 포함하는 것이 좋습니다.
- 검토와 평가: 데이터셋(dataset)을 준비한 후에는 모델이 이를 통해 잘 학습하고 있는지 평가하는 단계가 필요합니다. 파인튜닝 후에 모델이 한국어로 적절하게 답변하는지, 또는 특정 도메인 질문에 대해 잘 대응하는지를 테스트해 보고, 부족한 부분이 있으면 데이터를 보완합니다.
개인이 혼자 데이터셋(dataset)을 만들 수 있을까?
개인이 혼자서 데이터셋(dataset)을 만드는 것은 거의 불가능하지 싶습니다. 특히 대규모 데이터셋의 경우, 수집, 정제, 레이블링, 다양성 확보 등 많은 시간과 자원이 필요합니다. 지금도 있는지 모르겠으나, 정부 지원 인공지능 교육 중 레이블링 기술이 있기도 할 정도였으니 말입니다.
하지만 소규모이거나 특정 목적에 맞춘 데이터셋이라면 개인도 충분히 만들 수 있지 싶습니다. 예를 들어, 특정 주제에 대한 작은 규모의 질문-답변 데이터셋이나 개인 블로그 글과 같은 자료를 활용한 데이터셋은 혼자서도 가능할 거라 생각합니다. 개인 블로그 글을 활용하는 경우, 블로그에 작성된 다양한 주제의 글을 수집하여 모델이 다양한 문맥을 이해하도록 돕는 방식입니다.
또는 오픈소스 커뮤니티에서 제공하는 도구와 데이터를 활용하면 데이터셋 생성의 부담을 줄일 수 있습니다. 중요한 것은 데이터의 품질과 다양성을 고려하여 최대한 정제된 데이터를 준비하는 것이니 말입니다.
개인 블로그 글을 활용한 데이터셋 생성 방법
개인이 데이터셋을 생성한다고 하더라도 규모는 작으나 그 과정은 앞에서 이야기한 단계를 거쳐야 합니다. 개인 블로그 글을 활용한 데이터셋 생성 과정을 실제 데이터셋을 생성할 때와는 약간의 차이가 있겠으나 한번 단계 별로 설명한다면 다음과 같습니다.
- 블로그 글 수집: 먼저 본인이 작성한 블로그 글 중에서 다양한 주제를 다룬 글을 수집합니다. 수집 대상은 일상적인 글, 특정 주제에 대한 깊이 있는 글 등 다양한 형식의 글을 포함합니다. 수집은 직접 글을 복사하거나, 자동으로 데이터를 수집할 수 있는 스크래핑 도구(예: Python의 BeautifulSoup, Selenium, Requests-HTML 등)를 사용하여 진행할 수 있습니다.
- 데이터 정제: 수집된 글에는 불필요한 정보(예: 광고, 댓글 등)가 포함될 수 있습니다. 이러한 정보를 제거하여 정제된 텍스트를 준비합니다. 정제 과정에서는 띄어쓰기 오류나 오타도 수정하여, 모델이 정확한 문장을 학습할 수 있도록 합니다.
- 구조화된 데이터로 변환: 수집한 블로그 글을 모델이 학습할 수 있는 형태로 구조화합니다. 예를 들어, 질문-답변 형태로 만들거나, 각 문장을 별도의 데이터 항목으로 나누어 저장할 수 있습니다. 이 과정에서 텍스트 파일이나 CSV 파일 형태로 데이터를 저장하는 것이 일반적입니다.
- 레이블링(선택 사항): 만약 특정 질문에 대한 답변을 학습시키고자 한다면, 블로그 글에서 질문과 그에 대한 답변을 추출하여 레이블링 합니다. 예를 들어, 블로그 글의 제목을 질문으로, 본문을 답변으로 사용할 수 있습니다. 이 과정은 모델이 더 나은 대화형 성능을 발휘하는 데 도움이 됩니다.
- 데이터 다양성 확보: 블로그 글이 특정 주제에만 치우치지 않도록 다양한 주제의 글을 수집합니다. 예를 들어, 여행기, 기술 리뷰, 일상적인 경험 등 다양한 주제를 포함하여 모델이 폭넓은 문맥을 이해할 수 있도록 합니다.
- 검토와 평가: 데이터셋을 준비한 후에는 작은 샘플을 사용하여 모델을 테스트해 봅니다. 모델이 블로그 글의 문맥을 잘 이해하고 적절히 응답하는지 확인하며, 부족한 부분이 있다면 추가로 데이터를 수정하거나 보완합니다.