Skip to content

Latest commit

 

History

History
218 lines (212 loc) · 17 KB

가상 면접 사례로 배우는 머신러닝 시스템 설계 기초.md

File metadata and controls

218 lines (212 loc) · 17 KB

서평

  • 실제 서비스되고 있는 머신러닝 사례, 사례별 개발 사이클의 설명, 저자의 노하우가 담긴 상세한 팁이라는 세 가지 축으로 이야기를 풀어감. 각 서비스의 개발 과정을 요구사항 명확화, 머신러닝 작업으로 문제를 구조화, 데이터 준비, 모델 개발, 평가, 서빙의 순서로 진행하며 하나의 서비스가 완성되어 가는 모습을 체험하게 함
  • 데이터 파이프라인, 피처 엔지니어링, 시스템 설계 등의 전체적(엔드투엔드)인 지식을 물음

소개 및 개요

  • 일반적으로 머신러닝 시스템은 데이터를 관리하기 위한 데이터 스택, 수백만 사용자가 사용할 수 있도록 하는 서비스 인프라, 시스템의 성능을 측정하기 위한 평가 파이프라인, 시간이 지나도 모델의 성능이 저하되지 않도록 하기 위한 모니터링 등 여러 구성요소로 복잡하게 구성됨
  • 머신러닝 시스템 설계 절차
    • 요구사항 명확화
    • 머신러닝 작업으로 문제를 구조화
    • 데이터 준비
    • 모델 개발
    • 평가
    • 배포 및 서비스 제공
    • 모니터링 및 인프라
  • 요구사항 명확화
    • 다음과 같은 질문을 하는 게 도움
      • 비즈니스 목표
        • 휴가철 숙소 추천 시스템을 만들라는 요청을 받은 경우, 가능한 두 가지 비즈니스 목표는 예약 수와 수익을 늘리는 것
        • 시스템이 제공해야 하는 피처 : 머신러닝 시스템 설계에 영향을 줄 수 있는 피처는 무엇인가?
        • 데이터 : 데이터 소스는 무엇인가? 데이터세트는 얼마나 큰가? 데이터에 라벨이 지정되어 있나?
        • 제약 : 사용할 수 있는 컴퓨팅 자원은 얼마나 되나? 클라우드 기반 시스템인가, 아니면 단말에 구동하는 시스템인가? 시간이 지남에 따라 모델이 자동으로 개선되길 바라나?
        • 시스템 규모 : 사용자 수는 어느 정도인가? 동영상과 같은 콘텐츠가 얼마나 많이 제공되나? 사용자 수, 콘텐츠 수 등의 증가율을 어느 정도인가?
        • 성능 : 기대 성능은? 실시간 솔루션이 필요한가? 정확도와 대기 시간 중 무엇이 더 중요한가?
  • 머신러닝 작업으로 문제를 구조화
    • 논의 주제
      • 좋은 머신러닝 목표는 무엇인가? 다른 머신러닝 목표와는 어떻게 비교하나? 장단점은 무엇인가?
      • 주어진 머신러닝 목표에서 시스템의 입력 및 출력은 무엇인가?
      • 머신러닝 시스템에 둘 이상의 모델이 적용된 경우 모델별 입력 및 출력은 무엇인가?
      • 지도 또는 비지도 학습 중 어느 것을 사용해야 하나?
      • 회귀 또는 분류 모델 중 어느 것을 사용하는 것이 좋을까? 분류의 경우 이진 분류 모델인가 다중 클래스 분류 모델인가? 회귀 모델이라면 출력 범위는?
  • 데이터 준비
    • 정형 데이터와 비정형 데이터 요약
      • 정형 데이터 비정형 데이터
        특성 사전 정의된 스키마, 검색이 쉬움 스키마 없음, 검색이 어려움
        지원 관계형 데이터베이스, 많은 NoSQL 데이터베이스는 정형 데이터 저장 지원,데이터 웨어하우스 NoSQL 데이터베이스, 데이터 레이크
        날짜, 전화번호, 신용카드 번호, 주소, 이름 텍스트 파일, 오디오 파일, 이미지, 동영상
    • 피처 엔지니어링
      • 두 가지 프로세스
        • 도메인 지식을 사용하여 원시 데이터에서 예상 피처를 선택하고 추출
        • 예측한 피처를 모델에서 사용할 수 있는 형식으로 변환
      • 피처 엔지니어링 작업
        • 누락 데이터 처리, 왜곡된 분포가 있는 값 조정, 범주형 피처 인코딩을 포함
    • 논의 주제
      • 데이터 가용성 및 데이터 수집
        • 데이터 소스는 무엇인가? 어떤 데이터를 사용할 수 있으며 어떻게 수집하나? 데이터 크기는 어느 정도인가? 새로운 데이터는 얼마나 자주 입력되는가?
      • 데이터 저장소
        • 현재 데이터는 어디에 저장되어 있나? 클라우드에 저장되어 있나, 아니면 사용자 단말에 저장되어 있나? 데이터를 저장하는 데 적합한 데이터 형식은 무엇인가? 이미지와 텍스트가 모두 포함될 수 있는 데이터 포인트와 같은 멀티모달 데이터는 어떻게 저장하나?
      • 피처 엔지니어링
        • 원시 데이터를 모델에 유용한 형태로 처리하려면 어떻게 해야 할까? 누락된 데이터는 어떻게 처리해야 할까? 이 작업에 피처 엔지니어링이 필요한가? 원시 데이터를 머신러닝 모델에서 사용할 수 있는 형식으로 변환하기 위해 어떤 작업을 사용해야 할까?
        • 피처를 정규화해야 할까? 원시 데이터에서 어떤 피처를 구성해야 할까? 텍스트, 숫자, 이미지 등 서로 다른 유형의 데이터를 어떻게 합칠 계획인가?
      • 개인 정보 보호
        • 사용할 수 있는 데이터의 민감도는 어느 정도인가? 사용자가 데이터의 프라이버시에 대해 우려하고 있나?
        • 사용자 데이터의 익명화가 필요한가? 사용자 데이터를 서버에 저장할 수 있는가? 아니면 사용자의 기기에서만 데이터에 액세스 할 수 있는가?
      • 편향
        • 데이터가 편향되어 있나? 그렇다면 어떤 종류의 편향이 존재하며 어떻게 수정할 수 있을까?
  • 모델 개발
    • 머신 러닝 알고리즘을 선택할 때는 모델의 다양한 측면을 고려하는 것이 중요함
      • 모델이 학습해야 하는 데이터의 양
      • 훈련 속도
      • 선택할 하이퍼파라미터와 하이퍼파라미터 튜닝 기법
      • 학습 지속 가능성
      • 컴퓨팅 요구사항, 더 복잡한 모델은 더 강력한 정확도를 제공할 수 있지만 CPU 대신 GPU와 같은 더 강력한 컴퓨팅 성능이 필요할 수 있음
      • 모델의 해석 가능성. 더 복잡한 모델은 더 나은 성능을 제공할 수 있지만, 그 결과는 해석하기 어려울 수 있음
    • 모델 훈련
      • 데이터세트 구성 단계
        • 원시 데이터 수집
        • 피처 및 라벨 식별
        • 샘플링 전략 선택
        • 데이터 분할
        • 클래스 불균형 해결(있는 경우)
          • 훈련 데이터 리샘플링
            • 리샘플링은 서로 다른 클래스 간의 비율을 조정하여 데이터의 균형을 맞추는 과정
            • 소수 클래스를 오버샘플링하거나 다수 클래스를 언더샘플링하는 것
          • 손실 함수 적용
            • 손실 함수를 적용하는 기법으로 클래스 불균형에 견고하게 대응할 수 있음
            • 소수 클래스의 데이터 포인트에 더 많은 가중치를 주는 게 개략적인 아이디어
  • 평가
    • 논의 주제
      • 온라인 지표
        • 온라인에서 머신러닝 시스템의 효과를 측정하는 데 중요한 지표는 무엇인가?
        • 이러한 지표는 비즈니스 목표와 어떤 관련이 있나?
      • 오프라인 지표
        • 개발 단계에서 모델의 예측 능력을 평가하는 데 적합한 오프라인 지표는 무엇인가?
      • 공정성 및 편향성
        • 모델이 연령, 성별, 인종 등과 같은 다양한 대상에 대해 편견을 가질 가능성이 있나?
        • 이 문제를 어떻게 해결할 수 있나?
        • 악의적인 의도가 있는 사람이 시스템에 접근하면 어떻게 되나?
  • 배포 및 서비스 제공
    • 클라우드와 온디바이스 배포 간의 장단점
      • 클라우드 온디바이스
        단순성 클라우드 기반 서비스를 사용하여 배포 및 관리가 간편함 디바이스 모델을 배포하기는 간단하지 않음
        비용 클라우드 비용이 높을 수 있음 디바이스 내에서 계산을 수행하면 클라우드 비용 없음
        네트워크 지연 시간 네트워크 대기 시간이 존재함 네트워크 지연 시간 없음
        추론 처리 시간 일반적으로 더 강력한 기계로 인해 추론 속도가 빨라짐 머신러닝 모델 실행 속도 저하
        하드웨어 제약 조건 제약 조건 별로 없음 제한된 메모리, 배터리 소모 등 더 많은 제약이 있음
        개인 정보 보호 사용자 데이터가 클라우드로 전송되므로 개인정보 보호 낮음 데이터가 디바이스를 벗어나지 않으므로 개인 정보 보호 강화
        인터넷 연결에 대한 의존성 클라우드로 데이터를 송수신하는 데 필요한 인터넷 연결 인터넷 연결 필요 없음
    • 모델 압축
      • 모델 압축은 모델을 더 작게 만드는 과정. 이는 추론 처리 시간과 모델 크기를 줄이는 데 필요함
        • 지식 증류 : 지식 증류의 목표는 작은 모델이 큰 모델을 모방하도록 훈련하는 것
        • 가지치기 : 가지치기란 가장 유용성이 낮은 매개변수를 찾아서 0으로 설정하는 프로세스를 말함. 이렇게 하면 더 적은 수의 모델을 더 효율적으로 저장할 수 있음
        • 양자화 : 모델 파라미터는 32비트 부동 소수점으로 표현되는 경우가 많음. 양자화에서는 더 적은 비트를 사용하여 파라미터를 표현하므로 모델의 크기가 줄어듬. 양자화는 훈련 중 또는 훈련 후에도 발생할 수 있음
    • 운영 환경에서 테스트
      • 섀도 배포
        • 새 모델을 기존 모델과 병렬로 배포함
        • 모델을 섀도 배포하면 새로 개발된 모델의 테스트가 완료될 때까지, 신뢰할 수 없는 예측을 할 위험을 최소화할 수 있음. 하지만 이 방법은 예측 횟수를 두배로 늘리는 비용이 많이 드는 바 ㅇ식
      • A/B 테스트
        • 새 모델을 기존 모델과 병렬로 배포함. 트래픽의 일부는 새로 개발된 모델로 라우팅하고 나머지 요청은 기존 모델로 라우팅함
        • 첫째, 각 모델로 라우팅되는 트래픽은 무작위여야 함. 둘째, A/B 테스트는 충분한 수의 데이터 포인트에 대해 실행해야 적절한 결과를 얻을 수 있음
    • 논의 주제
      • 추론하는 동안 계산은 클라우드와 온디바이스 중 어디에서 수행해야 하나?
      • 모델 압축이 필요한가? 일반적으로 사용되는 압축 기술에는 어떤 것이 있나?
      • 온라인 예측과 배치 예측 중 어느 것이 더 적합할까? 장단점은 무엇인가?
      • 피처에 대한 실시간 액세스가 가능한가? 어떤 어려움이 있나?
      • 배포된 모델을 운영 환경에서 어떻게 테스트해야 하나?
      • 머신러닝 시스템은 요청을 처리하기 위해 함께 작동하는 다양한 구성요소로 구성됨. 제안된 설계에서 각 구성요소의 역할은 무엇인가?
      • 빠르고 확장할 수 있는 서비스를 제공하려면 어떤 기술을 사용해야 할까?

시각 검색 시스템

  • 모델 개발
    • 신경망 선택 이유
      • 신경망은 이미지와 텍스트 같은 비정형 데이터를 처리하는 데 적합함
      • 기존의 많은 머신러닝 모델과 달리 신경망은 표현학습에 필요한 임베딩을 생성할 수 있음

구글 스트리트 뷰 블러링 시스템

  • 데이터 준비
    • 피처 엔지니어링
      • 데이터 증강
        • 원본 데이터에 약간 수정된 복사본을 추가하거나 원본에서 인위적으로 새로운 데이터를 생성하는 것을 말함
        • 데이터세트의 크기가 커지면 모델은 더 복잡한 패턴을 학습할 수 있음. 이 기법은 소수 클래스의 데이터 포인트 수를 늘리기 때문에 데이터세트가 불균형할 때 유용함
          • 랜덤 자르기
          • 랜덤 채도
          • 세로 또는 가로 뒤집기
          • 회전 및/또는 평행 이동
          • 아핀 변환
          • 밝기, 채도, 대비 조정하기

유해 콘텐츠 감지

  • 데이터 준비
    • 피처 엔지니어링
      • 텍스트를 피처 벡터로 변환하기 위해 사전 학습된 트랜스포머 기반 언어 모델을 사용함. 하지만 기존 BERT에는 두 가지 문제가 있음
        • 모델이 크기 때문에 텍스트 임베딩을 생성하는 데 시간이 오래 걸림. 이 프로세스는 느리기 때문에 온라인 예측에 사용하기에는 적합하지 않음
        • BERT는 영어 전용 데이터로만 학습되었음. 따라서 다른 언어로 된 텍스트에 대해서는 의미 있는 임베딩을 만들지 못함

동영상 추천 시스템

  • 머신러닝 작업으로 문제를 구조화
    • 머신러닝 목표 정의
      • 시스템의 비즈니스 목표는 사용자의 참여도 증가
        • 사용자 클릭 수를 극대화
        • 시청 완료 동영상 수를 극대화
        • 총시청 시간 극대화
        • 관련 동영상 수를 극대화
    • 적합한 머신러닝 유형 선택
      • 콘텐츠 기반 필터링
        • 동영상 피처를 사용하여 과거에 관련성이 있다고 판단한 동영상과 유사한 새로운 동영상을 사용자에게 추천함
        • 장점
          • 새로운 동영상을 추천하는 기능
          • 사용자의 고유한 관심사를 파악할 수 있는 기능
        • 단점
          • 사용자의 새로운 관심사를 발견하기 어려움
          • 도메인 지식이 필요함
      • 협업 필터링
        • 사용자 간 유사성(사용자 기반 협업 필터링)또는 동영상들 간의 유사성(항목 기반 협업 필터링)을 사용하여 새로운 동영상을 추천함
        • 협업 필터링은 비슷한 사용자가 비슷한 동영상에 관심이 있따는 직관적인 아이디어에 기반함
        • 콘텐츠 기반 필터링과 협업 필터링의 가장 큰 차이점은 협업 필터링은 동영상 피처를 사용하지 않고 사용자의 과거 상호작용에만 의존하여 추천함
        • 장점
          • 도메인 지식이 필요하지 않음
          • 사용자의 새로운 관심 분야를 쉽게 발견할 수 있음
          • 효율적임
        • 단점
          • 콜드 스타트 문제
          • 특이한 관심사를 처리할 수 없음
      • 하이브리드 필터링
        • 협업 필터링과 콘텐츠 기반 필터링을 모두 사용함. 하이브리드 필터링은 협업 필터링 기반 추천자와 콘텐츠 기반 추천자를 순차적으로 또는 병렬로 결합함
  • 평가
    • 오프라인 지표
      • presion@k - 상위 k개의 추천 동영상 중 관련 동영상의 비율을 측정함
      • mAP - 추천 동영상의 순위 품질을 측정하는 지표
      • 다양성 - 추천 동영상이 서로 얼마나 다른지 측정함
    • 온라인 지표
      • 클릭률
      • 시청 완료 동영상 수
      • 총시청 시간
      • 명시적 사용자 피드백
  • 서빙
    • 예측 파이프라인의 구성 요소
      • 후보 동영상 생성
        • 사용자는 인기 있거나, 유행하거나, 자신의 위치와 관련이 있어 동영상을 선택할 수 있음
      • 점수 매기기
      • 재순위화
  • 추가 논의 주제
    • 추천 시스템에서 생기는 탐색-활용의 균형 조정
    • 추천 시스템에는 다양한 유형의 편향이 존재할 수 있음
    • 추천 시스템을 구축할 때 윤리와 관련된 중요한 고려 사항
    • 추천 시스템에서 계절 요인(계절에 따른 사용자 행동의 변화)의 효과를 고려해 보라
    • 단일 목표가 아닌 여러 목표에 맞게 시스템을 최적화함

이벤트 추천 시스템

  • 데이터 준비
    • 배치 피처와 스트리밍 피처 비교
      • 배치(정적) 피처는 연령, 성별, 이벤트 설명과 같이 자주 변경되지 않는 피처를 의미함. 이러한 피처는 배치 처리를 사용하여 주기적으로 계산하고 피처 저장소에 저장할 수 있음
      • 스트리밍(동적) 피처는 빠르게 변경됨. 예를 들어 이벤트에 등록한 사용자 수와 이벤트까지 남은 시간은 동적 피처
  • 모델 개발
    • 배깅
      • 훈련 데이터의 여러 하위 집합에 대해 머신러닝 모델 세트를 병렬로 훈련하는 앙상블 학습 방법. 한 가지 예로 랜덤 포레스트 모델이 있음
      • 장점
        • 과대적합(높은 분산)의 영향을 줄임
        • 의사 결정 트리를 병렬로 학습할 수 있으므로 학습 시간이 많이 늘엊나지 않음
        • 의사 결정 트리는 입력을 병렬로 처리할 수 있으므로 추론 시에 대기 시간이 많이 추가되지 않음
    • 부스팅
      • 배깅의 단점을 극복
      • 예측 오류를 줄이기 위해 여러 개의 약한 분류기를 순차적으로 훈련하는 방식
      • 부스팅에서는 여러 개의 약한 분류기가 하나의 강력한 학습 모델로 변환됨
      • 장점
        • 부스팅은 편향과 분산을 줄여 줌
        • 훈련 및 추론 속도가 느림