Personalizer를 사용하는 위치 및 방법
Important
2023년 9월 20일부터 새로운 Personalizer 리소스를 만들 수 없습니다. Personalizer 서비스는 2026년 10월 1일에 사용 중지됩니다.
애플리케이션에서 표시할 올바른 작업(콘텐츠)을 선택해야 하는 모든 상황에서 Personalizer를 사용하여 환경을 더 효율적으로 만들거나, 더 나은 비즈니스 결과를 달성하거나, 생산성을 향상시킬 수 있습니다.
Personalizer는 보충 학습을 사용하여 사용자에게 표시할 작업(콘텐츠)을 선택합니다. 선택은 서비스에 보내는 데이터의 양, 품질, 분포에 따라 크게 달라질 수 있습니다.
Personalizer 사용 사례
- 의도 확인 및 명확성: 사용자의 의도가 명확하지 않은 경우 맞춤형 옵션을 제공하여 사용자 환경을 개선합니다.
- 메뉴 및 옵션에 대한 기본 제안: 개인적이지 않은 메뉴 또는 대안 목록을 제공하는 대신, 첫 번째 단계로 봇이 맞춤형 방식으로 가장 가능성 높은 항목을 제안하게 합니다.
- 봇 특성 및 어조: 어조, 자세한 정도 및 작성 스타일이 달리질 수 있는 봇의 경우 이러한 특성을 바꾸는 방법을 고려합니다.
- 알림 및 경고 콘텐츠: 사용자의 참여를 높이려면 경고에 어떤 텍스트를 사용해야 하는지 결정합니다.
- 알림 및 경고 타이밍: 사용자의 참여를 높이려면 사용자에게 알림을 보내야 하는 시기에 대한 맞춤형 학습을 제공합니다.
Personalizer를 사용하는 데 필요한 기대 수준
다음 지침을 충족하거나 구현할 수 있는 경우에 Personalizer를 적용할 수 있습니다.
지침 | 설명 |
---|---|
비즈니스 목표 | 애플리케이션에 대한 비즈니스 또는 유용성 목표가 있습니다. |
콘텐츠 | 사용자에게 표시할 항목을 상황에 맞게 결정하여 해당 목표를 향상시킬 수 있는 위치가 애플리케이션에 있습니다. |
콘텐츠 수량 | 호출당 순위를 지정하는 50개 미만의 작업이 있습니다. |
데이터 집계 | 최상의 선택은 전체 사용자 동작과 총 보상 점수에서 학습할 수 있고 학습해야 합니다. |
윤리적 사용 | 기계 학습을 맞춤 설정에 사용하는 경우 사용 책임 지침과 선택 항목을 따릅니다. |
최상의 단일 옵션 | 상황별 의사 결정은 일단의 제한된 선택 항목에서 최상의 옵션(작업) 순위를 지정하는 것으로 표현될 수 있습니다. |
점수가 매겨진 결과 | 사용자 동작의 일부 측면을 측정하고 보상 점수로 표시하여 순위가 지정된 선택 항목이 애플리케이션에서 효율적으로 작동한 정도를 확인할 수 있습니다. |
관련 타이밍 | 보상 점수는 너무 많은 혼동 또는 외부 요인에 관계하지 않습니다. 실험 기간은 여전히 관련되고 있는 동안 보상 점수를 계산할 수 있을 만큼 충분히 짧습니다. |
충분한 컨텍스트 기능 | 올바른 선택을 하는 데 도움이 될 것으로 생각되는 5개 이상의 기능 목록으로 순위에 대한 컨텍스트를 표현할 수 있으며 여기에는 사용자별 식별 정보가 포함되지 않습니다. |
충분한 작업 기능 | 각각의 콘텐츠 선택 항목인 작업에 대한 정보는 Personalizer에서 올바른 선택을 하는 데 도움이 될 것으로 생각되는 5개 이상의 기능의 목록으로 제공됩니다. |
일일 데이터 | 시간이 지남에 따라 문제가 발생하면 최적의 맞춤 설정(예: 뉴스 또는 패션의 기본 설정)에 따라 유지할 수 있는 충분한 이벤트가 있습니다. Personalizer는 현실 세계의 지속적인 변화에 적응할 수 있지만, 새로운 패턴을 검색하고 해결하는 데 충분한 이벤트와 데이터가 없으면 최적의 결과가 되지 않습니다. 자주 발생하는 사용 사례를 선택해야 합니다. 하루에 500회 이상 발생하는 사용 사례를 확인하는 것이 좋습니다. |
기록 데이터 | 애플리케이션은 100,000개 이상의 상호 작용 기록을 누적할 수 있을 만큼 충분히 오랫동안 데이터를 보존할 수 있습니다. 이를 통해 Personalizer는 오프라인 평가 및 정책 최적화를 수행하는 데 충분한 데이터를 수집할 수 있습니다. |
모든 사용자에 걸쳐 개인 설정 동작을 검색할 수 없는 경우 Personalizer를 사용하지 마세요. 예를 들어 Personalizer를 사용하여 20가지 메뉴 항목 목록 중에서 첫 번째 피자 주문을 추천하는 것은 유용하지만, 아이 돌보기와 관련하여 도움이 필요할 때 사용자의 연락처 목록의 전화 번호(예: "할머니")로 연락을 하는 것은 사용자 기반에서 개인 설정이 불가능합니다.
웹 애플리케이션에서 Personalizer를 사용하는 방법
웹 애플리케이션에 학습 루프를 추가하는 방법은 다음과 같습니다.
- 개인 설정할 환경, 현재 갖고 있는 작업 및 기능, 사용할 컨텍스트 기능, 설정할 보상을 결정합니다.
- 애플리케이션에서 개인 설정 SDK에 대한 참조를 추가합니다.
- 개인 설정 준비가 완료되면 순위 API를 호출합니다.
- eventId를 저장합니다. 나중에 보상 API를 사용하여 보상을 보냅니다.
- 사용자가 맞춤형 페이지를 본 것이 확실하면 이벤트에 대한 활성화를 호출합니다.
- 사용자가 순위 콘텐츠를 선택할 때까지 기다립니다.
- 보상 API를 호출하여 순위 API의 출력이 얼마나 효과적인지 나타냅니다.
챗봇에 Personalizer를 사용하는 방법
이 예제에서는 사용자에게 매번 일련의 메뉴 또는 선택 항목을 보내는 대신, 개인 설정을 사용하여 기본 제안을 작성하는 방법을 보여줍니다.
- 이 샘플의 코드를 받습니다.
- 봇 솔루션을 설정합니다. LUIS 애플리케이션을 게시합니다.
- 봇의 순위 및 보상 API 호출을 관리합니다.
- LUIS 의도 처리를 관리하는 코드를 추가합니다. 상위 의도로 없음이 반환되거나 상위 의도 점수가 비즈니스 논리 임계값보다 낮으면 의도를 Personalizer에 보내서 의도의 순위를 지정합니다.
- 의도 목록을 사용자가 선택할 수 있는 링크로 제공하되, 첫 번째 의도를 순위 API 응답의 최상위 의도로 배치합니다.
- 사용자의 선택을 캡처하여 보상 API 호출로 보냅니다.
권장하는 봇 패턴
- 각 사용자에 대한 결과를 캐싱하는 것과는 반대로, 명확성이 필요한 때마다 Personalizer 순위 API를 호출합니다. 한 사람의 의도를 명확히 한 결과는 시간이 지남에 따라 변할 수 있으며, 순위 API가 달라진 결과를 검색하도록 허용하면 전체적인 학습 속도가 빨라집니다.
- 개인 설정에 필요한 데이터를 충분히 확보할 수 있도록 여러 사용자에게 공통으로 적용되는 상호 작용을 선택합니다. 예를 들어 소수의 사용자만 도달하는 대화 그래프의 심층 영역에서 이루어지는 소규모 의도 확인보다는 기초적인 질문이 더 좋을 수 있습니다.
- 순위 API 호출을 사용하여 "첫 번째 제안이 맞습니다." 대화를 활성화합니다. 여기서 사용자는 "X하시겠습니까?" 또는 "X를 의미했나요?"라는 질문을 받고 사용자가 확인할 수 있습니다. 사용자가 메뉴에서 선택해야 하는 옵션을 제공하는 것과는 반대입니다. 예를 들어 사용자가 "커피를 주문하고 싶습니다"라고 말하면 봇은 "더블 에스프레소를 원하세요?"라고 말할 수 있습니다. 이 방식에서는 보상 신호가 한 가지 제안과 직접적인 관련이 있으므로 보상 신호 역시 강력합니다.
추천 솔루션에 Personalizer를 사용하는 방법
많은 회사에서는 추천 엔진, 마케팅 및 캠페인 도구, 대상 그룹 구분 및 클러스터링, 공동 작업 필터링 및 대규모 카탈로그에서 제품을 고객에게 추천하는 다른 방법을 사용합니다.
Microsoft 추천 GitHub 리포지토리는 추천 시스템을 구축하기 위한 예제 및 모범 사례를 Jupyter Notebook으로 제공합니다. xDeepFM, SAR, ALS, RBM, DKN을 포함한 다양한 일반적인 방법에 대한 데이터 준비, 모델 작성, 추천 엔진의 평가, 튜닝 및 운영을 수행하는 작업 예제를 제공합니다.
추천 엔진이 있는 경우 Personalizer는 이를 사용하여 작업할 수 있습니다.
- 추천 엔진은 많은 양의 항목(예: 50만 개)을 사용하고 수백 또는 수천 개의 옵션에서 나온 하위 집합(예: 상위 20개)을 추천합니다.
- Personalizer는 많은 관련 정보를 포함한 적은 수의 작업을 사용하고 제공된 풍부한 컨텍스트에 맞게 실시간으로 순위를 지정하지만, 대부분의 추천 엔진은 사용자, 제품 및 상호 작용에 대한 몇 가지 특성만 사용합니다.
- Personalizer는 항상 사용자 기본 설정을 자동으로 검색하도록 설계되어 있으므로 뉴스, 라이브 이벤트, 라이브 커뮤니티 콘텐츠, 매일 업데이트되는 콘텐츠 또는 계절별 콘텐츠와 같이 콘텐츠가 빠르게 변하는 상황에서 더 나은 결과를 얻을 수 있습니다.
일반적으로 추천 엔진의 출력(예: 특정 고객에 대한 상위 20개 제품)을 가져와서 Personalizer에 대한 입력 작업으로 사용합니다.
애플리케이션에 콘텐츠 세이프가드 추가
애플리케이션에서 사용자에게 표시하는 콘텐츠를 다양하게 변형할 수 있고 그 콘텐츠 중 일부가 안전하지 않거나 일부 사용자에게 적절하지 않은 경우 사용자가 허용되지 않는 콘텐츠를 볼 수 없게 적절한 세이프가드를 작동할 계획을 미리 세워야 합니다. 세이프가드를 구현하는 가장 좋은 패턴은 * 순위를 지정하는 작업 목록을 가져오는 것입니다. * 대상 그룹에 대해 실현할 수 없는 작업을 필터링합니다. * 실행 가능한 작업만 순위를 지정합니다. * 상위 작업을 사용자에게 표시합니다.
일부 아키텍처에서는 위의 시퀀스를 구현하기 어려울 수 있습니다. 이 경우 순위 지정 후 세이프가드를 구현하는 대안이 있지만, 세이프가드 범위를 벗어나는 작업이 Personalizer 모델 학습에 사용되지 않도록 프로비저닝해야 합니다.
- 학습이 비활성화된 순위를 지정할 작업 목록을 가져옵니다.
- 작업의 순위를 지정합니다.
- 최상위 작업을 실현할 수 있는지 확인합니다.
- 최상위 작업을 실현할 수 있는 경우 이 순위에 대한 학습을 활성화하고 사용자에게 표시합니다.
- 최상위 작업을 실현할 수 없는 경우 이 순위에 대한 학습을 활성화하지 말고, 자체 논리 또는 대안을 확인하여 사용자에게 무엇을 표시할 것인지 결정합니다. 두 번째 순위 옵션을 사용하는 경우에도 이 순위에 대한 학습을 활성화하지 마세요.