기존 애플리케이션에 미치는 영향 없이 실습생 모드로 Personalizer 학습
Important
2023년 9월 20일부터 새로운 Personalizer 리소스를 만들 수 없습니다. Personalizer 서비스는 2026년 10월 1일에 사용 중지됩니다.
새 Personalizer 리소스를 배포할 때 학습되지 않은 모델 또는 빈 모델로 초기화됩니다. 즉, 어떤 데이터에서도 학습하지 않았으므로 실제로는 잘 수행되지 않습니다. 이는 "콜드 부팅" 문제로 알려져 있으며 시간이 지남에 따라 프로덕션 환경의 실제 데이터로 모델을 학습시켜 해결됩니다. 실습생 모드는 "콜드 부팅" 문제를 완화할 수 있도록 하는 학습 동작으로, 코드 변경 없이 프로덕션 단계에서 결정을 내리기 전에 모델에 대한 확신을 얻을 수 있습니다.
실습생 모드란?
실습생이 전문가를 관찰하여 기술을 배우는 것과 유사하게, 실습생 모드를 사용하면 Personalizer가 애플리케이션의 현재 논리에서 내린 결정을 관찰하여 학습할 수 있습니다. Personalizer 모델은 애플리케이션과 동일한 결정 출력을 모방하여 학습합니다. 각 순위 API 호출을 통해 Personalizer는 기존 논리 및 결과에 영향을 주지 않고 학습할 수 있습니다. Azure Portal 및 API에서 사용할 수 있는 메트릭은 모델의 학습 성과를 이해하는 데 도움이 됩니다. 특히 Personalize가 기존 로직(기준 정책이라고도 함)과 얼마나 잘 일치하는지입니다.
Personalizer가 기존 로직을 60~80%의 시간 동안 합리적으로 일치시킬 수 있게 되면 동작을 실습생 모드에서 온라인 모드로 변경할 수 있습니다. 이때 Personalizer는 기본 모델에 의해 결정된 대로 순위 API에서 최상의 작업을 반환하고 기준 정책보다 더 나은 결정을 내리는 방법을 알아볼 수 있습니다.
실습생 모드를 사용하는 이유는 무엇인가요?
실습생 모드는 모델이 애플리케이션에서 사용되는 온라인 결정을 내리기 전에 기존 결정 로직을 모방하는 방법을 제공합니다. 이는 앞서 언급한 콜드 부팅 문제를 완화하는 데 도움이 되며 Personalizer 서비스에 대한 더 많은 신뢰를 제공하고 Personalizer로 전송된 데이터가 모델 학습에 유용하다는 확신을 줍니다. 이는 온라인 트래픽과 고객 환경에 위험을 주거나 영향을 주지 않고 수행됩니다.
실습생 모드를 사용하는 두 가지 주요 이유는 다음과 같습니다.
- 콜드 부팅 완화: 실습생 모드는 정보에 입각한 결정을 내릴 필요 없이 학습함으로써 프로덕션에서 "새로운" 모델을 학습하는 비용을 줄이는 데 도움이 됩니다. 모델은 기존 애플리케이션 로직을 모방하는 방법을 학습합니다.
- 동작 및 컨텍스트 기능 유효성 검사: 컨텍스트 및 동작 기능이 부적절하거나 부정확하거나 최적화되지 않은 상태로 설계될 수 있습니다. 너무 적거나, 너무 많거나, 올바르지 않거나, 시끄럽거나, 잘못된 형식의 기능이 있는 경우, Personalize는 성능이 우수한 모델을 학습하는 데 어려움을 겪습니다. 실습생 모드에서 기능 평가를 수행하면 기능이 Personalizer 학습에 얼마나 효과적인지 발견하고 기능 품질을 개선할 영역을 식별할 수 있습니다.
실습생 모드를 사용해야 하는 경우
Personalizer의 영향을 받지 않는 사용자의 환경은 그대로 두고 다음 시나리오를 통해 Personalizer를 학습시켜 효과를 증대하기 위해 실습생 모드를 사용할 수 있습니다.
- 새 시나리오에서 Personalizer를 구현하고 있습니다.
- 컨텍스트 또는 작업 기능을 크게 변경했습니다.
그러나 실습생 모드는 Personalizer가 평균 보상 또는 비즈니스 KPI를 개선하는 데 미칠 수 있는 영향을 측정하는 효과적인 방법이 아닙니다. 제공하는 현재 데이터를 감안할 때 서비스가 기존 로직을 얼마나 잘 학습하고 있는지 평가할 수 있습니다. Personalizer가 각 순위 호출에 대해 가능한 최상의 작업을 선택하는 데 얼마나 효과적인지 측정하려면 Personalizer가 온라인 모드에 있어야 합니다. 또는 Personalizer가 온라인 모드에 있는 일정 기간 동안 오프라인 평가를 사용할 수 있습니다.
실습생 모드를 사용해야 하는 사람
실습생 모드는 개발자, 데이터 과학자 및 비즈니스 의사 결정자에게 유용합니다.
개발자는 실습생 모드를 사용하여 순위 및 보상 API가 애플리케이션에서 올바르게 구현되고 Personalizer로 전송되는 기능에 오류 및 일반적인 실수가 없는지 확인할 수 있습니다. 좋은 컨텍스트 및 작업 기능을 만드는 방법에 대해 자세히 알아봅니다.
데이터 과학자는 실습생 모드를 사용하여 기능이 Personalizer 모델 학습에 효과적인지 유효성을 검사할 수 있습니다. 즉, 기능에는 Personalizer가 기존 결정 로직을 학습할 수 있는 유용한 정보가 포함되어 있습니다.
비즈니스 의사 결정자는 실습생 모드를 통해, 기존 비즈니스 로직과 비교하여 결과(즉, 보상)를 향상시키는 데 있어 Personalizer의 가능성을 평가할 수 있습니다. 특히 Personalizer가 온라인 모드로 전환하기 전에 제공된 데이터에서 학습할 수 있는지 여부를 평가합니다. 이를 통해 실제 수익과 사용자 만족도가 걸린 사용자 환경에 영향을 미치는 합리적 결정을 내릴 수 있습니다.
동작 비교 - 실습생 모드 및 온라인 모드
다음과 같은 방법으로 실습생 모드와 온라인 모드의 차이를 학습합니다.
지역 | 실습생 모드 | 온라인 모드 |
---|---|---|
사용자 경험에 미치는 영향 | 사용자 환경과 비즈니스 메트릭은 변경되지 않습니다. Personalizer는 영향을 주지 않고 현재 애플리케이션 로직의 기준 작업을 관찰하여 학습됩니다. | 기준 작업이 아닌 Personalizer에서 결정을 내리므로 사용자 환경이 변경될 수 있습니다. |
학습 속도 | Personalizer는 온라인 모드에서의 학습에 비해 실습생 모드에서 더 느리게 학습합니다. 실습생 모드에서는 Personalizer가 학습할 수 있는 양을 제한하는 탐색 없이 기본 작업으로 얻은 보상을 관찰함으로써만 학습할 수 있습니다. | 현재 모델에서 최상의 작업을 활용하고 잠재적으로 더 나은 결과를 위해 다른 작업을 탐색할 수 있으므로 더 빨리 학습합니다. |
학습 효과 "천장" | Personalizer는 애플리케이션의 현재 로직(기준 작업으로 달성한 총 평균 보상)의 성능의 근사값을 계산할 수 있으며 초과하지 않습니다. Personalizer가 현재 애플리케이션의 로직과 100% 일치를 달성할 가능성은 낮으며, 60%-80% 일치가 달성되면 Personalizer를 온라인 모드로 전환하는 것이 좋습니다. | Personalizer는 기준 애플리케이션 로직의 성능을 초과해야 합니다. Personalizer의 성능이 시간이 지남에 따라 정체되는 경우 오프라인 평가 및 기능 평가를 수행하여 추가 개선을 추구할 수 있습니다. |
rewardActionId에 대한 순위 API 반환 값 | rewardActionId는 항상 기본 작업의 ID입니다. 즉, 순위 API 요청 JSON의 첫 번째 작업으로 보내는 작업입니다. 즉, 실습생 모드인 동안은 Rank API가 애플리케이션에서 보이지 않습니다. | rewardActionId는 Personalizer 모델에 의해 결정된 순위 API 호출에서 제공되는 ID 중 하나입니다. |
평가 | Personalizer는 현재 애플리케이션 로직에서 받은 보상 합계를 계속 비교하며, Personalizer가 그 시점에 온라인 모드에 있는 경우 받을 보상 합계입니다. 이 비교는 Azure Portal에 있는 Personalizer 리소스의 모니터 블레이드에서 볼 수 있습니다. | 오프라인 평가를 실행하여 Personalizer의 효과를 평가합니다. 이렇게 애플리케이션 기준의 잠재적 보상과 대비하여 Personalizer가 달성한 총 보상을 비교할 수 있습니다. |
Personalizer는 애플리케이션의 기준 로직과 100% 성능 일치를 달성할 가능성이 낮으며 이를 초과하지도 않습니다. Personalizer를 온라인 모드로 전환하려면 60%-80%의 성능 일치가 충분해야 합니다. 여기서 Personalizer는 더 나은 결정을 학습하고 애플리케이션의 기준 로직 성능을 초과할 수 있습니다.
실습생 모드의 제한 사항
실습생 모드는 순위 호출에 있는 컨텍스트 및 작업 기능을 사용하여 기존 애플리케이션의 기준 로직을 모방하여 Personalizer 모델을 학습합니다. 다음 요소는 실습생 모드의 학습 기능에 영향을 미칩니다.
실습생 모드가 적절하지 않을 수 있는 시나리오:
편집자로서 선택한 콘텐츠:
뉴스 또는 엔터테인먼트와 같은 일부 시나리오에서는 편집 팀에서 기준 항목을 수동으로 할당할 수 있습니다. 즉, 인간은 광범위한 세계에 대한 지식을 사용하고, 매력적인 콘텐츠가 무엇인지 이해하고, 풀에서 특정 문서 또는 미디어를 선택하고, "선호" 또는 "대표" 기사로 플래그를 지정합니다. 이러한 편집자는 알고리즘이 아니며 편집자가 고려하는 요소는 주관적일 수 있으며 컨텍스트 또는 작업 기능과 관련이 없을 수 있습니다. 이 경우 실습생 모드는 기준 작업을 예측하는 데 어려움을 겪을 수 있습니다. 이러한 상황에서 다음을 수행할 수 있습니다.
- 온라인 모드에서 Personalizer 테스트: 인프라가 있는 경우 시간 동안 Personalizer를 온라인 모드로 두거나 A/B 테스트에 두는 것을 고려한 다음 오프라인 평가를 실행하여 애플리케이션의 기준 로직과 Personalizer 간의 차이를 평가합니다.
- 편집 고려 사항 및 권장 사항을 기능으로 추가: 편집기에게 선택 사항에 영향을 미치는 요소를 요청하고, 컨텍스트 및 작업에서 기능으로 추가할 수 있는지 확인합니다. 예를 들어, 미디어 회사의 편집자는 특정 유명인이 뉴스에 자주 등장할 때 콘텐츠를 강조할 수 있습니다. 이러한 지식은 컨텍스트 기능으로 추가될 수 있습니다.
실습생 모드를 개선하고 가속화하는 요소
실습생 모드가 학습하여 0보다 높은 일치 성능을 달성하지만 성능이 천천히 개선되는 경우(2주 이내에 60%~80% 일치 보상을 가져오지 못함) Personalizer로 전송되는 데이터가 너무 적기 때문일 수 있습니다. 다음 단계는 더 빠른 학습을 촉진하는 데 도움이 될 수 있습니다.
- 차별화 기능 추가: 순위 호출에서 작업 및 해당 기능을 시각적으로 검사할 수 있습니다. 기준 작업에 다른 작업과 차별화된 기능이 있나요? 대부분 동일해 보인다면 기능 값의 다양성을 높이는 기능을 더 추가합니다.
- 이벤트당 작업 감소: Personalizer는 "탐색에 사용할 순위 호출 비율(%)" 설정을 사용하여 기본 설정 및 추세를 검색합니다. 순위 호출에 더 많은 작업이 있는 경우 탐색을 위해 특정 작업이 선택될 가능성이 낮아집니다. 각 순위 호출에서 전송되는 작업 수를 더 작은 수(10개 미만)로 줄이는 것은 실습생 모드에 학습할 데이터가 충분한지 여부를 나타내는 임시 조정이 될 수 있습니다.
실습생 모드에서 과거 데이터로 학습
Personalizer를 학습하는 데 사용하려는 기록 데이터가 많은 경우 실습생 모드를 사용하여 Personalizer를 통해 데이터를 재생할 수 있습니다.
Personalizer를 실습생 모드로 설정하고 과거 데이터의 작업과 컨텍스트 기능으로 Rank를 호출하는 스크립트를 만듭니다. 이 데이터의 레코드 계산을 기준으로 Reward API를 호출합니다. Personalizer가 애플리케이션의 기준 로직과 60-80% 일치하는 것을 확인하려면 약 50,000개의 기록 이벤트가 필요할 수 있습니다. 더 적거나 더 많은 이벤트로 만족스러운 결과를 얻을 수 있습니다.
과거 데이터로부터 학습할 때는 컨텍스트 및 작업에 대한 기능, Rank 요청에 사용되는 JSON의 레이아웃, 이 학습 데이터 집합의 보상 계산에서 보내는 데이터가, 기존 애플리케이션에서 사용할 수 있는 데이터(보상의 기능 및 계산)와 일치해야 합니다.
오프라인 및 기록 데이터는 더 불완전하고 노이즈가 많은 경향이 있으며 프로덕션(또는 온라인) 시나리오와 형식이 다를 수 있습니다. 기록 데이터를 통한 교육이 가능하지만 그 결과는 결론적이지 않을 수 있으며 특히 기록 데이터와 현재 시나리오 간에 기능이 다른 경우 Personalizer가 온라인 모드에서 얼마나 잘 학습하는지에 대한 좋은 예측 변수는 아닙니다.
실습생 모드와 A/B 테스트 사용 비교
실습생 모드에서는 기준 작업만 사용되고 기존 로직이 학습되므로 Personalizer 처리의 유효성이 검사되고 온라인 모드에서 학습 중인 경우에만 Personalizer 처리에 대한 A/B 테스트를 수행하는 것이 유용합니다. 이는 본질적으로 Personalizer가 A/B 테스트의 "제어" 부분의 작업을 반환하므로 실습생 모드의 A/B 테스트에는 가치가 없음을 의미합니다.
Personalizer를 사용하고 온라인으로 학습하는 사용 사례가 있으면 A/B 실험을 통해 제어된 코호트를 만들고 보상에 사용되는 신호보다 더 복잡할 수 있는 결과 비교를 수행할 수 있습니다. A/B 테스트에서 답할 수 있는 질문의 예는 다음과 같습니다. "소매 웹 사이트에서 Personalizer는 레이아웃을 최적화하고 더 많은 사용자가 더 일찍 체크 아웃하도록 하지만 이로 인해 트랜잭션당 총 수익이 감소하나요?"
다음 단계
- 활성 및 비활성 이벤트 알아보기