[음악] 추천 시스템에서 학습시킨 모델을 가져다 웹사이트에서 질의하는 서비스로 배포하는 최초 배포에 대해 알아봤습니다 배포 과정과 프로덕션 환경에서의 기계학습은 이것만이 아닙니다 배포 부분도 있지만 모델 관리도 있습니다 평가와 기준 모니터링도 해야 합니다 마지막 세 부분을 보도록 하죠 학습시킨 모델이 실제로 얼마만큼의 성능을 보이는지 확인하는 것입니다 배치 오프라인 과정에서뿐만 아니라 실제 사용자를 대상으로 말이죠 이 정보를 통해 새로운 모델을 훈련시키고 배포하고 정보를 더 얻으면 모델을 업데이트합니다 배치 처리와 실시간 처리를 포함한 파이프라인으로 돌아가보죠 사용자가 추천된 상품을 샀는지 안 샀는지에 관한 피드백이 실시간 데이터와 과거 데이터에 들어옵니다 무척이나 쓸모가 많죠 이 피드백을 통해 새 모델을 학습시킵니다 예를 들어 과거 데이터가 많아지면 두 번째 모델을 학습시킬 수 있죠 추천기 모델 2라고 하겠습니다 이게 나을 거 같아서 프로덕션에서도 쓰고 싶은데 모델 2가 정말로 이전 모델 1보다 낫다는 걸 어떻게 판단하나요? 어떤 게 낫죠? 그걸 어떻게 압니까? 프로덕션 환경에서 모델 관리할 때 가장 중요한 질문입니다 언제 모델 2로 업데이트해야 하는지 모델 중에 어떤 걸 골라야 하는지입니다 실제 사용자가 있는 모델을 모니터링하면서 사용 패턴이 어떤지 이해해야 합니다 모델 모니터링의 핵심은 프로덕션에 있는 모델 평가입니다 예측과 기준을 통합하는 겁니다 시스템에서 사용자가 실시간으로 뭘 하는가? 배포 모델에서 해결해야 할 문제는 사용자에게서 어떤 데이터를 수집하고 있는가? 처음 갖고 있던 데이터뿐만 아니라 사용자가 샀는지 안 샀는지 등 실시간 상호작용에서 수집한 데이터를 포함합니다 상호작용이 기대한 대로 흘러갔는지 컴퓨터가 기대했던 반응을 보이는지 측정할 기준이 있어야 합니다 다시 파이프라인으로 돌아가서 데이터를 수집해야지 하면서 모델을 훈련시킬 때 썼던 기준을 사용한다고 합시다 추천 시스템 이야기 할 때 그런 기준이 하나 있었죠 RSS 최소화였습니다 프로덕션 환경에서 평가를 위한 맞는 기준일까요? 오프라인에서 모델 최적화하기엔 좋지만 프로덕션 환경에서는 사람들이 상품을 사는지 안 사는지 모델이 사용자를 붙잡아두는가가 더 중요합니다 모델이 스마트폰, 웨어러블 사용이 쉬워지도록 돕는지 백그라운드에서 기계학습을 사용하는 다른 기술들도 그렇습니다 RSS나 다른 오프라인 기준들은 오프라인 모델 최적화, 모델이 괜찮은지 업데이트가 필요한지 알아내는덴 적합합니다 누가 사는지, 사용 기준, 이에 대한 변화, 최종 결산 등의 온라인 기준은 구 모델이 신 모델보다 나은지 볼 때 좋습니다 어떤 과정을 거쳐야 할지 알아보죠 관건은 구 모델을 새 데이터로 학습시킨 신 모델로 업데이트해야 하는가 입니다 많은 게 여기 달려있죠 업데이트를 왜 해야 하는가? 이전 걸 버리고 새 걸로 갈아야 하는가? 유행의 변화, 신상품, 사용자 취향에 좌우됩니다 물어뜯기 좋은 기린 열풍이 사그라들어서 아무도 안 사기도 합니다 그렇기에 다 바꾸던지 적어도 업데이트는 해야 합니다 업데이트해야 하는 이유와 업데이트해야 하는 시간과 언제 구 모델을 버리고 신 모델로 갈아탈건지 등을 정해야 합니다 직관이 아닌 실세계 통계를 통해 알맞은 시간이 언제고 누구에게 알려야 하는지를 판단합니다 직관적인 비즈니스 분석의 일종일지도 모르겠군요 데이터가 중심이긴 하지만요 측정 기준과 통계, 정량적 분석를 통해 뭐가 바뀌었고 모델 업데이트를 언제 해야 하는지 뽑아냅니다 모델을 업데이트할 때 이런 게 필요합니다 모델을 훈련시킬 때 썼던 오프라인 기준을 이렇게 통합합니다 하지만 온라인 기준에만 거의 관심이 가있죠 온라인 기준이 어떻게 쓰이나 봅시다 모델을 고르는 방법 중 한 예는 A/B 테스팅입니다 모델 1과 모델 2가 있다고 하죠 어떤 게 나은지, 시스템에 설치해야 하는지 알고 싶습니다 이럴 경우 일부 사용자, 그룹 A에게 지리적 지역으로 구분할 수 있습니다 미국에서 방문한 사람에게는 모델 1가 나간다든지 해서요 다른 지리적 구역인 캐나다에서 온 사람에게는 모델 2가 나간다고 합시다 두 모델에서의 행동을 관찰하고 기준을 기록합니다 모델 1이 나았다고 합시다, 아니 모델 1이 안 좋았다고 합시다 전환율이 10%였습니다 10%만 상품을 샀다는 뜻이죠 모델 2에서는 놀랍게도 30%가 상품을 샀습니다 그러므로 전환율은 30%입니다 이 테스트를 한 뒤에 충분히 테스트했어 샘플은 충분하니 모델 1 대신에 모델 2를 내보내자 여기엔 많은 문제점과 주의점이 따릅니다 A/B 테스팅으로 언제 모델을 전환할지 결정하면 데이터를 얼마나 수집해야 하고 뭘 해야 하는지 아는게 까다롭습니다 많은 고민이 필요하며 캡스톤 프로젝트 즈음에 좀더 자세히 설명하겠습니다 한번 곰곰히 생각해봐야 합니다 모델의 어떤 버전이 있는지, 모델 1, 모델 2, 단순화, 일반적으로 많은 데이터 과학자에게 각자의 아이디어를 구현한 모델이 있는데 그렇다면 이걸 어떻게 관리하는가? 어떤 데이터로 어떤 모델이 훈련되었는지 어떻게 아나요? 어떤 모델의 성능이 좋고 나쁜지는 어떻게 기록하나요? 좋았던 게 전적으로 운 덕분이었나요? 데이터의 실제 속성이 그런 역할을 했나요? 이 모든 것을 어떻게 모니터링할까요? 보고서는 어떻게 쓰고요? 지금 일어나고 있는 건 이거고 기계학습은 이런 역할에다 이런 차이점을 만들어내고 있을지도 모릅니다 상당히 복잡해질 수 있습니다 기계학습 알고리즘 사용법만이 아니라 메소드 작성을 어떻게 하는지도 매우 중요합니다 특징은 어떻게 고르나요? 모델이 제대로 작동하고 시스템에 필요한 값을 보내주는지 알 수 있나요? [음악]