見習いモードを使用して、既存のアプリケーションに影響を与えずに Personalizer をトレーニングする
重要
2023 年 9 月 20 日以降は、新しい Personalizer リソースを作成できなくなります。 Personalizer サービスは、2026 年 10 月 1 日に廃止されます。
新しい Personalizer リソースをデプロイすると、トレーニングされていないモデルかブランクのモデルで初期化されます。 つまり、どのようなデータからもまだ学習していないため、実際にはうまく動作しません。 これは "コールド スタート" 問題と呼ばれ、運用環境の実際のデータを使ってモデルをトレーニングすることで、時間の経過と共に解決されます。 徒弟モードは、"コールド スタート" 問題を軽減するのに役立つ学習動作であり、運用環境で決定を行う "前に" モデルについての自信を得られます。すべてについてコードを変更する必要はありません。
見習いモードとは
初心者が熟練者を観察して技術を学ぶのと同様に、徒弟モードでは、Personalizer はアプリケーションの現在のロジックによって行われる決定を観察することによって学習できます。 Personalizer モデルは、アプリケーションと同じ決定の出力を模倣することによってトレーニングします。 Rank API の呼び出しごとに、Personalizer は既存のロジックと結果に影響を与えることなく学習できます。 Azure portal と API から使用できるメトリックは、モデルが学習するパフォーマンスを把握するのに役立ちます。 具体的には、Personalize が既存のロジック (ベースライン ポリシーとも呼ばれる) とどの程度一致しているかです。
Personalizer が既存のロジックと 60% から 80% 合理的に一致するようになると、動作を徒弟モードからオンライン モードに変更できます。 その時点で、Personalizer は基になるモデルによって決定された Rank API で最適なアクションを返し、ベースライン ポリシーよりも優れた意思決定を行う方法を学習できるようになります。
徒弟モードを使用する理由
徒弟モードを使用すると、モデルがアプリケーションで使用されるオンラインの意思決定を行う前に、既存の意思決定ロジックを模倣できるようになります。 これは前述のコールド スタートの問題を軽減するのに役立ち、Personalizer サービスに対する信頼性を高め、Personalizer に送信されるデータがモデルのトレーニングに役立つことを確信できます。 これは、オンライン トラフィックやカスタマー エクスペリエンスを危険にさらし、影響を及ぼすことなく行われます。
見習いモードを使用する主な理由は、次の 2 つです。
- コールド スタートの軽減: 徒弟モードを使うと、情報不足のまま決定する必要なしに学習することで、運用環境で "新しい" モデルをトレーニングするコストを減らすことができます。 モデルは既存のアプリケーション ロジックを模倣することを学習します。
- アクションとコンテキストの特徴の検証: コンテキストとアクションの特徴は、不適切または不正確で、最適な方法で設計されていない可能性があります。 特徴が少なすぎる、多すぎる、間違っている、ノイズが多い、または形式が正しくない場合、Personalizer によるパフォーマンスの高いモデルのトレーニングは困難になります。 徒弟モードの間に特徴の評価を実行すると、特徴が Personalizer のトレーニングにどれ程度効果的かを明らかにし、特徴の品質を改善するための領域を特定できます。
どのようなときに見習いモードを使用する必要があるか
ユーザーのエクスペリエンスが Personalizer によって影響を受けないようにしながら、次のシナリオを通して有効性が向上するように Personalizer をトレーニングするには、見習いモードを使用します。
- 新しいシナリオで Personalizer を実装しています。
- コンテキストやアクションの特徴に大きな変更を加えています。
ただし、徒弟モードは、平均報酬またはビジネス KPI の改善に対する Personalizer の影響を測定する効果的な方法ではありません。 ユーザーが提供する現在のデータに基づき、サービスが既存のロジックをどの程度うまく学習しているかということしか評価できません。 各ランク呼び出しに最適なアクションを選択する際に Personalizer がどれだけ効果的であるかを測定するには、Personalizer がオンライン モードである必要があります。または、Personalizer がオンライン モードにある一定期間についてオフライン評価を使用できます。
見習いモードを使用する必要があるユーザー
徒弟モードは、開発者、データ科学者、ビジネス上の意思決定者に役立ちます。
開発者は徒弟モードを使用することで、Rank API と Reward API がアプリケーションに正しく実装され、Personalizer に送信される特徴にエラーや一般的な誤りがないことを確認できます。 適切なコンテキストとアクションの特徴の作成に関する詳細情報を確認してください。
データ科学者は、徒弟モードを使って、特徴が Personalizer モデルのトレーニングに効果的であることを検証できます。 つまり、特徴には Personalizer が既存の意思決定ロジックを学習できるようになる有用な情報が含まれています。
ビジネス上の意思決定者は徒弟モードを使用することで、既存のビジネス ロジックと比べ Personalizer で結果 (つまり報酬) が改善する可能性を評価できます。 具体的には、Personalizer がオンライン モードに移行する前に、提供されたデータから学習できるかどうか、ということです。 この結果、実際の収益やユーザー満足度につながる影響の大きなユーザー エクスペリエンスについて、情報に基づいて意思決定を行うことができます。
動作の比較 - 見習いモードとオンライン モード
見習いモードでの学習は、次の点がオンライン モードと異なります。
領域 | 見習いモード | オンライン モード |
---|---|---|
ユーザー エクスペリエンスへの影響 | ユーザーのエクスペリエンスとビジネス メトリックは変化しません。 現在のアプリケーション ロジックのベースライン アクションに影響を与えずに観察することによって、Personalizer をトレーニングできます。 | ベースライン アクションではなく Personalizer によって意思決定が行われると、ユーザーのエクスペリエンスが変化する可能性があります。 |
学習速度 | 徒弟モードでの Personalizer の学習速度は、オンライン モードでの学習と比較すると遅くなります。 徒弟モードは、探索なしで既定のアクションによって得られる報酬を観察することによってのみ学習できます。これにより、Personalizer が学習できる量が制限されます。 | 現在のモデルからの最適なアクションの "エクスプロイト" と、結果がより良くなる可能性がある他のアクションの "探索" の両方を行うことができるため、より速く学習できます。 |
学習効果の "天井" | Personalizer はアプリケーションの現在のロジックのパフォーマンス (ベースライン アクションによって達成される平均報酬の合計) に近づくことはできますが、超えることはできません。 Personalizer が現在のアプリケーションのロジックと 100% 一致する可能性は低く、60% から 80% 一致した時点で Personalizer をオンライン モードに切り替えることをお勧めします。 | Personalizer はベースラインのアプリケーション ロジックのパフォーマンスを超える必要があります。 時間が経つと Personalizer のパフォーマンスが失速する場合は、オフライン評価と特徴の評価を実行することで、さらに改善できます。 |
rewardActionId に対する Rank API の戻り値 | rewardActionId は、常に既定のアクションの ID になります。 つまり、Rank API 要求 JSON の最初のアクションとして送信するアクションです。 つまり、見習いモードの間は、Rank API はアプリケーションに対して目に見えることは何も行いません。 | rewardActionId は、Personalizer モデルによって決定される、Rank API の呼び出しで提供される ID の 1 つになります。 |
評価 | Personalizer は、現在のアプリケーションのロジックによって受け取る報酬の合計と、その時点で Personalizer をオンライン モードにすると獲得する報酬の合計の比較を保持します。 この比較は、Azure portal の Personalizer リソースの [監視] ブレードで参照できます。 | オフライン評価を実行することによって、Personalizer の有効性を評価します。これにより、Personalizer によって達成された合計報酬と、アプリケーションのベースラインの予想される報酬を比較できます。 |
Personalizer のパフォーマンスがアプリケーションのベースライン ロジックと 100% 一致する可能性は低く、これを超えることはありません。 60% から 80% パフォーマンスが一致すれば Personalizer をオンライン モードに切り替えるには十分と言えます。この状態で、Personalizer はより良い意思決定を学習し、アプリケーションのベースライン ロジックのパフォーマンスを超えることができます。
徒弟モードの制限事項
徒弟モードはランク呼び出しで示されるコンテキストとアクションの特徴を使って、既存のアプリケーションのベースライン ロジックの模倣を試みることにより、Personalizer モデルをトレーニングします。 次の要因は、徒弟モードの学習能力に影響します。
徒弟モードが適切ではない可能性があるシナリオ:
編集によって選択されたコンテンツ:
ニュースやエンターテイメントなどの一部のシナリオでは、編集チームによってベースライン項目を手動で割り当てることができます。 つまり、人間は、より広範な世界に関する知識を用い、何が魅力的なコンテンツになるか認識して、代表取材から特定の記事やメディアを選択し、「優先」や「ヒーロー」の記事としてフラグを設定しています。 このようなエディターはアルゴリズムではなく、エディターによって考慮される要素は主観的で、コンテキストまたはアクションの特徴に関係しない可能性があります。 この場合、徒弟モードではベースライン アクションの予測が困難になる場合があります。 このような状況では、次のことが可能です。
- オンライン モードでの Personalizer のテスト: インフラストラクチャがある場合は、Personalizer をオンライン モードにするか、A/B テストを実施してから、オフライン評価を実行して、アプリケーションのベースライン ロジックと Personalizer の違いを評価することを検討してください。
- 編集上の考慮事項と推奨事項を特徴として追加する: 選択に影響を与える要因をエディターに確認し、コンテキストとアクションで特徴として追加できるのかを確認します。 たとえば、特定の著名人が頻繁に話題になっている間は、メディア会社の編集者はコンテンツを大きく取り上げることがあります。この知識はコンテキストの特徴として追加できます。
徒弟モードを強化して学習を加速させる要因
徒弟モードが学習し、0 を超える一致パフォーマンスを達成していても、パフォーマンスの改善スピードが遅い (2 週間で 60% から 80% の一致報酬に達していない) 場合は、Personalizer に送信されているデータが少なすぎる可能性があります。 次の手順が、学習の高速化に役立つ場合があります。
- 差別化する特徴を追加する: Rank 呼び出しのアクションとその特徴を視覚的に検査できます。 ベースライン アクションには、他のアクションと区別される特徴がありますか? ほとんど同じように見える場合は、特徴を追加することで特徴値の多様性を高めてください。
- イベントごとのアクション数を減らす: Personalizer は、[探索に使用するランク付け呼び出しの割合] の設定を使って、好みと傾向を見つけます。 Rank 呼び出しにさらに多くのアクションがある場合、特定のアクションが探索に選択される可能性が低くなります。 各 Rank 呼び出しで送信されるアクションの数を減らすと (10 未満)、徒弟モードに学習に十分なデータがあるかどうかを示す一時的な調整になる可能性があります。
見習いモードを使用して履歴データでトレーニングを行う
Personalizer のトレーニングに使いたい履歴データが大量のある場合は、徒弟モードを使用し、Personalizer を通してデータを再生できます。
見習いモードで Personalizer を設定し、履歴データからのアクションとコンテキストの特徴で Rank を呼び出すスクリプトを作成します。 このデータのレコードの計算に基づいて、Reward API を呼び出します。 Personalizer がアプリケーションのベースライン ロジックと 60% から 80% 一致するには、約 50,000 個の履歴イベントが必要な場合があります。 イベントの数を増減しても満足できる結果が得られる場合があります。
履歴データからトレーニングするときは、送信されるデータ (コンテキストとアクションの特徴、ランク要求で使用される JSON のレイアウト、このトレーニング データ セットでの報酬の計算) を既存のアプリケーションから利用できるデータ (特徴と報酬の計算) と一致させることをお勧めします。
オフライン データと履歴データは不完全でノイズが多くなる傾向があり、運用環境 (またはオンライン) のシナリオとは形式が異なる可能性があります。 履歴データからのトレーニングを行うことはできですが、その結果は完全でなく、Personalizer のオンライン モードでの学習の結果を予測するのに適していない可能性があります。履歴データと現在のシナリオで特徴が異なる場合は特にそうです。
見習いモードの使用と A/B テストの使用
Personalizer 処理の A/B テストは、検証が完了し、オンライン モードで学習している場合にのみ有益です。徒弟モードではベースライン アクションのみが使用され、既存のロジックが学習されるためです。 つまり、Personalizer は A/B テストの "制御" アームのアクションを返しているため、徒弟モードの A/B テストには値がありません。
Personalizer を使用してオンラインで学習するユース ケースができたら、A/B テストを使用することで、制御されたコーホートを作成し、報酬に使用されるシグナルより複雑な可能性がある結果を比較できます。 A/B テストで回答できる質問の例としては、「小売 Web サイトでは Personalizer によってレイアウトが最適化され、より多くのユーザーがより早く チェックアウト できるようになりますが、これによりトランザクションあたりの総収益が減少しますか?」が挙げられます。
次のステップ
- アクティブなイベントと非アクティブなイベントについて学習します