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