Amazon Web Services ブログ

Amazon Personalize のソリューションの自動トレーニング

Amazon Personalize でソリューションの自動トレーニングを発表できることを嬉しく思います。ソリューションのトレーニングは、モデルの有効性を維持し、ユーザーの進化する行動と好みに合わせて推薦を調整するために不可欠です。時間の経過とともにデータのパターンやトレンドが変化するため、最新の関連データでソリューションを再トレーニングすることで、モデルは学習して適応し、予測精度が向上します。自動トレーニングは新しいソリューションバージョンを生成し、モデルドリフトを軽減し、最新のアイテムを含めながら、エンドユーザーの現在の行動に合わせて推薦を関連性の高いものに維持します。結局のところ、自動トレーニングにより、変化する嗜好に適応し、よりパーソナライズされた魅力的な体験が提供されます。

Amazon Personalize は機械学習(ML)を活用してデジタルトランスフォーメーションを加速し、既存のウェブサイト、アプリケーション、メールマーケティングシステムなどに簡単にパーソナライズされた推薦機能を組み込むことができます。Amazon Personalize により、開発者は ML の専門知識がなくても、カスタマイズされたパーソナライゼーションエンジンをすばやく実装できます。Amazon Personalize は必要なインフラストラクチャをプロビジョニングし、データ処理、特徴量の抽出、適切なアルゴリズムの使用、カスタマイズされたモデルのトレーニング、最適化、ホスティングなど、ML パイプラインの全体を管理します。お客様のデータはすべて暗号化され、プライバシーと安全性が確保されています。

この投稿では、自動トレーニングの設定プロセスを案内し、ソリューションと推薦の正確性と関連性を維持する方法を説明します。

ソリューション概要

ソリューションとは、Amazon Personalize のレシピ、カスタマイズされたパラメーター、および1つ以上のソリューションバージョン(学習済みモデル)の組み合わせを指します。カスタムソリューションを作成する際には、ユースケースに合ったレシピを指定し、トレーニングパラメーターを構成します。この投稿では、トレーニングパラメーターの項目で自動トレーニングの設定を行い、ソリューションを作成します。

前提条件

ソリューションの自動トレーニングを有効にするには、まず Amazon Personalize リソースを設定する必要があります。始めに データセットグループ、スキーマ、 データセット (商品、インタラクション、ユーザーデータ) を作成します。手順については Getting Started (console) または Getting Started (AWS CLI) を参照してください。

データのインポートが完了したら、ソリューションを作成する準備は完了です。

ソリューションの作成

自動的なトレーニングを設定するには、以下の手順を実行してください。

  1. Amazon Personalize コンソールで、新しいソリューションを作成します。
  2. ソリューションの名前を指定し、作成するソリューションの種類を選択し、レシピを選択します。
  3. 必要に応じて、タグを追加します。Amazon Personalize リソースのタグ付けの詳細については、Amazon Personalize リソースのタグ付けを参照してください。
  4. 自動トレーニングを使用するには、「Automatic training」 セクションで「Turn on」を選択し、トレーニングの頻度を指定します。

自動トレーニングは、デフォルトで 7 日ごとに 1 回実行されるように設定されています。ビジネスニーズに合わせて、1 日から 30 日の範囲でトレーニングの頻度を設定できます。

  1. レシピがアイテム推薦やユーザーセグメントを生成する場合は、オプションで「Columns for training」セクションを使用して、Amazon Personalizeがソリューションバージョンのトレーニングに考慮する列を選択できます。
  2. Hyperparameter configuration」セクションで、レシピとビジネスニーズに基づいてハイパーパラメータオプションを任意に設定できます。
  3. 必要に応じて追加の設定を行い、「Next」を選択してください。
  4. ソリューションの詳細を確認し、自動トレーニングが期待どおりに設定されていることを確認してください。
  5. Create solution」を選択してください。

Amazon Personalize は最初のソリューションバージョンを自動的に作成します。ソリューションバージョンとは、トレーニングされたMLモデルを指します。ソリューションのソリューションバージョンが作成されると、Amazon Personalize はレシピとトレーニング構成に基づいてソリューションバージョンを有するモデルをトレーニングします。ソリューションバージョンの作成を開始するまでに最大 1 時間かかる場合があります。

以下は、AWS SDK を使用して自動トレーニングでソリューションを作成するためのサンプルコードです。

import boto3 
 personalize = boto3.client('personalize')

 solution_config = {
    "autoTrainingConfig": {
        "schedulingExpression": "rate(3 days)"
    }
}

 recipe = "arn:aws:personalize:::recipe/aws-similar-items"
 name = "test_automatic_training"
 response = personalize.create_solution(name = name, recipeArn = recipe_arn, datasetGroupArn = dataset_group_arn, 
                            performAutoTraining = True, solutionConfig = solution_config)

 print(response['solutionArn'])
 solution_arn = response['solutionArn'])

ソリューションを作成した後、ソリューションの詳細ページで自動トレーニングが有効になっているかを確認できます。

AWS SDK を使用して、自動トレーニングが有効になっていることを確認するには、次のサンプルコードを使用することもできます。

response = personalize.describe_solution(solutionArn = solution_arn)
 print(response)

レスポンスには、CreateSolution 呼び出し時に設定した値が表示される performAutoTrainingautoTrainingConfig フィールドが含まれています。

ソリューションの詳細ページでは、自動的に作成されたソリューションバージョンも表示されます。「Training type」 列は、ソリューションバージョンが手動で作成されたか、自動で作成されたかを示します。

次のサンプルコードを使用すると、指定したソリューションのソリューションバージョンのリストを返すこともできます:

response = personalize.list_solution_versions(solutionArn = solution_arn)['solutionVersions'] 
 print("List Solution Version response\n")
 for val in response:
    print(f"SolutionVersion: { val }")
    print("\n")

レスポンスには、ソリューションバージョンが手動で作成されたか自動で作成されたかを示す trainingType フィールドが含まれます。

ソリューションバージョンの準備ができたら、そのソリューションバージョンのキャンペーンを作成できます。

キャンペーンの作成

キャンペーンでは、ソリューションバージョン (トレーニングされたモデル) をデプロイして、リアルタイムの推薦を生成します。Amazon Personalize では、ワークフローを合理化し、最新のソリューションバージョンを自動同期によってキャンペーンに自動的にデプロイできます。自動同期を設定するには、以下の手順を実行します

  1. Amazon Personalize コンソールで、新しいキャンペーンを作成します。
  2. キャンペーンの名前を決めます。
  3. 先ほど作成したソリューションを選択します。
  4. Automatically use the latest solution version」を選択します。
  5. Minimum provisioned transactions per second」 (最小プロビジョニングトランザクション数/秒)を設定します。
  6. キャンペーンを作成します。

キャンペーンのステータスが ACTIVE のときは、キャンペーンの準備ができています。

以下は、AWS SDK で syncWithLatestSolutionVersiontrue に設定して、キャンペーンを作成するサンプルコードです。syncWithLatestSolutionVersiontrue に設定する場合は、solutionVersionArnsolutionArn$ LATEST サフィックスを付ける必要があります。

campaign_config = {
    "syncWithLatestSolutionVersion": True 
}
 resource_name = "test_campaign_sync"
 solution_version_arn = "arn:aws:personalize:::solution//$ LATEST"
 response = personalize.create_campaign(name = resource_name, solutionVersionArn = solution_version_arn, campaignConfig = campaign_config)
 campaign_arn = response['campaignArn'] 
 print(campaign_arn)

キャンペーン詳細ページでは、選択したキャンペーンで自動同期が有効になっているかどうかを確認できます。有効になっていると、自動的に作成されたか手動で作成されたかにかかわらず、最新のソリューションバージョンを使用するようキャンペーンが更新されます。

以下のサンプルコードを使って、AWS SDK で syncWithLatestSolutionVersion が有効になっていることを確認してください:

response = personalize.describe_campaign(campaignArn = campaign_arn)
 Print(response)

レスポンスには、campaignConfigの下にsyncWithLatestSolutionVersionフィールドが含まれ、CreateCampaignコールで設定した値が表示されます。

キャンペーンを作成した後、Amazon Personalize コンソールでキャンペーンを更新することにより、最新のソリューションバージョンを自動的に使用するオプションを有効または無効にできます。同様に、AWS SDK を使って UpdateCampaignsyncWithLatestSolutionVersion を有効または無効にできます。

結論

自動トレーニングにより、ワークフローを合理化し、Amazon Personalize で最新のソリューションバージョンの展開を自動化することで、モデルドリフトを軽減し、推薦の関連性を維持できます。

Amazon Personalize を使用してユーザエクスペリエンスを最適化する方法の詳細については、Amazon Personalize 開発者ガイドをご覧ください。

著者について

Ba ’ Carri Johnson は、Amazon Personalize チームで AWS の人工知能/機械学習を担当するシニアテクニカルプロダクトマネージャーです。コンピューター科学と戦略の経歴を持ち、プロダクト イノベーションに情熱を注いでいます。余暇時間には旅行と屋外での探索を楽しんでいます。

Ajay Venkatakrishnan は、Amazon Personalizeチームのソフトウェア開発エンジニアです。余暇時間には、執筆とサッカーを楽しんでいます。

Pranesh Anubhav は、Amazon Personalize のシニアソフトウェアエンジニアです。大規模にお客様にサービスを提供する機械学習システムの設計に情熱を注いでいます。仕事以外では、サッカーをするのが大好きで、レアル・マドリードの熱心なファンです。

本記事は、Introducing automatic training for solutions in Amazon Personalize を翻訳したものです。翻訳はソリューションアーキテクトの小川翔が担当しました。