Share via


Personalizer を使用する状況と方法

重要

2023 年 9 月 20 日以降は、新しい Personalizer リソースを作成できなくなります。 Personalizer サービスは、2026 年 10 月 1 日に廃止されます。

Personalizer は、エクスペリエンスの向上、業績の向上、または生産性の向上を実現するために、表示する適切なアクション (コンテンツ) をアプリケーションが選択する必要があるあらゆる状況で使用します。

Personalizer は、強化学習を使用して、どのアクション (コンテンツ) をユーザーに表示するかを選択します。 選択は、サービスに送信されるデータの量、品質、および分布によって大きく変化します。

Personalizer のユース ケース例

  • 意図の明確化と曖昧性除去: ユーザーの意図が明確でない場合に、パーソナル化されたオプションを提供することで、ユーザーのエクスペリエンスを向上させます。
  • メニューやオプションに関する既定の提案: パーソナル化されていないメニューや代替手段の一覧を表示するのではなく、パーソナル化された方法で最も可能性が高い項目を最初の手順としてボットに提案させます。
  • ボットの特徴とトーン: トーン、冗長性、および文体を変更できるボットの場合、これらの特徴を変更することを検討してください。
  • 通知やアラートの内容: ユーザーのエンゲージメントを高めるために、アラートにどのようなテキストを使用するかを決定します。
  • 通知とアラートのタイミング: ユーザーのエンゲージメントを高めるために、通知を送信するタイミングを個人ごとに学習させます。

Personalizer の使用が必要な想定

Personalizer は、次のガイドラインを満たす、または実装できる状況で適用できます。

ガイドライン 説明
ビジネス目標 自分のアプリケーションのビジネスまたは使いやすさに関する目標がある。
コンテンツ ユーザーに表示するものに関するコンテキスト上の決定を行うとその目標が整備される部分がアプリケーションにある。
コンテンツの数量 ランク付けするアクションが 1 回の呼び出しにつき 50 個未満である。
データの集計 全体的なユーザーの動作および合計報酬スコアから最適な選択肢を学習でき、そうする必要がある。
倫理的な使用 パーソナル化のための機械学習の使用が、責任ある使用に関するガイドラインと選択した選択内容に従っている。
最良の単一オプション コンテキスト上の決定を、限られた選択肢から最良の選択肢 (アクション) を順位付けすることとして表現できる。
スコア付けされた結果 ユーザー動作の一定の側面を測定し、それを " 報酬スコア " で表現することによって、順位付けされた選択肢がアプリケーションにとってどれだけうまく機能したかを判断できる。
関連性のあるタイミング 報酬スコアに含まれる交絡または外部因子が多すぎない。 実験期間は、関連性を保持したまま報酬スコアを計算するのに必要上最小限の長さにします。
十分なコンテキストの特徴 ランク付けのコンテキストを、適切な選択をするのに役立つと考えられ、個人を特定できるユーザー固有の情報を含まない、少なくとも 5 つの特徴の一覧として表現できる。
十分なアクションの特徴 Personalizer が適切な選択をするのに役立つと思われる少なくとも 5 つの特徴のリストとして、各コンテンツの選択 ("アクション") に関する情報がある。
毎日のデータ 時間の経過と共に問題に変化が生じる場合 (ニュースや流行の好みなど)、最適なパーソナル化を完全に把握するのに十分なイベントがある。 Personalizer は、実世界の継続的な変化に適応しますが、新しいパターンを見極めるための学習に十分なイベントとデータがないと、最適な結果が得られません。 十分に頻繁に発生するユース ケースを選択する必要があります。 1 日あたり少なくとも 500 回発生するユース ケースを見つけることを検討してください。
履歴データ アプリケーションは、少なくとも 10 万回の相互作用の履歴を蓄積するのに十分な期間にわたってデータを保持できる。 これにより、Personalizer は、オフライン評価とポリシーの最適化を実行するのに十分なデータを収集することができます。

パーソナル化された動作がすべてのユーザーで検出できるものでない場合は、Personalizer を使用しないでください。 たとえば、Personalizer を使用して 20 項目のメニューの一覧から最初に注文するピザを提案するのは便利ですが、子守を手伝ってもらいたい場合にユーザーの連絡先リストから電話をかける相手 (「おばあちゃん」など) を選ぶのは、ユーザー ベース全体でパーソナル化できるものではありません。

Web アプリケーションで Personalizer を使用する方法

Web アプリケーションへの学習ループの追加には、次の作業が伴います。

  • どのエクスペリエンスをパーソナル化するか、どのようなアクションおよび特徴があるか、どのようなコンテキストの特徴を使用か、何を報酬に設定するかを決定します。
  • アプリケーションに Personalization SDK への参照を追加します。
  • パーソナル化の準備ができたら、Rank API を呼び出します。
  • eventId を格納します。 後ほど、Reward API で報酬を送信します。
  1. ユーザーがパーソナル化されたページを見たことを確認したら、イベントの Activate を呼び出します。
  2. ユーザーがランク付けされたコンテンツを選択するのを待ちます。
  3. Rank API の出力がどの程度優れていたかを指定して Reward API を呼び出します。

チャット ボットで Personalizer を使用する方法

この例では、一連のメニューや選択肢を毎回ユーザーに送信する代わりに、パーソナル化を使用して既定の提案を送信する方法について説明します。

  • このサンプルのコードを取得します。
  • ボット ソリューションをセットアップします。 LUIS アプリケーションをパブリッシュしてください。
  • ボットの Rank API および Reward API 呼び出しを使用します。
    • LUIS の意図処理を管理するコードを追加します。 最上位の意図として None が返された場合や、最上位の意図のスコアがビジネス ロジックのしきい値を下回った場合は、意図の一覧を Personalizer に送信して意図をランク付けします。
    • ユーザーに意図の一覧を選択可能なリンクとして表示します。その際に、最初の意図は Rank API の応答で最上位の意図とします。
    • ユーザーの選択をキャプチャし、それを Reward API 呼び出しで送信します。
  • 曖昧性除去が必要な場合は、ユーザーごとに結果をキャッシュするのではなく、毎回 Personalizer の Rank API を呼び出します。 あるユーザーに対する意図の曖昧性除去の結果は、時間の経過と共に変化することがあります。Rank API が差異を確認できるようにすることで、全般的な学習が高速化します。
  • 十分なデータをパーソナル化に使用できるように、多くのユーザーに共通する相互作用を選択します。 たとえば、わずかなユーザーしかたどりつかない会話グラフの深い場所にある小さな明確化よりも、入門的な質問の方がうまく当てはまるかもしれません。
  • ユーザーが「X はいかがですか?」または「X という意味ですか?」と問われた場合、"最初の提案が正しい" 会話になるように Rank API 呼び出しを使用します。そうすると、ユーザーに選択肢を提示してメニューから選択してもらうのではなく、ユーザーはただ確認するだけで済みます。 たとえば、ユーザー:「コーヒーを注文したい」、ボット:「ダブル エスプレッソはいかがですか?」となります。 こうすることで、直接的に 1 つの提案に関連付けられるので、報酬信号も強力になります。

レコメンデーション ソリューションで Personalizer を使用する方法

多くの企業では、大規模なカタログから商品を顧客に提案するために、レコメンデーション エンジン、マーケティングおよびキャンペーン ツール、対象ユーザーのセグメント化およびクラスタリング、協調フィルタリング、および他の手段を使用します。

Microsoft Recommenders GitHub リポジトリ には、Jupyter ノートブックとして提供されている推奨システムを構築するための例とベスト プラクティスが提供されています。 xDeepFM、SAR、ALS、RBM、DKN を含む多くの一般的なアプローチ向けに、データの準備、モデルの構築、レコメンデーション エンジンの評価、調整、および運用化のための実用的な例が提供されています。

Personalizer は、レコメンデーション エンジンが存在する場合にそれと連携できます。

  • レコメンデーション エンジンは、大量の (たとえば、50 万個の) 項目を受け取り、数百または数千の選択肢からサブセット (たとえば、上位 20) を提案します。
  • Personalizer は、少数のアクションを、それに関する多くの情報と共に受け取り、指定された豊富なコンテキストについてリアルタイムでそれらを順位付けします。一方、ほとんどのレコメンデーション エンジンでは、ユーザー、製品、およびそれらの相互作用に関する少数の属性のみが使用されます。
  • Personalizer は、ユーザーの嗜好を常に自律的に探索するように設計されているため、ニュース、ライブ イベント、ライブ コミュニティ コンテンツ、毎日更新されるコンテンツ、季節のコンテンツなど、コンテンツが急速に変化する場合により良い結果が得られます。

一般的な用法は、レコメンデーション エンジンの出力 (たとえば、特定の顧客の上位 20 製品) を受け取り、それを Personalizer の入力アクションとして使用することです。

アプリケーションへのコンテンツ保護の追加

ユーザーに提示するコンテンツに大きな差異があるアプリケーションがあり、一部のユーザーにとって安全でないまたは不適切なコンテンツが含まれる可能性がある場合は、ユーザーが許容できないコンテンツを目にすることがないように、あらかじめ適切な保護手段を計画する必要があります。 保護手段を実装する最適なパターンは次のとおりです。* ランク付けするアクションの一覧を取得します。 * 対象ユーザーが使用できないものを除外します。 * 使用できるアクションのみをランク付けします。 * 最上位ランクのアクションをユーザーに表示します。

アーキテクチャによっては、上記の手順を実装するのが難しい場合もあります。 その場合は、ランク付けの実行後に保護手段を実装する別の方法があります。ただし、保護手段で対応できないアクションが Personalizer モデルのトレーニングに使われないように準備しておく必要があります。

  • 学習を非アクティブ化した状態で、ランク付けするアクションの一覧を取得します。
  • アクションをランク付けします。
  • 最上位のアクションが使用できるかどうかを確認します。
    • 最上位のアクションが使用できる場合は、このランク付けの学習をアクティブ化し、ユーザーに表示します。
    • 最上位のアクションが使用できない場合は、このランク付けの学習をアクティブ化せず、独自のロジックまたは別のアプローチによってユーザーに表示するものを決定します。 次にランク付けされたオプションを使用する場合でも、このランク付けの学習をアクティブ化しないでください。

次のステップ

倫理および責任ある使用