(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-20
(45)【発行日】2024-10-01
(54)【発明の名称】動的属性モデル化による次のバスケット推薦のためのシステムと方法
(51)【国際特許分類】
G06N 3/04 20230101AFI20240924BHJP
G06N 3/08 20230101ALI20240924BHJP
【FI】
G06N3/04
G06N3/08
(21)【出願番号】P 2023506488
(86)(22)【出願日】2021-07-29
(86)【国際出願番号】 US2021043703
(87)【国際公開番号】W WO2022039902
(87)【国際公開日】2022-02-24
【審査請求日】2023-04-05
(32)【優先日】2020-12-04
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506332063
【氏名又は名称】セールスフォース インコーポレイテッド
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】チェン,ヨンジュン
(72)【発明者】
【氏名】リ,ジア
(72)【発明者】
【氏名】リ,チェンシ
(72)【発明者】
【氏名】アンダール,マーカス
(72)【発明者】
【氏名】ション,カイミング
(72)【発明者】
【氏名】アラヤルヴィ,シモ
(72)【発明者】
【氏名】ウサラバッリ,ハルシャバルダン
【審査官】石坂 知樹
(56)【参考文献】
【文献】特開2018-181326(JP,A)
【文献】米国特許出願公開第2015/0052003(US,A1)
【文献】米国特許出願公開第2012/0278091(US,A1)
【文献】WANG Huizhao, et al.,DMFP: A Dynamic Multi-Faceted Fine-Grained Preference Model for Recommendation,2019 IEEE International Conference on Data Mining (ICDM),2019年11月08日
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/04
G06N 3/08
G06F 18/213
(57)【特許請求の範囲】
【請求項1】
アイテムの動的属性を使用する次のバスケット推薦のためのシステムであって、
ユーザが相互作用したバスケットのアイテムと前記ユーザに関連付けられた動的属性を受信する通信インターフェースと、
複数のコンピュータ実行可能な命令を記憶するメモリと、
前記複数のコンピュータ実行可能な命令を読み出して実行して、
入力エンコーダによって、前記バスケットのアイテムを示すバスケットアイテムシーケンス
を第1の高密度表現ベクトルにエンコードし、
前記動的属性を示す動的属性シーケンスを
第2の高密度表現ベクトルにエンコード
することと、
少なくとも第1のニューラルネットワークを通じて実装された時間レベルアテンションモジュールによって、前記第1の高密度表現ベクトルにセルフアテンションを適用して、前記バスケットのアイテムの時間レベルシーケンシャルパターンを示す
第1の時間レベルアテンション行列を
もたらし、前記第2の高密度表現ベクトルにセルフアテンションを適用して、前記ユーザの前記動的属性の時間レベルシーケンシャルパターンを示す第2の時間レベルアテンション行列をもたらすことと、
バスケット内アテンションモジュールによって、前記第1の時間レベルアテンション行列にアテンションを適用して、前記バスケットのアイテム間の特徴相互作用を示すバスケットアイテムアテンション行列を
もたらすことと、
属性内アテンションモジュールによって、前記第2の時間レベルアテンション行列にアテンションを適用して、前記動的属性間の相互作用を示す属性アテンション行列を
もたらすことと、
予測モジュールによって、前記バスケットアイテムアテンション行列及び前記属性アテンション行列に基づいて、次の時間ステップのためのバスケットアイテムの予測セットを生成する
ことと、
行う、1つ以上のハードウェアプロセッサと、を含む、システム。
【請求項2】
前記入力エンコーダは、前記バスケットアイテムシーケンス内の各バスケットアイテムに対応する各マルチホット表現ベクトル、又は前記動的属性シーケンス内の各属性を、それぞれバスケットアイテム潜在表現、又は属性潜在表現にエンコードするように構成されており、
前記属性潜在表現は、カテゴリ属性又は数値属性に対応する、請求項1に記載のシステム。
【請求項3】
前記入力エンコーダは、
位置埋め込みベクトル及び月埋め込みベクトルを生成し、
前記位置埋め込みベクトル及び前記月埋め込みベクトルを前記バスケットアイテム潜在表現又は前記属性潜在表現に加えることによって、バスケット表現、又はカテゴリ属性表現及び数値属性表現を生成するようにさらに構成されている、請求項2に記載のシステム。
【請求項4】
前記入力エンコーダは、
対応するシーケンス長さがプリセット最大シーケンス長さよりも短いときに、前記バスケットアイテムシーケンス又は前記動的属性シーケンスの空の位置にゼロをパディングすることによって、前記バスケットアイテムシーケンスと、前記動的属性シーケンスに対して時間認識パディング動作を実行するように構成されている、請求項1に記載のシステム。
【請求項5】
前記時間レベルアテンションモジュールは、1つ以上のスタックマルチヘッドセルフアテンションブロック(MHSAB)含む、請求項1に記載のシステム。
【請求項6】
前記時間レベルアテンションモジュールからの第1のMHSABは、
バスケット表現、カテゴリ属性表現、又は数値属性表現を入力エンコーダからクエリ、キー、及び値に投影し、
前記投影からの複数のヘッドを連結するように構成されている、請求項1に記載のシステム。
【請求項7】
前記第1のMHSABは、前記連結された複数のヘッドを、層正規化及びReLu活性化を伴う2層全結合層に供給する、請求項6に記載のシステム。
【請求項8】
前記バスケット
内アテンションモジュール又は前記属性内アテンションモジュールは、複数のMHSABのスタックを含む、請求項1に記載のシステム。
【請求項9】
前記予測モジュールは、フィードフォワードニューラルネットワークを含み、
前記バスケット内アテンションモジュールからの前記バスケットアイテムアテンション行列と前記属性内アテンションモジュールからの前記属性アテンション行列を連結し、
前記フィードフォワードニューラルネットワークによって、前記連結された行列に基づいて、各アイテムの推薦スコアを生成するようにさらに構成されている、請求項1に記載のシステム。
【請求項10】
前記推薦スコアのシグモイド関数に基づいて、バイナリクロスエントロピー損失をコンピューティングするように構成された損失コンピューティング
モジュールをさらに含む、請求項9に記載のシステム。
【請求項11】
アイテムの動的属性を使用する次のバスケット推薦のための
コンピュータによって実行される方法であって、
通信インターフェースを介して、ユーザが相互作用したバスケットのアイテムと前記ユーザに関連付けられた動的属性を受信することと、
入力エンコーダによって、
前記バスケットのアイテムを示すバスケットアイテムシーケンス
を第1の高密度表現ベクトルにエンコードし、
前記動的属性を示す動的属性シーケンスを
第2の高密度表現ベクトルにエンコードすることと、
少なくとも第1のニューラルネットワークを通じて実装された時間レベルアテンションモジュールによって、
前記第1の高密度表現ベクトルにセルフアテンションを適用して、前記バスケットのアイテムの時間レベルシーケンシャルパターンを示す
第1の時間レベルアテンション行列を
もたらし、前記第2の高密度表現ベクトルにセルフアテンションを適用して、前記ユーザの前記動的属性の時間レベルシーケンシャルパターンを示す第2の時間レベルアテンション行列をもたらすことと、
前記第1の時間レベルアテンション行列にアテンションを適用して、前記バスケットのアイテム間の特徴相互作用を示すバスケットアイテムアテンション行列を
もたらすことと、
前記第2の時間レベルアテンション行列にアテンションを適用して、前記動的属性間の相互作用を示す属性アテンション行列を
もたらすことと、
前記バスケットアイテムアテンション行列及び前記属性アテンション行列に基づいて、次の時間ステップのための予測されるバスケットアイテムのセットを生成することと、を含む、方法。
【発明の詳細な説明】
【関連技術】
【0001】
本開示は、2020年12月4日に出願された米国特許出願第17/112765号に対する優先権を主張し、同出願は、2020年8月18日に出願されたインド仮出願第202041035500号の非仮出願であり、かつそれに対する優先権を主張し、これらは、それらの全体が参照により本明細書に明示的に組み込まれている。
【0002】
本開示は、一般に、機械学習モデル及びニューラルネットワークに関し、より具体的には、高次特徴及び相互作用の動的属性モデル化を用いた次のバスケット推薦に関する。
【背景技術】
【0003】
シーケンシャル推薦(sequential recommendation)が、電子商取引ウェブサイトにおける商品推薦、ビデオ推薦、及びミュージック推薦などの様々なアプリケーションに広く適用されている。シーケンシャル推薦設定では、ユーザは、異なるアイテムとの履歴の相互作用(例えば、クリック、購入)のシーケンスを有する。推薦メカニズムは、ユーザの履歴の行動に従って連続するアイテムを予測する。例えば、履歴の相互作用からシーケンシャルなパターンをモデル化することによって、シーケンシャル推薦メカニズムは、ユーザが次の時間ステップで相互作用する可能性が高いアイテムを推薦する。既存のシーケンシャル推薦システムは、ユーザの履歴の相互作用されたアイテムのみを考慮しており、アイテム又はユーザの属性を無視している。したがって、アイテム又はユーザ自身の属性を無視した既存のシステムによって行われた推薦は、時として、かなり不正確であるか、又は無関係でさえある可能性があり、不満足なユーザ体験につながる。
【図面の簡単な説明】
【0004】
【
図1】本明細書に記載される実施形態による、アイテム及び特徴相互作用を伴う動的属性をモデル化する例示的な推薦システムを例示するブロック図を示す。
【0005】
【
図2A】一実施形態による、
図1における推薦モジュールの例示的なアーキテクチャを例示するブロック図である。
【
図2B】一実施形態による、
図2Aに示すモジュールの詳細な構造を提供するブロック図である。
【0006】
【
図3】本明細書に記載される実施形態による、マルチヘッドセルフアテンションブロック(multi-head self-attention block、MHSAB)の例示的な動作を例示する簡略ブロック図を提供する。
【0007】
【
図4】本明細書に記載される実施形態による、MHSABの例示的なアーキテクチャを例示する簡略ブロック図を提供する。
【0008】
【
図5】いくつかの実施形態による、開示全体を通して記載されるアイテム及び特徴相互作用を伴う動的属性をモデル化する推薦システムを実装するためのコンピューティングデバイスの簡略図である。
【0009】
【
図6】本明細書に記載されるいくつかの実施形態による、アイテムの動的属性を使用する次のバスケット推薦のための方法を例示する簡略論理フロー図である。
【0010】
【
図7】本明細書に記載される一実施形態による、推薦モジュール130のための例示的な訓練データセットの表要約統計を提供する。
【0011】
【
図8】本明細書に記載される一実施形態による、7つのベースラインアプローチと比較した全体的な結果を示す表を提供する。
【0012】
【
図9】本明細書に記載される一実施形態による、推薦モジュールのアブレーション研究を示す表を提供する。
【0013】
【
図10】本明細書に記載される一実施形態による、例示的な訓練データセットに対する平均時間レベル及び属性内アテンション重みの視覚化ビューを提供する。
【0014】
図及び付録では、同一の呼称を有する要素は、同じ又は同様の機能を有する。
【発明を実施するための形態】
【0015】
既存のシーケンシャル推薦システムの大部分は、ユーザの履歴の相互作用されたアイテムのみを考慮しており、アイテム又はユーザの属性を無視している。特に、ユーザの関心及び/又はアイテムの属性が経時的に変更されることがあるため、アイテム又はユーザの動的属性を無視する推薦は、経時的に大きく不正確となる可能性がある。
【0016】
いくつかの既存のシステムは、静的アイテム属性、例えば、商品のカテゴリ及びブランドを組み込むことがあり、推薦性能を改善している。しかし、多くのアプリケーションの場合、経時的に変更される動的ユーザ属性とアイテム属性もある。このような属性は、ユーザの関心のシフト又はアイテム特性の変更のいずれかについての重要な説明を提供する。例えば、アプリケーション推薦設定では、ユーザが異なるアプリケーションに費やす時間量のような動的属性があり、これは日々変動し、異なるアプリケーションのユーザの好みとニーズに関する情報を提供することがある。別の例としては、ワークアウト推薦設定では、ユーザの高度、速度、心拍数が、経時的に変更され得る関連情報である。さらに、シーケンシャル推薦では、しばしば季節的なパターンがある。具体的な例としては、昨年の新年にギフトカードを購入したユーザは、次の新年にギフトカードを購入する可能性が高い。別の例としては、水着は、夏季期間に人気がある可能性がある。
【0017】
いくつかの実施形態では、ユーザが各時間ステップにおいて複数のアイテムと相互作用することができる次のバスケット推薦の形態で、シーケンシャル推薦が行われてもよい。例えば、オンラインで1回の食事を注文するときに、同じショッピングカートで複数の商品を購入したり、異なる料理を注文したりする。いくつかの既存のシステムは、一連のバスケットアイテム間のシーケンスパターンをマイニングすることがある。しかし、同じバスケット内のアイテム間の関係も、役に立つ情報を提供する可能性がある。したがって、シーケンシャルパターン(例えば、電話機を購入してから電話機ケースを購入する)と同じバスケット内のアイテム間の関係(例えば、パンとバターは通常一緒に購入されている)をモデル化することは、アイテム間の関係を理解するために両方とも重要である。具体的な例としては、いくつかのアイテム(例えば、パンとバター)は、通常一緒に購入される。同じバスケット内のアイテム間の関係を捕捉するために、いくつかの既存のシステムは、バスケット内で同時に発生するアイテムの頻度に基づいた相関行列を使用し、次いで、それをモデル化に組み込むが、しかしながら、それは、動的に学習されたものではなく、静的情報としてアイテム間の相関を取り扱う。
【0018】
アイテム相互作用に加えて、異なる特徴間の高次の相互作用は、推薦性能を改善するためのもう1つの重要な側面である。具体的な例としては、映画「アナと雪の女王(Frozen)」は10歳の少女に推薦されてもよい。3次特徴(性別:女性、年齢: 10歳、ジャンル:アニメーション)は、この推薦に関して有用な情報を提供している。ドメインエキスパートよる手作業のエンジニアリングに依存せずに、このような高次特徴相互作用を自動的に学習することは、依然として困難である。
【0019】
したがって、ユーザの時間的取引パターン及びユーザが履歴の相互作用したアイテムからのバスケット内相関、並びに動的ユーザ/アイテム属性からの暗黙の動的アパタイト及び高次特徴相互作用を捕捉するシーケンシャル推薦を提供する必要性の観点から、本明細書に記載される実施形態は、アイテム及び特徴相互作用を伴う動的属性をモデル化するアテンティブネットワークフレームワークを提供する。具体的には、アテンティブネットワークフレームワークは、最初に季節パターン(例えば、アプリ推薦では、屋外活動アプリは夏季期間により好適であるが、屋内活動アプリは冬季により適している)を捕捉するために、時間認識パディング及び時間/月エンコードを伴うバスケットアイテムシーケンス及び動的属性シーケンスをエンコードする。次いで、アテンティブネットワークフレームワークは、時間レベルアテンションモジュールをバスケットアイテムシーケンス及び動的ユーザ属性シーケンスに対して適用し、バスケットアイテムごと及び属性ごとの時間的シーケンシャルパターンを捕捉する。その後、各バスケット内のアイテムに対してバスケット内アテンティブモジュールが使用されて、アイテム間の相関情報を捕捉する。セルフアテンションを使用して、アイテム間の相互作用は、モデルトレーニング中に適応的に学習される。セルフアテンションモジュールも、各時間ステップの属性に対して活用されて、高次特徴相互作用を生成することができる。
【0020】
本明細書で使用される場合、用語「ネットワーク」は、任意の人工知能ネットワーク又はシステム、ニューラルネットワーク又はシステム、及び/又はそこで実装されるか、又はそれと共に実装される任意の訓練又は学習モデルを含む任意のハードウェア又はソフトウェアベースのフレームワークを含んでもよい。
【0021】
本明細書で使用される場合、用語「モジュール」は、1つ以上の機能を実行するハードウェア又はソフトウェアベースのフレームワークを含んでもよい。いくつかの実施形態では、モジュールは、1つ以上のニューラルネットワーク上で実装されてもよい。
【0022】
図1は、本明細書に記載される実施形態による、アイテム及び特徴相互作用を伴う動的属性をモデル化する例示的な推薦システムを例示するブロック図を示す。
図100は、ユーザ110に関する動的属性113a~113n、バスケットアイテム112に関する動的属性114a~114n、時間認識ファクタ116などを受信する推薦システム130を示す。
【0023】
例えば、ユーザの動的属性113a~113nは、年齢、場所、ユーザデバイス上のアプリケーションの使用、季節的な関心など、ユーザの時間変動性又は動的属性を示す属性を含んでもよい。時間認識ファクタ116は、時期、トレンド(例えば、特定の時間における劇場の映画など)などを含んでもよい。過去のバスケットの動的属性114a~114nは、バスケットアイテムの属性、バスケットアイテムの動的組み合わせ(例えば、アイテムAは、特定の時期にアイテムBと組み合わされることが多いか、又は、異なる時間にアイテムCと組み合わされることが多いなど)などを含んでもよい。
【0024】
推薦システム130は、ユーザとアイテムとの間の履歴の相互作用、またユーザの動的属性113a~113n、及びアイテム114a~114nの動的属性から学習して、次のアイテム125の推薦を行ってもよい。具体的には、推薦システム130は、ユーザ総数|U|を有するユーザのセットU、及びアイテム総数|V|を有するアイテムのセットVに関する情報を取得してもよい。ユーザ又はアイテムは、属性総数|F|を有するFで示される属性のセットを有する。
に関する情報を取得してもよい。任意のユーザ
【数1】
、例えば、ユーザ110に対して、バスケットのシーケンス
【数2】
は、時間期間[0,T
u]中の時間によってソートされたアイテム相互作用を表す。時間期間T
uは、ユーザごとに異なってもよく、Tは、各シーケンスの最大時間ステップであってもよく、式中、バスケットのシーケンスの1つの時間ステップとして、
【数3】
である。
【数4】
は、時間ステップtにおいてユーザuが相互作用したアイテムのセットである。シーケンス
【数5】
は、時間によって順序付けられたユーザuの動的ユーザ属性の値を表す。
【数6】
は、時間ステップtにおけるuの全ての属性値である。具体的には、
【数7】
時間tにおけるユーザuのカテゴリ属性値を表し、
【数8】
時間tにおけるユーザuの属性値を表す。したがって、推薦システム130は、最大T時間の履歴Bu及びAu情報を与えられてユーザuがt=T+1時間ステップにおいて相互作用するバスケットアイテムを予測してもよい。
【0025】
図2Aは、一実施形態による、
図1における推薦モジュールの例示的なアーキテクチャを例示するブロック図であり、
図2Bは、一実施形態による、
図2Aに示すモジュールの詳細な構造を提供するブロック図である。
図200aは、アイテム及び特徴相互作用を伴う動的属性をモデル化するアテンティブネットワークフレームワークを示している。フレームワークは、入力エンコーダ(231a及び231b、又はまとめて231と呼ばれる)、時間レベルアテンションモジュール(232a及び232b、又はまとめて232と呼ばれる)、イントロバスケットモジュール233及びイントラ属性モジュール234、並びに予測モジュール235を含んでもよい。
【0026】
入力エンコーダ231は、バスケットアイテムシーケンス203及び/又はカテゴリ動的属性シーケンス204のスパース表現を高密度表現に受信及びエンコードし、数値動的属性を正規化する。具体的には、各タイムステップにおいて、最良のアイテムシーケンス
【数9】
及び動的ユーザ属性
【数10】
が、入力エンコーダ231a、231bにおいて受信される。いくつかの実装では、入力エンコーダ231a及び231bは、並列に動作する2つの入力エンコーダであってもよい。別の実装では、入力エンコーダ231a及び231bは、バスケットアイテムシーケンス203及び動的属性シーケンス204を、各時間ステップにおいて、同時、交互、又は連続的に、任意の順序でエンコードするように構成された同じ入力エンコーダであってもよい。
【0027】
入力エンコーダ231aは、バスケットアイテムシーケンス203内の各バスケットアイテムシーケンス
【数11】
に対して、アイテムセットの情報を表す|V|次元マルチホット表現を取得してもよく、
【数12】
によって示される。具体的には、ベクトルインデックスはアイテムIDに対応し、アイテムがバスケット
【数13】
内に存在する内に存在する場合、1に設定され、アイテムがバスケット内に存在しない場合、0に設定される。次いで、入力エンコーダ231aは、連結ベースのルックアップ関数を使用して、
【数14】
潜在表現213、例えば
【数15】
にエンコードしてもよく、CONCAT-LOOKUP関数は、最初に
【数16】
内のアイテムの埋め込みベクトルをルックアップし、次いで、全てのベクトルを連結して、潜在表現
【数17】
を形成する。|Vt|は、
【数18】
内のアイテムの総数である。各アイテムと各カテゴリ属性の埋め込み次元はDである。
【数19】
は、ルックアップのための学習可能な埋め込み行列である。「CONCAT-LOOKUP」関数を適用した後に、入力エンコーダ231aはバスケット
【数20】
内の各アイテムiに対して, 対応する埋め込みベクトル
【数21】
を生成する。各バスケット内のアイテム数が変動するため、バスケット内のアイテムの最大数が
|V
max|として設定され、|V
max|よりもサイズが小さいものは、ベクトル
【数22】
(qは、Qの最初の埋め込みベクトル)を使用してパディングされる。
【0028】
同様に、動的属性シーケンス204内の動的ユーザ属性に対して、カテゴリ属性及び数値属性は、異なってモデル化される。カテゴリ属性
【数23】
は、
【数24】
によって示される|F
cat|次元マルチホットベクトルによって表される。数値属性の値は、min-max正規化を使用して-1から1の範囲に正規化され、
【数25】
として示される。次いで、入力エンコーダ231bは、カテゴリ属性ベクトル表現
【数26】
を以下のように潜在表現にエンコードする。
【数27】
であり、式中、
【数28】
は、ルックアップのための学習可能な埋め込み行列であり、
【数29】
は、At,catの潜在高密度表現である。
【0029】
一実施形態では、バスケットのシーケンス及びユーザ属性のシーケンス長さは、異なるユーザに対して変動するので、最大シーケンス長さは、最新のT個の時間ステップの情報に到達するようにTとして設定される。シーケンス長さがTよりも大きい場合、シーケンスは最新のT個の時間ステップ情報に切り捨てられる。シーケンス長さがTよりも短い場合、ゼロパッド動作が空の位置に適用されてもよい。シーケンス長さがTになるまでシーケンスの先頭にゼロをパディングする代わりに、入力エンコーダ231は、失われた時間ステップにゼロをパディングする。例えば、月{1ヶ月目,2ヶ月目,3ヶ月目}及び月{1ヶ月目,3ヶ月目,5ヶ月目}からの2つのシークエンスの場合、最大シーケンス長さは5である。先頭にパディングすると、時間シフト情報は無視される。代わりに、ゼロは、第1のシーケンスのシーケンスの終了(4ヶ月目及び5ヶ月目を表す)にパディングされ、第2のシーケンスの3ヶ月目と5ヶ月目の前(2ヶ月目及び及び4ヶ月目を表す)に0を埋める。このパディング動作により、モデルは、これらの2つのシーケンス間の差異を識別することができる。パディングの後に、
【数30】
は、それぞれ、バスケットアイテム、カテゴリ属性、及び数値属性のシーケンスを表す。
【0030】
しかし、パディング技法は、パディングなしのアプローチと比較するときに、入力データとしてより長いシーケンスをもたらす可能性がある。しかし、実際には、各時間ステップ(バスケット)の持続時間は、アプリケーションに依存する。例えば、訓練データが約4ヶ月のデータを含むときに、効率的な訓練のために、毎日バスケットが処理される。バスケットとしての1時間又は1分当たりの訓練は、各バスケットについてスパース情報のみを生成することがある。
【0031】
一実施形態では、入力エンコーダ231は、位置埋め込み
【数31】
を追加することによって、入力203及び204のシーケンシャル情報を利用し、式中、p
tは、時間tおけるD次元位置埋め込みベクトル213である。追加的に、月インデックス組み込み
【数32】
が、季節パターンを発見するために、時間レベルアテンションモジュール232a~bに対して追加され、式中、m
tは、時間tにおけるD次元月インデックス埋め込みベクトル211である。位置埋め込みと月埋め込みの違いは、月インデックスがシーケンスの12時間ステップごとに繰り返され得るということである。したがって、位置コード及び月コードの埋め込みは、潜在表現213
【数33】
と以下のように連結される。
【数34】
であり、バスケットシーケンスの表現が、
【数35】
として形成される。次いで、バスケットシーケンスL
vのエンコードされた表現214が、入力エンコーダ231aから時間レベルアテンションモジュール232aに送信される。
【0032】
同様に、入力エンコーダ231bにおいて、位置インデックス埋め込み222及び月インデックス埋め込み222が、
【数36】
の潜在表現223に追加されて、それぞれエンコードされた表現224
【数37】
を取得する。バスケットシーケンス204のエンコードされた表現224が、次いで、入力エンコーダ231bから時間レベルアテンションモジュール232bに送信される。
【0033】
時間レベルのアテンションモジュール232a~bが、エンコードされたバスケットシーケンス及びユーザ属性シーケンスに別々に適用されて、ユーザのシーケンシャル取引パターンと暗黙の動的アパタイトの両方を捕捉する。時間レベルのアテンションモジュール232a~232bは、入力シーケンスL
v、L
Fcat、及びL
Fnumの高密度テンソル表現を受信してもよい。バスケット内のすべてのアイテム表現と各時間におけるすべての属性値の重み付け和をとる代わりに、テンソル表現は、2D行列に整形され、
【数38】
に関する情報を取得してもよい。
【0034】
時間レベルのアテンションモジュール232a~232bは、各々、複数のマルチヘッドセルフアテンションモジュール(MHSAB)を含み、これらは、2D行列L
v、L
Fcat、及びL
Fnumに適用されて、時間レベルシーケンシャルパターンを別々に捕捉する。例えば、
図3は、本明細書に記載される実施形態による、MHSABの例示的なアーキテクチャを例示する簡略ブロック図を提供する。具体的には、アテンションブロックは、(クエリ)304と306及び308の(キー)-(値)ペアのセットを出力315にマッピングするものとして記載され得る。MHSAブロックでは、クエリ304、キー306、及び値308は同じであり、異なる学習した投影行列を有する複数の部分空間に投影される。ここで、クエリ304、キー306、及び値308は、最初にL
(0)の入力302から投影される(L
(0)=Lとし、入力エンコーダ231からのテンソル表現のいずれか)。次いで、投影されたクエリ304と投影されたキー306が乗算されて表現310をもたらし、これは、次いで、投影された値308に適用されて、セルフアテンション出力315を取得する。
【0035】
図4は、本明細書に記載される実施形態による、MHSAB400の例示的なアーキテクチャを例示する簡略ブロック図を提供する。MHASB400は、MHSA316(
図3の
図300と同様に動作する)、正規化層331、2層のフィードフォワードニューラルネットワーク(FFNN)332、及び別の正規化層333を含む。MHSA316は、複数の並列セルフアテンション(SA)ブロック320a~hに入力302を受信し、各SAブロックからの出力は連結されて、出力318を以下のように形成する。
【数39】
であり、式中、SAは、セルフアテンションマッピングであり、hは、サブスペース数であり、
【数40】
は、学習されたパラメータ(C=|F
cat+2|D)であり、C′=hCである。
【0036】
一実施形態では、シーケンスが時系列順であるため、モデルはt+1時間ステップの予測を行うときに、t個の時間ステップまでの情報のみを考慮してもよい。アテンションモジュールが将来のステップ情報をのぞきこむのを回避するために、因果関係マスクがMHSAブロックに追加して、j>iであるときにクエリiとキーjとの間の全てのリンクを禁止してもよい。
【0037】
一実施形態では、セルフアテンションブロックの表現学習の性能を強化するために、残留接続、ドロップアウト、層正規化、及びReLU活性化を伴う2層全結合層の関数がMHSA出力318に以下のように適用されてもよい。
【数41】
【0038】
したがって、MHSAB全体からの出力325は、以下のように取得されてもよい。
【数42】
【0039】
図4に示す複数(k>1)のMHSABは、より複雑な特徴相互作用を捕捉するために以下のようにスタックされてもよい。
【数43】
であり、式中L
(0)=Lであり、h
kは、k番目のアテンションブロックにおけるヘッド数である。
【0040】
図2を参照すると、バスケット内モジュール233及び属性内アテンションモジュール234は、それぞれ、アイテム相互作用情報及び特徴相互作用情報を抽出するために使用される。バスケット内モジュール233及び属性内アテンションモジュール234の各々は、MHSABの1つ以上のスタックを含んでもよく、MHSABの各スタックは、1つ以上のシーケンス接続されたMHSABを含む。MHSABは、
図4に示すブロック400と同様であってもよい。
【0041】
具体的には、バスケットのアイテム間の相互作用情報が、次のバスケット推薦結果の改善に有用であることが証明された。追加的に、高次特徴相互作用も予測結果を改善することを示した。したがって、MHSABは、各時間ステップtにおいてバスケットと動的属性に対して適用される。これにより、モデルはバスケットアイテム間の相互作用をマイニングし、モデルがより良好な推薦を行うのを助けることができる高次特徴相互作用を生成することが可能である。
【0042】
例えば、カテゴリ属性シーケンスに対して、バスケット内モジュール233又は属性内モジュール234は、出力表現行列
【数44】
(略してL
(k)Fcat)を時間レベルアテンションモジュール232bから受信する。出力表現は、3Dテンソル
【数45】
に整形され,次いでカテゴリーユーザ属性表現L
(k)の各時間ステップにおいて3DテンソルL
(k)にMHSABが適用される。したがって、ユーザ属性表現は、MHSABのスタックによって以下のように更新されてもよい。
【数46】
であり、式中、
【数47】
は、時間tにおける時間レベルのアテンションモジュールの出力であり、h
k+1は(k+1)番目のアテンションブロックである。
【0043】
したがって、時間tにおいて、カテゴリ属性間の相互作用
【数48】
が、上述のように取得されてもよい。MHSABは、例えば、より高いレベルのカテゴリ属性相互作用、例えば、
【数49】
を捕捉するために、複数回スタックされてもよい。同様に、バスケットアイテム間の相互作用
【数50】
及び数値属性間の相互作用
【数51】
が、各時間ステップtにおいて同様に取得されてもよい。
【0044】
予測モジュール235は、バスケット内モジュール233及び属性内アテンションモジュール234から、出力
【数52】
を受信及び結合して、最終予測250を生成する。具体的には、バスケットアイテム及び動的属性のパターンを捕捉し、時間tにおいて同時にアイテム及び属性相互作用情報を組み込むために、予測モジュール235は、以下のように連結された入力に適用されるフィードフォワードニューラルネットワーク236の全結合層を含む。
【数53】
であり、式中
【数54】
は、過去t回バスケットアイテムと動的属性の時間パターン情報、及びアイテムと属性相互作用情報を含む高レベル特徴である。
【0045】
予測モジュール235は、入力エンコーダ231aから、共用埋め込みテーブル230、例えば、アイテム埋め込み行列Qを受信し、これは、候補アイテムリストを提供する。次いで、t+1時間ステップのバスケットアイテムを予測するために使用される。具体的には、アイテムの関連性が以下のように予測される。
【数55】
式中、r
i,tは、最初のt個のバスケットアイテムと動的ユーザ属性が与えられて、次に推薦されるアイテムの推薦スコアである。Qは、入力エンコーダにおいてバスケットアイテムをエンコードするために共有されるアイテム埋め込み行列である。すべてのiの推薦スコアr
i,tは、次いで、例えば、ソフトマックス動作を使用して、次の時間ステップt+1に対する次の推薦アイテム250
【数56】
を生成するために使用され得る。
【0046】
図2Aを参照すると、訓練段階中に、予測モジュール235からの出力r
i,tは、次いで、損失モジュール260に送信されて、以下のようにバイナリエントロピー損失をコンピューティングする。
【数57】
式中、σは、シグモイド関数
【数58】
である。各シーケンス内の各時間ステップにおいて、V内の各アイテムに対する関連スコアは、r
i,tである。ユーザuに対するターゲットバスケットアイテムは、B
uのシフトバージョンであり、
【数59】
によって示される。次いで、損失Lは、例えば、逆伝搬経路266(破線で示す)を通して、モジュール235、234、233、232a~b及び231a~bを更新するために使用されてもよい。
【0047】
図5は、いくつかの実施形態による、開示全体を通して記載されるアイテム及び特徴相互作用を伴う動的属性をモデル化する推薦システムを実装するためのコンピューティングデバイス500の簡略図である。
図5に示すように、コンピューティングデバイス500は、メモリ520に結合されたプロセッサ510を含む。コンピューティングデバイス500の動作は、プロセッサ510によって制御される。また、コンピューティングデバイス500は、1つのプロセッサ510のみを有して示されているが、プロセッサ510は、コンピューティングデバイス500内の1つ以上の中央処理ユニット、マルチコアプロセッサ、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路、グラフィック処理ユニット(GPU)などを代表するものであってもよいことが理解される。コンピューティングデバイス500は、スタンドアロンのサブシステムとして、コンピューティングデバイスに追加されたボードとして、及び/又は仮想マシンとして実装されてもよい。
【0048】
メモリ520は、コンピューティングデバイス500によって実行されるソフトウェア及び/又はコンピューティングデバイス500の動作中に使用される1つ以上のデータ構造を記憶するために使用されてもよい。メモリ520は、1つ以上のタイプの機械可読媒体を含んでもよい。機械可読媒体のいくつかの一般的な形態は、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、任意の他の磁気媒体、CD-ROM、任意の他の光学媒体、パンチカード、紙テープ、穴のパターンを有する任意の他の物理媒体、RAM、PROM、EPROM、FLASH-EPROM、任意の他のメモリチップ又はカートリッジ、及び/又はプロセッサ又はコンピュータが読むように適合される任意の他の媒体を含んでもよい。
【0049】
プロセッサ510及び/又はメモリ520は、任意の好適な物理的配置に配置されてもよい。いくつかの実施形態では、プロセッサ510及び/又はメモリ520は、同じボード、同じパッケージ(例えば、システムインパッケージ)、同じチップ(例えば、システムオンチップ)などに実装されてもよい。いくつかの実施形態では、プロセッサ510及び/又はメモリ520は、分散、仮想化、及び/又はコンテナ化されたコンピューティングリソースを含んでもよい。そのような実施形態と一致して、プロセッサ510及び/又はメモリ520は、1つ以上のデータセンター及び/又はクラウドコンピューティング施設に位置してもよい。
【0050】
いくつかの例では、メモリ520は、1つ以上のプロセッサ(例えば、プロセッサ510)によって動作するときに、1つ以上のプロセッサに本明細書にさらに詳細に記載される方法を実行させ得る実行可能コードを含む非一時的な有形機械可読媒体を含んでもよい。例えば、図示のように、メモリ520は、システム及びモデルを実装及び/又はエミュレートするため、及び/又は本明細書にさらに記載される方法のうちのいずれかを実装するために使用され得る推薦モジュール130のための命令を含む。いくつかの例では、推薦モジュール130は、入力540、例えば、時間によってソートされたユーザのアイテム相互作用レコードを表現するバスケットのシーケンスを受信してもよい。データインターフェース515は、ユーザが入力した入力を受信するユーザインターフェース、又はデータベースからデータシーケンスを受信又は取得し得る通信インターフェースのいずれであってもよい。推薦モジュール130は、出力550、例えば、バスケットアイテムの第1のシーケンス及び動的ユーザ属性を与えられると、次の推薦アイテムを生成してもよい。
【0051】
いくつかの実施形態では、推薦モジュール130は、エンコーダ231、時間レベルアテンションモジュール232、1つ以上のバスケット内及び属性内セルフアテンションモジュール233、及び予測モジュール234を含む。モジュール231~234は、
図2A~
図2Bにさらに例示される。
【0052】
サブモジュール231~234を実装するための推薦モジュール130のアーキテクチャは、
図2A~2Bの
図200a~
図200bと同様であり得る。いくつかの例では、推薦モジュール130及びサブモジュール231~234は、ハードウェア、ソフトウェア、及び/又はハードウェアとソフトウェアの組み合わせを使用して実装されてもよい。
【0053】
図6は、本明細書に記載されるいくつかの実施形態による、アイテムの動的属性を使用する次のバスケット推薦のための方法を例示する簡略論理フロー図である。方法600のプロセス610~650のうちの1つ以上は、少なくとも部分的に、1つ以上のプロセッサによって実行されるときに、1つ以上のプロセッサにプロセス610~650のうちの1つ以上を実行させ得る非一時的な有形機械可読媒体に記憶された実行可能コードの形態で実装されてもよい。いくつかの実施形態において、方法600は、推薦モジュール130によって使用される方法に対応してもよい。
【0054】
プロセス610において、過去のバスケットの入力シーケンス(例えば、
図2A~
図2Bの203)及び動的ユーザ属性のシーケンス(例えば、
図2A~
図2Bの204)が受信される。例えば、過去のバスケットの入力シーケンスは、時間によってソートされたユーザのアイテム相互作用レコードを表す。
【0055】
プロセス620において、過去のバスケットの入力シーケンス及び動的属性の入力シーケンスが、高密度表現、例えば、
【数60】
にエンコードされる。例えば、エンコードは、
図2Bの入力エンコーダ231a~bに関連して記載されるように、埋め込みルックアップ及び時間認識パディング動作、並びに位置又は月インデックス埋め込みを介して実行されてもよい。
【0056】
プロセス630において、時間レベルアテンションが、ユーザのシーケンシャル取引パターンと暗黙の動的アパタイトの両方を捕捉するために高密度表現に適用されて、例えば、時間レベルアテンション行列
【数61】
を生成する。 時間レベルアテンションのさらなる詳細は、
図2A~
図2Bの時間レベルアテンションモジュール232a~232bに関連して見出すことができる。
【0057】
プロセス640において、アイテム相互作用情報及び特徴相互作用情報が、アテンドされた高密度表現から抽出される。例えば、MHSABのスタックは、並列で各時間ステップにおいて、バスケット及び動的属性に対応する時間レベルアテンション行列に対して適用され、その結果、バスケットアイテム間の相関を抽出し、高次特徴クロスを生成することは、より良い推薦が得られるように抽出される。得られるバスケットアテンション行列と属性アテンション行列は、
【数62】
である。セルフアテンションに関するさらなる詳細は、
図2A~2Bのバスケット内及び属性内セルフアテンションモジュール233及び234に関連して提供される。
【0058】
プロセス650において、次の推薦予測が、バスケットアイテムアテンション行列及び属性アテンション行列に基づいて生成され、抽出されたアイテム相互作用情報及び特徴相互作用情報を示す。次の推薦予測を生成することに関するさらなる詳細は、
図2A~
図2Bの予測モジュール235に関連して記載される。例示的な性能
【0059】
図7は、本明細書に記載される一実施形態による、推薦モジュール130のための例示的な訓練データセットの表要約統計を提供する。
図7に示すデータセットは、異なる数のユーザ、アイテム、及び属性を有する多様なドメインのセットを表す。エンタープライズ商品推薦(Enterprise Product Recommendation、EPR)データセットは、主要な企業クラウドプラットフォームからサンプリングされたプライベートデータセットである。タスクは、企業に商品を推薦することである。それは、24ヶ月(2017年1月~2018年12月)のエンタープライズ顧客商品購入レコード及び161の動的ユーザ属性が含む。動的属性の例は、企業の製品使用メトリックス、ウェブサイト上の行動メトリック、販売情報、企業のマーケティング活動である。
【0060】
サンタンデール商品推薦(Santander Product Recommendation、SPR)1データセットは、サンタンデール銀行の商品推薦に対する公開データセットである。それは、18ヶ月のユーザ購入情報及びユーザ属性を含む。動的属性も含まれる。例えば、「indrel_1mes」は、一次顧客、潜在顧客などの顧客タイプを表す。それは、毎月、1つのタイプから別のタイプに変更され得る。「antiguedad」は、顧客の年功を月単位で表す。
【0061】
Ta-Fengデータセットは、2000年11月~2001年2月の取引を含む食料品ショッピングデータセットである。各取引は、バスケットで購入されたアイテムである。追加的に、5個の属性も提供される(AGE_GROUPなど)。動的属性を含まないが、ユーザが相互作用するバスケットアイテムシーケンス、高次アイテム相互作用、及び高次属性相互作用の時間パターンをモデル化するため、本明細書に記載された推薦アプローチは依然として有効である。
【0062】
具体的には、各ユーザuに対して、次のバスケット推薦のための全てのアイテムのランキングリストないの上位K個のアイテムが選択される。時間ステップt+1に対する予測を行うときに、時間ステップtまでの時間ステップが使用される。EPRデータセットの場合、最初の20ヵ月のデータが訓練セットとして使用され、21ヶ月目のデータが、モデルをチューニングするための検証データとして使用される。テストの場合、最初の21カ月のデータに対して訓練するために最良のパラメータが使用される。連続する3ヶ月間のデータ(22ヶ月目~24ヶ月目)を試験セットとして扱われる。SPRデータセットの場合、欠損値を有する属性に関して、カテゴリ属性の最も多いものと数値属性の平均値が充填される。最初の17ヶ月間のデータを訓練データとして使用される。データはまず、モデルチューニングのために80%と20%の訓練と検証にスプリットされ、次いで、全ての訓練データに対して訓練する。評価は、18ヶ月目のデータに実行される。Ta-Fengデータセットの場合、購入回数が10回より少ないユーザ及び購入回数が10回より少ないアイテムが除去される。最初の3ヵ月のデータが訓練セットとして使用され、その後の0.5ヶ月目のデータが、モデルをチューニングするための検証データとして使用される。このモデルは、最初の3.5ヶ月のデータに対して訓練される。なお、Ta-Fengのデータセットには4ヶ月のデータを含むが、時間パターンは、季節パターンではなく平日/週末パターンを含むことができる。
【0063】
Hit Rate(HR@K)、Normalized Discounted Cumulative Gain(NDCG@K)、Mean Average Precision(MAP@K)などの評価メトリックが、EPR及びTa-Fengデータセットに対して使用される。MAPに換算したKの選択肢は、EPRで23、Ta-Fengで7691である(全項目)。追加的に、F1@5及びF1@10がTa-Fengデータセットに対する評価メトリックとして使用される。SPRデータセットの場合、Kaggleチャレンジ及びMAP@7が評価のために使用される。Kaggleサブミッションはテストセットに対してMAP@7のみを提供するので、これが、このデータセットに対して報告される唯一のメトリックである。
【0064】
以下のベースライン法、すなわち、係数化されたアイテム遷移行列上にMarkovチェーンを適用するFMC、ユーザの長期的好みとアイテム間相互作用を捕捉できるように行列係数化と係数化された一次Markovチェーンを組み合わせるFPMC、及びシーケンシャル推薦のためのセルフアテンションベースモデルであるSASRecが比較のために採用される。モデルは、入力としてユーザアクションシーケンスをとり、次のアイテムを予測するためにユーザアクションパターンを捕捉するために時間領域にセルフアテンションを適用する。公正な比較のために、マルチヘッドを用いて性能を強化する。追加のベースラインモデルは、シーケンシャル推薦に向けて採用されたClozeを有するユーザアクションシーケンスをモデル化するために双方向のセルフアテンションを使用しするBERT4Rec、バスケット表現がプーリング動作を通してアイテムの埋め込みによって集約されるRNNベースモデルであるDREAMであって、それは次のバスケットアイテムを生成するために最新のバスケット表現を使用する、DREAM、バスケット内(バスケット内のアイテム)相互作用を考慮しながらバスケットシーケンスをエンコードするRNNベースのモデルであるBeacon、バニラアテンションが各時間ステップにおいてバスケットアイテムに使用され、損失関数が損失モジュール260と同様の方法で更新されるFDSA法の拡張であるFDSA+を含む。
【0065】
すべてのベースライン方法に対して、それらがコールドスタートの問題に直面している場合(例えば、ユーザがインタラクション履歴を有さない場合)、推薦リストが、データセット内の人気アイテムに基づいてこれらのユーザに提供される。オリジナルのSASRec及びBERT4Recは、バスケットアイテムシーケンスを設計で処理できないため、これらのモデルに対して追加のデータ準備が行われてもよい。各バスケットアイテムシーケンスは、最後のバスケットを除いて平坦化され、最後のバスケットアイテムがラベルとして使用され、各ユーザの訓練サンプルを生成する。
【0066】
AdamOptimizerは、モーメント推定値β1=0.9及びβ2=0.999でネットワークを更新するために使用される。セルフアテンション層は{1,2,4}からチューニングされ、各アテンションブロックのヘッド番号は、{1,2,4,6}からチューニングされる。最大シーケンス長さは、EPRデータセットで12、SPRデータセットで16及びTa-Fengデータセットで30に設定されている。全てのモデルは、バッチサイズ256で単一のNVIDIA Tesla K80上でゼロから訓練される。
【0067】
図8は、本明細書に記載される一実施形態による、7つのベースラインアプローチと比較した全体的な結果を示す表を提供する。本明細書に記載される推薦モジュール130は、すべてのメトリックにおいて、すべてのベースラインより大幅に性能が優れている。相対改善率は、3.92%~29.63%の範囲である。これは、推薦モジュール130の有効性を実証している。ベースラインアプローチの中で、次のバスケット推薦のために開発されたアプローチ(DREAM、Beacon)は、一般的なシーケンス推薦(FMC、FPMC、SASRec、Bert4Rec)のためのアプローチよりも性能が優れている。FDSA+はべースラインの中でもEPR及びSPRデベースラインに対して最も良好に実行され、ビーコンはTa-Fengデータセットに対して最も良好に実行される。主な理由は、FDSA+がTa-Fengと比較してEPRとSPRがより多くの属性を持つ属性情報を活用するためである。SPRデータセットに対して、Kaggleチャレンジの上位モデルはMAP@7で0.0314を達成する。しかし、(Kaggleフォーラムによる)重いハンドクラフト特徴エンジニアリングを応用して、100以上の解く直を考えつくが、これは、データセットに特有の時間がかかり過ぎ、データセットに過度に固有過ぎる。また、性能をブーストするために、複数の分類器をアンサンブルする。これらのトリックはすべて、推薦モジュール130に対して適用され得る。
【0068】
推薦モジュール130の異なる構成要素231a~b、232a~b、233、234及び235の影響を理解するために、EPRデータセットを使用して詳細なアブレーション研究が行われた。異なる構成要素の影響を理解するために、
図9のEPRデータセットを使用して詳細なアブレーション研究が行われた。
【0069】
図10は、SPRデータセットに対する平均時間レベル及び属性内アテンション重みの視覚化ビューを提供する。アテンションが意味のあるパターンをどのように捕捉するかについての洞察を得るために、SPRデータセットからのサンプリングされた時間レベルアテンション重み及びシーケンス上の属性内アテンション重みが
図10に示される。4つの代表的なヒートマップが、入力シーケンスが与えられた異なる層とヘッドで示され、(a)と(b)は、時間レベルバスケットアテンションの2つの異なる層(層1と層4)からのアテンションの重みであり、(c)と(d)は、最初の属性内層の2つの異なるヘッドからのものである。(a)及び(b)では、x軸はバスケットシーケンスの位置インデックスであり、y軸は時間ステップである。例えば、16ヶ月目の行では、時間レベルアテンションモジュールは、16ヶ月目まで位置インデックスを有するバスケットを考慮する。(a)及び(b)から、アテンションが異なる層で変動することを示す。層4における重みは、最近のアイテムに重点を置いているが、層1のウェイトは、以前のすべての履歴により均等にアテンドしている。これは、異なる時間パターンを捕捉するためにより多くの層をスタックする利点を示している。(c)及び(d)では、図中の各グリッドは2つの入力特徴間の相互作用を表している。(c)及び(d)から、アテンションの重みは異なるヘッド間で変動し、モジュールは意味のある特徴相互作用を捕捉することが観察された。例えば、(c)では、相互作用特徴値<“Foreigner index”: NO,“Customer’s Country residence”: ES>に対応する位置(11,1)(赤四角で印)は、銀行がスペインに本拠を置いており、実際にスペインに住む顧客は外国人ではないため意味がある。(d)では、位置(9,5)は、相互作用特徴値<“Customer relation type”: active, “New customer Index”: 1>に対応する。これはまた、新規顧客とアクティブ顧客の相関が高いことが多いため、意味がある。これらの観察は、マルチヘッドアテンションの有用性を例示している。
【0070】
コンピューティングデバイス200のようなコンピューティングデバイスのいくつかの例は、1つ以上のプロセッサ(例えば、プロセッサ210)によって動作するときに、1つ以上のプロセッサに方法400のプロセスを実行させ得る実行可能コードを含む非一時的な有形機械可読媒体を含んでもよい。方法400のプロセスを含み得る機械可読媒体のいくつかの一般的な形態は、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、任意の他の磁気媒体、CD-ROM、任意の他の光学媒体、パンチカード、紙テープ、穴のパターンを有する任意の他の物理媒体、RAM、PROM、EPROM、FLASH-EPROM、任意の他のメモリチップ又はカートリッジ、及び/又はプロセッサ又はコンピュータが読むように適合される任意の他の媒体である。
【0071】
発明の態様、実施形態、実装、又は用途を例示するこの説明及び添付の図面は、限定的なものと解釈されるべきではない。様々な機械的、組成的、構造的、電気的、及び動作上の変更は、この説明及び特許請求の範囲の精神及び範囲から逸脱することなく行われてもよい。いくつかの例では、本開示の実施形態を不明瞭にしないために、周知の回路、構造、又は技法が詳細に示されていないか、又は記載されていない。2つ以上の図の類似の数字は、同じ又は同様の要素を表す。
【0072】
この説明では、本開示と矛盾しないいくつかの実施形態を記載する特定の詳細が明記されている。実施形態の完全な理解を提供するために、多数の詳細が明記されている。いくつかの実施形態は、これらの特定の詳細の一部又は全部がなくても実施され得ると当業者に明らかであろう。本明細書に開示される特定の実施形態は、例示的であるが、限定的ではないことを意味する。当業者は、本明細書に具体的に記載されていないが、本開示の範囲及び精神内にある他の要素を認識してもよい。追加的に、不必要な繰り返しを回避するために、1つの実施形態に関連して示され、記載される1つ以上の特徴は、他の方法で具体的に記載されないいか、又は1つ以上の特徴が一実施形態を非機能的にする場合を除いて、他の実施形態に組み込まれてもよい。
【0073】
例示的な実施形態が示され記載されたが、広範囲の修正、変更及び置換が、前述の開示において企図され、いくつかの例では、実施形態のいくつかの特徴は、他の特徴の対応する使用なしに用いられてもよい。当業者であれば、多くの変形、代替、及び修正を認識するであろう。したがって、本発明の範囲は、以下の特許請求の範囲によってのみ限定されるべきであり、特許請求の範囲は、本明細書に開示された実施形態の範囲と一致する方式で広く解釈されることが適切である。