기존 애플리케이션에 미치는 영향 없이 실습생 모드로 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로 전송되는 데이터가 너무 적기 때문일 수 있습니다. 다음 단계는 더 빠른 학습을 촉진하는 데 도움이 될 수 있습니다.

  1. 차별화 기능 추가: 순위 호출에서 작업 및 해당 기능을 시각적으로 검사할 수 있습니다. 기준 작업에 다른 작업과 차별화된 기능이 있나요? 대부분 동일해 보인다면 기능 값의 다양성을 높이는 기능을 더 추가합니다.
  2. 이벤트당 작업 감소: 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는 레이아웃을 최적화하고 더 많은 사용자가 더 일찍 체크 아웃하도록 하지만 이로 인해 트랜잭션당 총 수익이 감소하나요?"

다음 단계