AI 뇌를 위한 닭고기 수프: 라벨링

Songju Han
Riiid Teamblog KR
Published in
10 min readDec 19, 2023
퀴지움 AI와 데이터 라벨링

데이터 라벨링: 피할 수 없으니 즐기다

끊임없이 변화하는 사업적 결정들과 태스크 우선순위 가운데, 저는 퀴지움(Quizium)의 미션 중 가장 변함없이 중요할 한가지 미션에 집중하였습니다. 바로 “학습에 실질적으로 도움이 되는 최고의 질문을 생성하는 것”! 퀴지움은 동영상 학습에 있어서 최고의 교육 파트너가 되기를 원했고, 팀은 그 목표를 꼭 이루고 싶었습니다.

그런 와중에 LLM과 AI의 시대에 살고 있다는 건 큰 행운인것 같습니다. 이런 기술적 이점을 토대로 저희 팀은 유튜브 콘텐츠를 거의 즉각적으로 분석하고, 이해하며, 심지어 참여형 퀴즈로 전환할 수도 있었으니까요. 하지만 팀의 숙제는 단순 퀴즈 생성이 아니라, 세밀하게 맞춤화된 질문을 통해 교육적 효과와 사용자의 참여를 최대로 이끄는 것이었습니다. AI를 활용하여 콘텐츠를 해석 하는것은 이미 너무 쉬웠고, 본게임은 AI가 생성한 질문이 콘텐츠의 학습 목표/ 사실적 맥락/ 그리고 유저의 니즈와 일맥상통하게 만드는 것에 있다고 생각했습니다.

고로 퀴지움 AI 모델의 “두뇌”에는 인공지능의 통찰력과 인간의 교육적 혜안이 정교하게 혼합되어야 했습니다. 이를 위해 저희는 라벨링 데이터 세트를 생성하고 프롬프트를 개선하는 미션에 착수했습니다.

진실은 아프다…

사실 퀴지움은 이미 그럭저럭 “괜찮은” 질문들을 생성하고 있었는데, 이는 아이러니 하게도 괜찮지 않았습니다. 예를 들면, 별 문제없이 동영상 내용에 충실한 질문들이 생성되었지만, 이것들이 항상 교육적이지는 않았거든요. 저희의 엔진은 “진핵세포에서 미토콘드리아의 주된 역할은 무엇입니까?”라는 질문을 할 수 있을 정도로는 똑똑했지만, “이 동영상의 스폰서는 누구입니까?”와 같은 질문을 배제할 만큼 섬세하지는 못했습니다. 가끔은 학생들을 고문하기라도 하려는 듯 “영상에서 “polypeptide”라는 단어는 총 몇 번이나 나왔습니까?”라는 질문을 하기도 했습니다. 또한 정답과 오답 옵션에서도 몇 가지 문제점이 있었는데, 초기 엔진에서 가장 빈번하게 일어났던 이슈는 얼핏봐도 정답이 뭔지 너무 뻔하게 알아볼 수 있게 생성되는 점이었습니다.

초기 퀴지움 엔진이 생성한 질문

상황이 이렇다 보니, 자체 품질확인 모델 (QC모델)의 필요성이 매우 두드러졌습니다. “나쁜” 질문이 유저에게 그대로 제공되지 않고 자동으로 배제되도록, AI가 자체적으로 아웃풋을 리뷰하고 필터링 하는 시스템이 필요했습니다. 이러한 모델을 훈련시키고 완성 시키기 위해서는 데이터 세트를 만들어야 했습니다.

좋고 나쁨이란 무엇일까?

데이터 라벨러가 사전 정의된 기준에 따라 작업을 하기 위해서는 구체적이고 특정한 가이드라인을 세웠어야 했는데, 생각보다 만만한 일이 아니었습니다.

어떤 질문이 구린지에 대해서는 본능적으로 합의를 보기가 쉬웠다면, 어떤 질문들이 “좋은” 질문인지는 각자의 의견이 달랐습니다. 명확한 질문이 항상 좋은 질문이라고 할 수 있을까? 유저가 얼마나 집중했는지 알아보기 위해 의도적으로 헷갈리는 질문을 내고싶을 때는? 어려운 질문이 있어야 배우는 점이 있지 않을까? 그랬다가 오히려 유저의 참여율과 의욕을 저하시켜 버리면? (개인적으로는 학창시절 ToK(지식이론) 수업도 생각나고 간만에 아주 두피가 지끈거렸네요).

접근방식을 좁히기 위해, 우선 Quizium이 이루고자 하는 목표에 한해서 좋은 질문이 무엇인지 우선순위를 정하는 데에 초점을 맞췄습니다. 그 목표는 다음과 같았습니다:

  1. 유저가 선택한 영상을 끝까지 시청 할 수 있도록 독려하기
  2. 유저가 시청한 영상의 키포인트 만큼은 기억할 수 있게 하기
  3. 수동적 시청이 아니라, 주요 내용을 비판적으로 생각하면서 볼 수 있게 하기

그리고 나서 각각의 목표가 질문 설계에 어떠한 역할을 하는지 세부적으로 파고 들었습니다. 예를 들어 1번 목표인 동영상 시청완료를 위해, 너무 정답이 티가나는 질문은 무조건 아웃 시켜야 했습니다.

키포인트 기억 및 비판적 시청을 위해서는, 질문의 문항이 영상의 교육적 측면을 철저하게 반영하고 강화할 수 있도록 프레이밍 관련 테크닉들을 찾아보기도 했습니다.

질문 생성의 미묘함 (예술!) 에 대해 더 깊이 파고들면서, 저희는 질문의 각 요소, 즉 문항, 정답, 오답이 질문의 효율에 각기 다른 역할을 한다는 점을 알게 되었습니다. 이 요소들의 합을 평가함과 동시에 각각의 요소를 개별적으로 평가해야 한다는 점도요. 라벨링 평가지표 리스트를 만드는 과정에서 이전에는 드러나지 않았던 문제점들 역시 발견 할 수 있었습니다. 예를 들어, AI가 아무리 기깔난 문장으로 문제의 각 요소를 잘 만든들, 오답들의 내용 혹은 문장구조의 다양성이 떨어지면, 결과적으로 질문의 퀄리티는 떨어질 수 밖에 없다는 점 같은 것들이 있었습니다.

이러한 발견점들을 측정 가능한 평가지표로 만들기 위해, 저희는 AI 리서처와 데이터 매니저분들과 협업하여 워딩을 다듬고, 정확한 정의를 내리기 시작했습니다.

“21번은 ‘정답을 찍기 너무 쉬움.’ 이라고 되어있는데, 이건 상대적인것 아닌가요? 쉽다는게 뭘까요? 특정 유저에게는 어려울수도 있는데, 이걸 어떻게 점수를 매길 수 있을까요?”

“아, 이건 난이도 이슈보다 그냥 딱 봐도 한눈에 정답이 너무 티가 나는 경우 이야기예요. 정답지 혼자 세 줄씩 차지한다거나…”

“그런데 정오답 길이가 비슷해도 찍기 쉬울때가 종종 있어요.”

“그럼 문제를 찍기 쉽게 만드는 요소가 뭔지 더욱 세분화 해야겠네요. 구조적일수도 있고, 아예 내용이 문제일수도 있고.”

“네, 오답 선택지들이 너무 맥락에 안 맞는 경우도 봐야합니다!”

대강 뭔지 알겠는 이슈를 정확히 정의하고 평가하기 위해, 누가 보아도 똑같이 해석할 언어로 옮기는 작업은 생각보다 어려웠지만, 묘하게 재미도 있었습니다! 저희는 최종적으로 약 30가지의 평가 항목들을 지정했습니다. 객관식 선택지 개수에 따라 한개의 질문에 최대 49가지 라벨이 붙을 수도 있었고, 이 라벨들이 바로 퀴지움 AI 뇌를 위한 닭고기수프가 되어 줄 예정이었습니다.

R.MarkAI의 탄생

라벨링 기준점을 잡은 직후까지는 상당히 행복했습니다. 드디어 닭고기수프를 끓일 수 있는 닭고기를 구한 기분이었거든요! 이 질문이 떠오르기 직전까지는 그랬습니다:

“이거 설마 사람들한테 구글 시트로 작업시켜야 되는건 아니겠지…?”

작업자가 구글 시트를 통해 수천개의 질문을 수동으로 일일히 넘기면서 점수매기는 작업은 상상만 해도 원시적이었습니다. 작업을 더 효율적이고 감당 가능하게끔 개선이 필요했습니다. 라벨링을 끝마치는데 주어진 짧은 시간을 고려하면, 작업 프로세스를 최대한 간소화할 수 있는 가벼운 툴을 약 일주일 안에 만들어야 했습니다. 수프를 끓일 주방 전체를 지을 수는 없더라도, 냄비와 불정도는 찾아야 했습니다.

다행히 기능리스트를 짜고 필요 없는 부분들을 쳐내는 작업은 어렵지 않았습니다. 저희에게 필요한게 뭔지는 이미 명확했으니까요. 라벨러들이 질문들을 한눈에 평가하고 점수를 매기면서, 평가 기준을 균일하고 정확하게 유지하는 것을 도와주는 것이었습니다. 그러려면 다른 라벨 타입은 무조건 지원해야 했고, 관리자 권한은 그닥 필요 없겠고, 평가 분류를 한 곳에 모아보는 것은 있으면 좋고, 데이터 업로드나 다운로드는 코딩으로도 해결 가능… 뚝딱뚝딱.

이러한 기능들 외에도, 전체 UI를 직관적으로 설계해 시행착오를 줄일 수 있도록 매우 신경써야 했습니다. 다행히도 며칠 안으로 R.MarkAI 라는 데이터 라벨링 툴이 준비가 되었고, 작업속도를 올려주는 동시에 실시간으로 진행도를 트래킹하고 데이터를 리뷰할 수 있게 되었습니다.

Image 3: 데이터 라벨링에 사용된 툴, R.MarkAI

처음에는 라벨러가 1,000개의 질문 평가를 완료하여 약 40,000개의 데이터를 수집할 것으로 예상했습니다. 현재 예측으로는 약 그 두배의 데이터가 모아질것으로 보입니다.

그래서 닭고기 수프로 뭘 하나요?

라벨링 과정이 매끄럽게 진행되고 있는것과 별개로, QC모델을 만드는 것은 아직 요원했습니다. 우선 저희는 라벨링과 리뷰과정이 완료 될 때까지 기다려야 했고, 데이터를 다 모은 뒤에도 모델을 만들기 위해서는 여러가지 과정이 남아있었습니다.

퀄리티 “예측” 모델 훈련시키기

라벨링이 완료된 데이터세트를 활용해 퀄리티 예측을 훈련시킬 수 있습니다. 모델이 리뷰가 완료된 라벨 데이터를 토대로, 모델 트레이닝에 사용되지 않은 새로운 질문에 대한 라벨을 정확히 예측해내게끔 하는 것이 목표입니다.

모델 평가

퀄리티 예측 모델 트레이닝이 끝난 뒤, 별개의 검증 데이터세트를 통해 모델의 성과를 평가합니다. 이를 통해 모델의 예측이 사람이 하는 평가와 얼마나 일치하는지 판단할 것입니다. 이 단계를 통해 퀄리티 예측모델이 정확하고 믿을 수 있다는 것을 보장합니다.

필터링 및 랭킹

검증을 마친 뒤, 퀄리티 예측 모델은 라벨 데이터를 토대로 일정한 “점수”를 매기도록 개선될 예정입니다. AI모델이 생성한 질문 중 “좋지 않은” 질문들은 필터링 되면서 이상적인 QC모델에 가까워 집니다. 낮은 점수를 받는 질문들은 폐기되거나 추후 리뷰를 위해 마킹됩니다.

반복적인 개선

퀴지움을 통해 질문을 생성하고 새로운 데이터를 얻는 것을 반복하는 한편, 주기적으로 라벨링된 데이터세트를 업데이트 하여 QC모델을 재훈련 시킵니다. 이 과정에서 제공되는 피드백을 통해 질문의 퀄리티를 점차 개선합니다.

피드백 루프

라벨링 평가지표를 주기적으로 검토하고 개선하는데 중요한 역할을 할 라벨러들과 교육 전문가의 도움을 받습니다. 전문 지식은 QC모델이 저희가 원하는 질문 퀄리티 표준과 일치하도록 보장합니다.

라벨링 노가다를 통해 얻은 또 다른 수확이 있는데요, 하도 많은 질문을 검토 하다보니, 생성된 질문들에서 또다른 미묘하고 반복적인 문제들을 발견하여 빠르게 개선시킬 수 있었다는 점 입니다. 몇가지 이슈는 해결을 위해 QC모델이 필요하지도 않았고, 고로 프롬프트 엔지니어와 함께 질문생성 AI의 기본 기능을 향상시키는데 집중할 수 있었습니다. 그 결과, 질문 퀄리티 개선 프로젝트를 장단기 문제 해결로 나누어 투 트랙 전략으로 진행 할 수 있게 되었습니다.

우리는 어디에 있고 어디로 가는가

질문 퀄리티 향상과 라벨링 프로젝트 1단계의 완료 시점이 몇 주 정도 더 남아있지만, 기쁘게도 질문 아웃풋에 벌써 많은 개선이 이루어졌습니다:

Image 4: AI개선 전후 동일 영상에서 생성된 질문 비교

개인적으로는, 데이터 라벨링/ 모델 교육 및 품질 관리에 대한 지속적인 노력을 통해 점차적으로 인간 노동에 의존도가 줄어들기를 바랍니다. (너무너무 품이 많이 드는 작업이구나…를 느껴버렸기에.) 퀴지움팀은 AI 모델을강화하고 진화시켜서, 끊임없이 고품질의 질문을 생성하는 동시에 자가진단을 하는 단계까지 끌어올리는 것입니다.

고품질의 질문 이야기가 나온 김에, 수학과 언어 등 각 교육분야마다 다양한 니즈가 있다는 것을 인지하고 있으며, 각 분야별로 특화된 질문 생성을 염두에 두고 있습니다. 특정 분야에 맞게 모델을 최적화 시키는것을 중요한 마일스톤으로 보고 있습니다 (예: 외국어 학습).

마지막으로 이 자리를 빌어 퀴지움을 더 발전시키고 유저에게 더 나은 학습 경험을 제공하려는 모든 구성원분들께 감사의 말씀을 드립니다!

--

--