안녕하세요! 오늘은 제가 최근에 수강한 Data-Centric AI 강의에 대한 후기를 상세하게 공유해드리려고 합니다. AI 분야에서 데이터의 중요성을 깊이 있게 체감할 수 있었던 소중한 경험이었는데요, 이 글을 통해 여러분께도 그 가치를 전해드리고자 합니다.

강의를 수강하게 된 계기

AI 모델 개발에 있어 그동안 저는 주로 모델의 구조 개선이나 하이퍼파라미터 튜닝에 집중해왔습니다. 하지만 프로젝트를 진행할수록 데이터의 품질이 모델 성능에 미치는 영향이 크다는 것을 실감하게 되었죠. 특히 최근 참여한 이미지 분류 프로젝트에서 데이터의 편향과 노이즈로 인해 모델의 정확도가 한계에 부딪히는 경험을 했습니다. 이때 데이터 중심 접근 방식의 필요성을 절실히 느꼈고, 마침 Data-Centric AI 강의가 저에게 딱 맞는 해답이 될 것 같아 수강을 결심하게 되었습니다.

강의 내용 소개 및 상세 후기

1. Data-Centric AI란 무엇인가?

강의의 첫 번째 챕터에서는 Data-Centric AI의 개념과 중요성에 대해 깊이 있게 다루었습니다.

  • Model-Centric AI vs Data-Centric AI
    • Model-Centric AI는 모델의 복잡성이나 구조를 개선하여 성능을 향상시키는 전통적인 접근 방식입니다.
    • 반면에 Data-Centric AI는 모델을 고정한 상태에서 데이터의 품질과 다양성을 개선함으로써 성능을 향상시킵니다.

현실적인 사례로, 이미지 분류 모델에서 작은 데이터셋으로 높은 성능을 내기 위해 복잡한 모델을 사용했지만, 오히려 과적합 문제가 발생했습니다. 반면에 데이터 증강과 클렌징을 통해 데이터의 품질을 높였을 때, 간단한 모델로도 더 나은 성능을 달성할 수 있었습니다.

2. 데이터 기획

데이터 구축의 전체 프로세스를 이해하고 기획하는 단계였습니다.

  • 데이터 구축 프로세스 이해
    • 데이터 수집 → 전처리 → 라벨링 → 클렌징 → 스플릿 → 릴리즈의 흐름을 배웠습니다.
  • 데이터 구축 기획서 작성
    • 프로젝트 목표 설정, 필요한 데이터의 명세 작성, 일정 및 자원 계획 수립의 중요성을 알게 되었습니다.

실제 프로젝트에서는 데이터 수집에만 집중하고 전처리나 라벨링 가이드라인이 부족해 여러 번 시행착오를 겪은 적이 있는데, 이 강의를 통해 체계적인 기획의 중요성을 깨달았습니다.

3. 데이터 수집

다양한 데이터 수집 방법과 주의사항을 학습했습니다.

  • 데이터 수집 방법

    1. 직접 수집: 센서 데이터나 설문조사를 통해 직접 데이터를 모았습니다. 예를 들어 IoT 센서를 활용해 실시간 환경 데이터를 수집하는 방법을 배웠습니다.
    2. 웹 크롤링: BeautifulSoup과 Selenium을 활용하여 웹에서 필요한 데이터를 자동으로 수집하는 방법을 실습했습니다.
    3. 오픈 소스 활용: Kaggle이나 AI Hub 등에서 공개된 데이터셋을 탐색하고 활용하는 법을 익혔습니다.
    4. 크라우드소싱: Amazon Mechanical Turk와 같은 플랫폼을 통해 대규모 라벨링 작업을 수행하는 방법을 배웠습니다.
  • 데이터 수집 시 고려사항

    • 저작권 및 라이선스 준수: 크롤링한 데이터가 저작권에 위배되지 않는지 확인하는 방법을 학습했습니다. 특히 크리에이티브 커먼즈 라이선스(CCL)에 대한 이해가 중요했습니다.
    • 개인정보 보호: 개인정보보호법을 준수하기 위해 수집 데이터에서 개인정보를 비식별화하는 방법(k-익명성 등)을 배웠습니다.
    • 윤리적 고려: 데이터 편향을 최소화하기 위한 전략과 사회적 영향을 고려한 데이터 수집 방법을 고민했습니다.

현실적인 예시로, 웹에서 이미지 데이터를 크롤링할 때 저작권 문제가 발생하지 않도록 CCL이 적용된 이미지만 필터링하여 수집하는 코드를 직접 작성해보았습니다.

4. 데이터 전처리

수집한 원시 데이터를 모델 학습에 적합한 형태로 변환하는 방법을 배웠습니다.

  • 데이터 정제
    • 결측치 처리, 이상치 제거, 중복 데이터 제거 등의 방법을 실습했습니다.
  • 데이터 스키마 설계
    • 데이터의 구조를 정의하고, 일관성 있는 데이터 포맷을 설계하는 방법을 배웠습니다.
  • 데이터 저장 및 관리
    • 효율적인 데이터 저장을 위해 데이터베이스나 분산 파일 시스템을 활용하는 방법을 학습했습니다.

실무에서 센서 데이터의 타임스탬프가 불규칙하게 찍혀있는 경우가 있었는데, 이때 데이터 정렬과 보간법을 통해 시간 축을 일관성 있게 맞추는 작업을 수행했습니다.

5. 데이터 라벨링

데이터에 정답(label)을 부여하는 과정과 그 중요성을 학습했습니다.

  • 라벨링 가이드라인 작성
    • 라벨링의 일관성을 유지하기 위해 상세한 가이드라인을 작성하는 방법을 배웠습니다.
  • 도메인별 라벨링 기법
    • 컴퓨터 비전(CV): 바운딩 박스, 세그멘테이션 마스크 등을 활용한 라벨링 방법을 실습했습니다.
    • 자연어 처리(NLP): 개체명 인식(NER), 감성 분석 등을 위한 라벨링 기법을 배웠습니다.
  • 라벨링 도구 활용
    • LabelImg, LabelMe 등의 도구를 사용하여 이미지 라벨링을 수행해보았습니다.
    • NLP에서는 Prodigy와 같은 도구를 활용하여 텍스트 데이터를 라벨링했습니다.

개인적으로 라벨링 작업을 외주로 맡겼을 때, 가이드라인이 부족하여 라벨링 품질이 떨어지는 문제를 경험한 적이 있습니다. 이번 강의를 통해 상세한 가이드라인의 중요성을 실감하게 되었습니다.

6. 데이터 클렌징

라벨링된 데이터의 오류를 검수하고 수정하는 방법을 배웠습니다.

  • 데이터 품질 평가: IAA
    • 여러 라벨러 간의 일치도를 측정하여 데이터의 신뢰성을 평가했습니다.
    • Cohen’s Kappa와 Fleiss’ Kappa를 직접 계산해보며 이해를 높였습니다.
  • 라벨링 오류 수정
    • 일치도가 낮은 데이터를 우선적으로 검토하고, 라벨링 규칙을 재확인하는 과정을 거쳤습니다.

실제 사례로, 감성 분석 데이터에서 긍정과 부정 라벨의 기준이 모호하여 라벨러 간 일치도가 낮았던 적이 있었습니다. 이때 가이드라인을 구체화하고 재교육을 실시하여 일치도를 향상시켰습니다.

7. 데이터 마무리

데이터를 최종적으로 완성하고 활용하는 방법을 배웠습니다.

  • 데이터 스플릿과 샘플링
    • 데이터를 학습용, 검증용, 테스트용으로 적절히 분할하는 방법을 배웠습니다.
    • 층화 샘플링을 통해 각 클래스의 비율을 유지하면서 데이터를 분할했습니다.
  • 합성 데이터 생성
    • 컴퓨터 비전 분야에서는 GAN과 VAE를 활용하여 합성 이미지를 생성했습니다.
    • 자연어 처리 분야에서는 GPT-3와 같은 LLM을 활용하여 텍스트 데이터를 생성했습니다.
  • 액티브 러닝
    • 모델이 불확실성을 갖는 데이터에 우선적으로 라벨링을 수행하여 효율적으로 성능을 향상시키는 방법을 배웠습니다.
  • 데이터 릴리즈
    • 데이터 공개 시 저작권과 개인정보 보호를 위한 주의사항을 학습했습니다.
    • 데이터셋에 대한 문서화(docs)를 작성하여 사용자가 쉽게 이해하고 활용할 수 있도록 했습니다.

실제 프로젝트에서, 소수 클래스의 데이터가 부족하여 모델이 특정 클래스에 편향되는 문제가 있었습니다. 이때 합성 데이터를 생성하여 클래스 불균형을 해소하고 모델의 성능을 개선할 수 있었습니다.

8. 데이터 제작 실습

이론으로 배운 내용을 실제로 적용해보는 시간이었습니다.

8.1 컴퓨터 비전(CV) 데이터 제작 실습

  • 과제 목표: 교통 표지판을 인식하는 객체 탐지 모델의 성능 향상
  • 진행 과정
    1. 데이터 기획
      • 인식해야 할 교통 표지판의 종류와 수집 방법을 정의했습니다.
    2. 베이스라인 모델 준비
      • 기존에 공개된 YOLOv5 모델을 활용하여 초기 성능을 측정했습니다.
    3. 데이터 구축
      • 오픈 데이터셋을 활용하고, 부족한 데이터는 직접 촬영하거나 합성 데이터를 생성했습니다.
    4. 데이터 라벨링 및 클렌징
      • LabelImg를 활용하여 직접 라벨링을 수행하고, 라벨링 오류를 수정했습니다.
    5. 액티브 러닝 적용
      • 모델이 오탐지하거나 미탐지한 이미지에 대해 추가 라벨링을 진행했습니다.
    6. 모델 재학습 및 평가
      • 개선된 데이터로 모델을 재학습하여 mAP(mean Average Precision)가 10% 이상 향상되었습니다.

실습을 통해 데이터의 품질과 다양성이 모델 성능에 직접적인 영향을 미친다는 것을 체감할 수 있었습니다.

8.2 자연어 처리(NLP) 데이터 제작 실습

  • 과제 목표: 고객 리뷰에서 제품에 대한 감정을 분석하는 모델의 성능 향상
  • 진행 과정
    1. 데이터 기획
      • 긍정, 부정, 중립의 세 가지 감정 분류를 목표로 설정했습니다.
    2. 베이스라인 모델 준비
      • BERT 기반의 분류 모델을 활용하여 초기 정확도를 측정했습니다.
    3. 데이터 수집 및 크롤링
      • 온라인 쇼핑몰에서 공개된 리뷰를 크롤링하여 데이터의 양을 늘렸습니다.
    4. 데이터 라벨링 및 클렌징
      • 직접 라벨링하고, 감정 분석에 특화된 사전(pre-trained lexicon)을 활용했습니다.
    5. 액티브 러닝 적용
      • 모델이 헷갈려하는 리뷰에 대해 우선적으로 라벨링을 진행했습니다.
    6. 모델 재학습 및 평가
      • F1 스코어가 기존 대비 8% 이상 향상되었습니다.

이 실습을 통해 텍스트 데이터의 미묘한 표현을 정확히 파악하기 위해서는 데이터 라벨링의 일관성과 품질이 매우 중요하다는 것을 알게 되었습니다.

강의를 통해 얻은 것들

  • 데이터 중심 사고 방식 확립: 모델 개선보다 데이터 품질 향상이 더 큰 효과를 가져올 수 있음을 깨달았습니다.
  • 실무 적용 능력 강화: 실제 프로젝트에서 데이터를 어떻게 구축하고 활용해야 하는지 구체적인 방법을 습득했습니다.
  • 윤리적 감수성 향상: 데이터 수집과 활용에서 발생할 수 있는 법적, 윤리적 문제를 사전에 인지하고 대처할 수 있게 되었습니다.
  • 도구 활용 능력 향상: 다양한 라벨링 도구와 데이터 처리 라이브러리를 능숙하게 사용할 수 있게 되었습니다.

강의에 대한 총평

이 강의는 AI 개발자라면 꼭 들어야 할 필수 과정이라고 생각합니다. 데이터 구축의 모든 과정을 처음부터 끝까지 체계적으로 배울 수 있었고, 특히 강사님의 풍부한 경험과 노하우를 공유받을 수 있어 매우 유익했습니다. 실습 위주의 수업으로 이론을 실제로 적용해보는 것이 큰 도움이 되었고, 동료 수강생들과의 피어세션을 통해 다양한 아이디어와 경험을 나눌 수 있었습니다.

앞으로의 계획과 다짐

이번 강의를 통해 배운 내용을 바탕으로 현재 진행 중인 프로젝트에 적용해보려고 합니다. 특히 데이터 편향을 최소화하고, 합성 데이터를 적극 활용하여 모델의 성능을 더욱 향상시키고자 합니다. 또한 데이터 윤리와 법적 문제에도 주의를 기울여 책임감 있는 AI 개발자가 되도록 노력하겠습니다.

Data-Centric AI는 단순한 기술 교육이 아니라 데이터에 대한 새로운 관점을 제시해주는 소중한 기회였습니다. AI 분야에서 데이터의 중요성을 다시 한 번 느끼고 싶은 분들께 이 강의를 적극 추천드립니다.

읽어주셔서 감사합니다! 혹시 강의에 대해 궁금한 점이나 공유하고 싶은 내용이 있으시면 댓글로 남겨주세요. 함께 성장해나가는 개발자가 되길 바랍니다.

profile
AI가 재밌는 걸

0개의 댓글