2018년에 작성되어 이제는 조금 시간이 된 글이지만 아직도 유효한 내용이 많고, 한글로 번역도 잘되어있어서 소개해봅니다.
머신러닝에서 파이프라인을 어떻게 구성하면 좋은지
실패와 성공은 어떻게 측정하는지
조용한 실패는 왜 위험한지에 대해서 잘 설명하고 있고
각 단계별로 여러가지 필요한 내용을 다루고 있습니다
그리 길지 않으니 다들 한번씩 보시면 좋겠습니다
규칙 #2: 첫째, 측정항목을 설계하고 구현하라.
머신러닝 시스템이 수행할 작업을 공식화하기 전에 어떻게 해야 할까요? 이렇게 하는 이유는 다음과 같습니다.
시스템 사용자로부터 미리 사용 권한을 얻는 것이 더 쉽습니다.
나중에 문제가 될 수 있다고 생각되면 과거 데이터를 가져오는 것이 더 좋습니다.
측정항목 계측을 염두에 두고 시스템을 설계한다면 더 나아질 것입니다 도움이 될 것입니다. 특히, greping하고 있지만 를 사용하여 측정항목을 계측할 수 있습니다.
무엇이 바뀌고 무엇이 그대로인지 알게 될 것입니다. 예를 들면 다음과 같습니다. 일일 활성 사용자를 직접 최적화하려 한다고 가정해 보겠습니다. 하지만 시스템을 조기에 조작하는 동안 사용자 환경의 극적인 변화로 인해 이러한 변화가 측정항목입니다.
Google Plus팀은 읽기당 확장, 읽기당 재공유 횟수, +1회 사용자가 사용하는 읽기, 댓글/읽기, 사용자당 댓글, 사용자당 다시 공유 등 게시물의 장점을 계산하는 데 사용됩니다. 또한 실험 프레임워크로, 사용자를 버킷으로 그룹화하고 통계를 제공하는 것이 중요합니다 자세한 내용은 규칙 #12.
측정항목을 보다 적극적으로 수집하면 더 넓은 시각을 얻을 수 있습니다. 시스템에 액세스할 수 있습니다 문제를 발견하셨나요? 추적할 측정항목을 추가하세요. 흥미진진한 물고기 양적 변화가 있었을까요? 추적할 측정항목을 추가하세요.
규칙 #4: 첫 번째 모델을 단순하게 유지하고 인프라를 바르게 구축하라.
첫 번째 모델이 제품에 가장 큰 효과를 가져다 주므로 있습니다. 하지만 인프라 문제가 훨씬 더 많을 것입니다. 있습니다. 사용자가 멋진 새로운 머신러닝 시스템을 사용할 수 있으려면 먼저 다음을 결정합니다.
학습 알고리즘에 예시를 가져오는 방법
무엇이 '좋은'지에 대한 첫 번째 장면 '나쁨' 시스템에 영향을 줄 수 있습니다.
모델을 애플리케이션에 통합하는 방법 다음 중 하나를 적용하거나 모델을 라이브로 배포하거나 오프라인으로 예시에 대해 모델을 미리 계산하고 결과를 테이블에 저장합니다. 예를 들어 웹페이지를 사전 분류하고 결과를 채팅 메시지를 실시간으로 분류하는 것이 좋습니다.
간단한 특성을 선택하면 다음을 더 쉽게 확인할 수 있습니다.
특성이 학습 알고리즘에 올바르게 도달합니다.
모델이 합당한 가중치를 학습합니다.
특성이 서버의 모델에 올바르게 도달합니다.
이 세 가지 작업을 안정적으로 수행하는 시스템이 있으면 할 수 있습니다. 간단한 모델은 기준 측정항목과 더 복잡한 모델을 테스트하는 데 사용할 수 있는 기본 동작입니다. 일부 팀의 목표 '중립적'인 경우 최초 실행: 출시의 우선순위를 명시적으로 낮추는 첫 번째 실행입니다. 방해가 되지 않도록 하는 방법을 알아보겠습니다.
규칙 #5: 머신러닝과는 별개로 인프라를 테스트하라.
인프라가 테스트 가능한지, 그리고 인프라의 학습 부분이 시스템은 캡슐화되므로 그 주변의 모든 것을 테스트할 수 있습니다. 특히 다음에 주의해야 합니다.
알고리즘에 데이터를 가져오는 것을 테스트합니다. 이전에 선택한 채워져야 합니다 개인 정보가 허용되는 경우 학습 알고리즘에 대한 입력값을 검사할 수 있습니다. 가능한 경우 동일한 데이터의 통계와 비교하여 다른 곳에서 처리됩니다
모델을 학습 알고리즘에서 꺼내는 것을 테스트합니다. 그런 다음 모델의 점수가 모델과 동일한 경우 ( 규칙 #37).
머신러닝에는 예측할 수 없는 요소가 있으므로 학습 및 서빙에서 예를 만들기 위한 코드 테스트가 있습니다. 서빙 중에 고정 모델을 로드하고 사용할 수 있습니다. 또한 자세히 알아보려면 대규모 복잡한 데이터 세트 분석에 관한 실용적인 조언
규칙 #8: 시스템의 최신성 요구사항을 파악하라.
모델이 하루가 지나면 성능이 얼마나 저하되나요? 1주일 오래된 것인가요? 한 분기는 어떤가요? 이 정보는 모니터링할 수 있습니다 중요한 제품의 손실이 있는 경우 모델이 업데이트되지 않은 경우의 품질 엔지니어가 하루 동안 지속적으로 동영상을 지켜보는 것이 합리적입니다. 대부분의 광고 매일 처리해야 하는 새로운 광고가 있으며 매일 예를 들어 ML 모델을 학습시키고 Google Play 검색은 업데이트되지 않으며 부정적인 영향을 미쳤습니다. '인기 급상승 동영상'에 대한 일부 모델 Google Plus의 모델에는 게시물 식별자가 없으므로 그들은 할 수 있습니다 내보낼 필요가 없습니다 게시물 식별자가 있는 다른 모델은 훨씬 더 자주 업데이트됩니다. 또한 업데이트 빈도는 시간이 지남에 따라 특히 특성 열이 모델에서 추가되거나 모델에서 삭제될 때 유용합니다
규칙 #9: 모델을 내보내기 전에 문제를 감지하라.
많은 머신러닝 시스템에는 모델을 학습시키기 위해 있습니다. 내보낸 모델에 문제가 발생하는 경우 있습니다.
모델을 내보내기 직전에 상태 검사를 수행합니다. 특히 홀드아웃 데이터에서 모델의 성능이 합리적임을 확인할 수 있습니다. 또는 문제가 지속되는 경우 모델을 내보내지 마세요. 여러 팀 모델이 지속적으로 배포되는 ROC 곡선 (또는 AUC) 확인하세요. 내보내지 않은 모델 관련 문제를 해결하려면 이메일 알림을 받고 싶지만 사용자 대상 모델에 문제가 있는 경우 페이지가 필요할 수 있습니다. 매우 좋음 사용자에게 영향을 미치기 전에 기다려야 합니다
규칙 #10: 조용한 실패에 주의하라.
다른 머신러닝 시스템보다 머신러닝 시스템에서 더 많이 발생하는 문제입니다. 생각해야 합니다. 조인되는 특정 테이블이 더 이상 업데이트되지 않습니다. 머신러닝 시스템이 조정하면 계속 합리적으로 좋아서 서서히 낮아질 것입니다 때로는 테이블을 교체할 수 있으며, 간단한 업데이트로 성능이 개선됨 50% 증가했습니다. 이 커버리지 범위 구현 변경사항으로 인해 기능이 변경될 수 있음(예: 특성 열) 예의 90% 에 채워질 수 있었고, 갑자기 60% 로 떨어집니다. 예로 들 수 있습니다 Play에서 테이블이 6개월 동안 비활성 상태였고 새로고침된 적이 있음 표만 봐도 설치율이 2% 증가했습니다. 특정 기간에 대한 통계를 추적하면 때때로 데이터를 수동으로 검사할 뿐만 아니라 수동으로 검사하는 대신 이러한 장애를 방지할 수 있습니다.
규칙 #13: 첫 번째 목표로는 간단하고 관측 가능하며 기여 가능한 측정항목을 선택하라.
때로는 진짜 목표가 무엇인지 모를 때가 많습니다. 그렇게 생각하지만 그런 다음 이전 시스템과 새로운 ML을 나란히 놓고 분석한 데이터와 목표를 조정하고 싶을 수 있습니다. 또한 회원들이 진정한 목표에 동의하지 못하는 경우가 많습니다 ML 목표는 측정이 용이하고 '실제'를 나타내는 확인할 수 있습니다 사실, 'true'라는 단어는 ( 규칙#39). 그래서 '정책 레이어' 마련을 고려하세요 맨 위에 추가 로직 (매우 간단한 로직)을 추가하여 최종 순위도 확인할 수 있습니다.
가장 모델링하기 쉬운 대상은 직접 관찰되고 특정 활동으로 인해 발생한 사용자 행동입니다 합니다.
순위가 매겨진 링크를 클릭했나요?
순위가 매겨진 객체가 다운로드되었나요?
순위가 지정된 객체가 전달/답장/이메일로 전송되었나요?
순위가 매겨진 개체가 평가되었습니까?
표시된 객체가 스팸/포르노/불쾌감을 주는 것으로 표시되었나요?
처음에는 간접적인 효과 모델링을 피하세요.
사용자가 다음날 방문했나요?
사용자가 사이트를 얼마나 오래 방문했나요?
일일 활성 사용자 수는?
간접 효과는 훌륭한 측정항목이 되며 A/B 테스트 및 출시 중에 사용할 수 있습니다. 있습니다.
마지막으로, 다음 사항을 파악하기 위해 머신러닝을 활용하지 마세요.
사용자가 제품 사용에 만족하나요?
사용자가 경험에 만족하나요?
제품이 사용자의 전반적인 웰빙을 개선하나요?
회사의 전반적인 건전성에 어떤 영향을 미칠까요?
모두 중요하지만 측정하기가 매우 어렵습니다. 대신 프록시: 사용자가 만족하면 사이트에 더 오래 머무를 것입니다. 사용자가 내일 다시 방문할 것입니다. 웰빙과 문제가 있는 경우, 인간의 판단이 필요한 경우 판매하는 제품의 특성에 맞게 머신러닝 목표를 설정하고 사업 계획서가 될 수 있습니다.
규칙 #14: 해석 가능한 모델부터 시작하면 디버깅이 더 쉬워집니다.
선형 회귀, 로지스틱 회귀, 푸아송 회귀는 확률적 모델에 의해 동기가 부여됩니다. 각 예측은 확률 또는 기댓값입니다. 이렇게 하면 모델보다 디버그하기가 더 쉽습니다. 목표 (예: 0-1 손실, 다양한 힌지 손실 등)를 사용하여 분류 정확성이나 순위 성능을 직접 최적화할 수 있습니다 대상 예를 들어 학습의 확률이 프로덕션 시스템을 검사하거나 정렬하면 이 편차가 문제를 드러낼 수 있습니다
예를 들어 선형, 로지스틱, 푸아송 회귀에는 하위 집합도 있습니다. 평균 예측 기대치가 평균 라벨 (1- 또는 방금 보정된 시점 중 하나)를 선택합니다. 이는 알고리즘이 수렴되었는지를 확인할 수 있으며, 일반적으로 true입니다. 각 예시에서 1 또는 0인 특성이 있는 경우 특성이 1인 예 3개로 이루어진 세트가 보정됩니다. 또한 특성이 모든 예시에 대해 1이면 모든 예시의 집합은 보정되었습니다.
간단한 모델을 사용하면 피드백 루프( 규칙 #36). 우리는 종종 이러한 확률 예측을 사용하여 결정을 내립니다. 예를 들어 순위 게시물의 예상값이 감소합니다 (예: 클릭/다운로드 등). 그러나 사용할 모델을 선택할 때는 모델이 주어진 데이터가 있을 가능성보다 더 중요하다고 생각합니다 (자세한 내용은 규칙 #27)
규칙 #16: 출시와 반복을 계획하라.
지금 작업하고 있는 모델이 문제가 되는 마지막 모델이 될 것이라고 기대하지 모델을 출시하거나 출시를 중단할 수도 있습니다 따라서 이번 출시로 더 복잡해지는 복잡성이 느려질지 고려해 보세요. 향후 출시 예정. 많은 팀에서 분기당 또는 그 이상의 기간 동안 있습니다. 새 모델을 출시하는 기본적인 세 가지 이유는 다음과 같습니다.
새로운 특성을 준비하고 있습니다.
정규화를 조정하고 기존 특성을 새로운 방식으로 결합
목표를 조정하는 중입니다.
어떤 경우든, 모델에 약간의 애정을 불어넣으면 유용할 수 있습니다. 즉, 데이터 검토 예시를 제공하면 새 신호는 물론 오래되고 깨진 잘못된 신호를 찾는 데 도움이 될 수 있습니다. 있습니다. 모델을 빌드할 때는 모델을 얼마나 쉽게 추가하거나 제거하기가 쉬운지 특성을 재조합할 수 있습니다 새 제품 사본을 만드는 것이 정확성을 검증합니다 한 가지 가능한 모든 것들에 대해 두 개 또는 세 개의 사본이 동시에 실행되는 것을 볼 수 있습니다. 마지막으로 특성 16/35가 이 버전의 파이프라인에 포함되는지 여부를 결정합니다 사용자는 다음 분기에 꼭 받아보실 수 있습니다.
규칙 #17: 학습된 특성이 아니라 직접 관찰 및 보고된 특성부터 시작하라.
논란의 소지가 있는 내용일 수 있지만 많은 함정을 피합니다. 첫 번째 학습된 특성이 무엇인지 설명하겠습니다. 학습된 특성은 외부 시스템 (예: 비지도 클러스터링)에 의해 생성된 학습자 자체 (예: 인수 분해 모델 또는 딥 러닝 사용)에 의해 결정됩니다. 이 두 가지 모두 유용할 수 있지만 문제가 많을 수 있으므로 첫 번째 모델에는 포함되지 않습니다.
외부 시스템을 사용하여 특성을 만드는 경우 자체적인 목표가 있습니다 외부 시스템의 목표는 미약할 수 있음 현재 목표와 상관관계가 있는지를 나타낼 수 있습니다 외부 IP 주소가 오래된 정보가 될 수 있습니다 새 창에서 기능을 업데이트하면 바꾸면 의미가 바뀔 수 있습니다 외부 시스템을 사용하여 제공하는 경우 이 접근 방식에는 상당한 주의가 필요하다는 점에 유의하세요.
분해 모델과 심층 모델의 가장 큰 문제는 비볼록입니다. 따라서 최적의 솔루션이 근사치 또는 발견된 결과를 구할 수 있고, 각 반복에서 찾은 국소 최솟값은 다릅니다. 이러한 차이로 인해 특정 키워드의 효과를 판단하기가 의미가 있는지 또는 무작위적인지 확인해야 합니다. 선행 학습된 BERT 모델을 사용하지 않고 높은 기본 성능을 얻을 수 있습니다. 이후 더 난해한 접근 방식을 시도할 수 있습니다.
규칙 #25: 모델을 선택할 때는 예측 능력보다 실용적인 성능을 우선시하라.
모델에서 클릭률을 예측하려고 할 수 있습니다. 그러나 결국 핵심은 질문은 해당 예측으로 무엇을 하는지입니다. 이 도구를 사용하여 최종 순위의 품질이 학습합니다. 문서가 스팸일 가능성을 예측하고 차단되는 항목을 컷오프하면 허용되는 항목의 정밀도가 더 잘 대처할 수 있습니다 대부분의 경우 이 두 가지가 동의하지 않으면 작은 이득을 볼 가능성이 큽니다. 따라서 로그 손실은 개선하지만 로그 손실의 성능을 저하시키는 몇 가지 변경사항이 있습니다. 다른 기능을 찾아보세요. 이러한 상황이 더 자주 발생하기 시작하면 모델의 목표를 재검토할 때입니다.
규칙 #32: 가능하면 학습 파이프라인과 서빙 파이프라인 간에 코드를 재사용하라.
일괄 처리는 온라인 처리와 다릅니다. 온라인 처리에서는 각 요청이 도착할 때마다 처리해야 합니다 (예: 각 쿼리에 대해)이지만 일괄 처리에서는 작업 (예: 합니다. 서빙 시에는 온라인 처리를 수행하는 반면, 학습은 일괄 처리 작업입니다. 하지만 설정 시 주의해야 할 몇 가지 방법을 알아보겠습니다. 예를 들어, 2012년 3월 31일까지 쿼리 또는 조인의 결과가 매우 사람이 읽을 수 있는 방식으로 저장되며 오류를 쉽게 테스트할 수 있습니다. 그런 다음 서빙이나 학습 중에 모든 정보를 수집한 후에는 공통 메서드를 실행하여 사람이 읽을 수 있는 객체와 그리고 머신러닝 시스템의 형식에 관계없이 있습니다 이렇게 하면 학습-서빙 편향의 원인을 없앨 수 있습니다. 결국 학습 프로세스 간에 서로 다른 두 가지 프로그래밍 언어를 사용하지 살펴보겠습니다 그렇게 결정하면 다른 사람과 있습니다.
규칙 #41: 실적이 정체되어 있으면 기존 신호를 다듬기보다는 정성적으로 새로운 정보 소스를 찾아 추가해야 한다.
사용자의 인구통계 정보를 추가했습니다. 항목을 추가했습니다. 단어에 대한 정보를 추출할 수 있습니다. 템플릿을 살펴보았습니다. 정규화를 조정했습니다. 지금까지 이는 몇 분기 만에 주요 측정항목이 1% 개선되는 것입니다. 이제 어떻게 해야 할까요?
이제 근본적으로 다른 사용자를 위한 인프라 구축을 시작할 때입니다. 문서 기록과 같은 지난 1일, 1주, 1년 또는 다른 속성의 데이터가 표시됩니다. 사용 위키데이터 법인 또는 귀사 내부의 무언가 (예: Google의 지식 정보 참조). 딥 링크 사용 있습니다. 수익에 대한 기대치를 조정합니다. 그에 따라 노력을 확대하세요 여느 때와 같음 새 특성을 추가할 때의 이점을 저울질해 보고 비용을 절감할 수 있습니다
규칙 #42: 다양성, 개인화 또는 관련성이 인기도와 상관관계가 있을 것이라고 생각하지 말라.
콘텐츠 집합의 다양성은 많은 것을 의미할 수 있습니다. 콘텐츠 소스는 가장 일반적입니다. 맞춤설정의 의미는 결과를 얻을 수 있습니다. 관련성은 특정 검색어에 대한 결과가 검색어에 더 적합할 수 있습니다. 따라서 세 가지 모두 일반적인 것과 다른 것으로 정의됩니다
문제는 평범함을 능가하기 어려운 경향이 있다는 것입니다.
시스템에서 클릭수, 시청 시간, 시청 시간, +1, 재공유 등을 측정한다면 콘텐츠의 인기도를 측정하고 있는 것입니다. 팀 때로는 다양성을 갖춘 개인 모델을 학습하려고 노력하죠. 맞춤설정하기 위해 시스템 맞춤설정에 사용할 수 있는 특성( 다각화 (이 문서에 사용자의 관심사가 있는지 여부를 나타내는 기능) 반환된 다른 문서와 공통된 기능(예: 작성자 또는 콘텐츠) 이러한 특성의 가중치가 줄어들거나 다른 기호 (부호)가 감소하는 것을 훨씬 커질 수 있습니다
그렇다고 해서 다양성, 맞춤화 또는 관련성이 중요하지 않은 것은 아닙니다. 이전 규칙에서 지적한 것처럼 후처리를 수행하여 관련성이 있습니다. 장기 목표가 증가한다면 인기와는 달리 다양성/관련성이 중요하다고 선언하는 콘텐츠 다음을 수행할 수 있습니다. 그런 다음 후처리를 계속 사용하거나 다양성이나 관련성을 토대로 목표를 다르게 설정합니다