手動で組み合わせた特徴データを比較する代わりに、特徴データをエンベディングという表現に減らしてから、エンベディングを比較できます。エンベディングは、特徴データ自体に対して教師ありディープ ニューラル ネットワーク(DNN)をトレーニングすることによって生成されます。エンベディングは、特徴データをエンベディング空間内のベクトルにマッピングします。通常、エンベディング空間は、特徴データセットの潜在的な構造をキャプチャする方法で、特徴データよりもディメンションが少なくなります。同じユーザーによって視聴された YouTube 動画など、類似サンプルのエンベディング ベクトルは、エンベディング空間で近接して配置されます。類似度の測定では、この「類似性」を使用してサンプルのペアの類似性を定量化する方法を見ていきます。
教師あり学習については、類似度の測定値を作成するためだけに説明しています。類似性メジャーは、手動または管理対象のいずれであるかに関係なく、アルゴリズムによって教師なしクラスタリングを実行します。
手動による対策と監視対応方式の比較
次の表に、要件に応じて、手動または管理対象の類似性メジャーを使用するタイミングを示します。
要件 | 手動 | 管理対象 |
---|---|---|
相関関係にある特徴を重複して排除する。 | いいえ、特徴間の相関関係を個別に調査する必要があります。 | はい、DNN によって冗長な情報が排除されます。 |
計算された類似性に関する分析情報を提供します。 | ○ | いいえ、エンベディングは解読できません。 |
特徴が少ない小さなデータセットに適しています。 | はい。いくつかの機能を使用して手動メジャーを設計するのは簡単です。 | いいえ、小規模なデータセットでは、DNN に必要なトレーニング データが不足しています。 |
多くの機能を備えた大規模なデータセットに適しています。 | いいえ。複数の特徴から冗長な情報を手動で排除して組み合わせることは非常に困難です。 | はい、DNN は冗長な情報を自動的に排除して、機能を結合します。 |
管理された類似性の測定プロセス
次の図は、教師あり類似度メジャーを作成する方法を示しています。
最初のステップはすでに学習済みです。このページでは以降のステップについて説明し、以降のページでは残りのステップについて説明します。
トレーニング ラベルに基づいて DNN を選択
入力とラベルの両方と同じ特徴データを使用する DNN をトレーニングすることにより、特徴データをエンベディングに減らす。たとえば、住宅データの場合、DNN はそれらの特徴(価格、サイズ、郵便番号など)を使用して、それらの特徴自体を予測します。特徴データを使用して同じ特徴データを予測するために、DNN は入力特徴データをエンベディングに入力する必要があります。類似度を計算するために、これらのエンベディングを使用します。
入力データ自体を予測することで入力データのエンベディングを学習する DNN は、オートエンコーダと呼ばれます。オートエンコーダの隠しレイヤは入力レイヤと出力レイヤよりも小さいため、オートエンコーダは入力特徴データの圧縮表現を強制的に学習します。DNN をトレーニングした後、最後の隠しレイヤからエンベディングを抽出し、類似度を計算します。
エンベディングを生成する最も簡単な方法は、オートエンコーダです。ただし、類似性を判断するうえで特定の特徴が他の特徴よりも重要な場合、オートエンコーダは最適な選択ではありません。たとえば、自社広告では「郵便番号」よりも「価格」のほうが重要であるとします。このような場合は、重要な特徴のみを DNN のトレーニング ラベルとして使用します。この DNN は、すべての入力特徴を予測するのではなく、特定の入力特徴を予測するため、予測子 DNN といいます。特徴をラベルとして選択するには、次のガイドラインを使用します。
損失は数値特徴の計算と解釈が容易であるため、ラベルはカテゴリ特徴よりも数値特徴を優先します。
カーディナリティを持つカテゴリ特徴は \(\lesssim\) ラベルとして使用しないでください。このようにしても、DNN はカーディナリティの低いカテゴリラベルを簡単に予測できるため、DNN が入力データをエンベディングに縮小することを強制されることはありません。
ラベルとして使用する特徴を DNN への入力から削除します。そうしないと、DNN は出力を完全に予測します。
ラベルの選択に応じて、結果の DNN はオートエンコーダ DNN または予測器 DNN のいずれかになります。
DNN の損失関数
DNN をトレーニングするには、次の手順で損失関数を作成する必要があります。
- DNN の出力ごとに損失を計算します。次の出力の場合:
- 数値の場合、平均二乗誤差(MSE)を使用します。
- 等価なカテゴリ。ログ損失を使用します。ログの損失は、ライブラリ関数を使用して計算できるため、自分で実装する必要はありません。
- 多価カテゴリ。softmax のクロス エントロピー損失を使用します。softmax クロス エントロピー損失を自分で実装する必要はありません。ライブラリ関数を使用して計算できます。
- すべての出力の損失を合計して、合計損失を計算します。
損失を合計するときは、各特徴が損失に比例して反映されるようにします。たとえば、カラーデータを RGB 値に変換すると、出力が 3 つになります。ただし、3 つの出力の損失を合計すると、色の損失が他の特徴の 3 倍の重みで重み付けされます。代わりに、各出力に 1/3 を掛けます。
オンライン システムでの DNN の使用
オンライン機械学習システムでは、新しい入力データが連続してストリームされます。新しいデータで DNN をトレーニングする必要があります。ただし、DNN をゼロから再トレーニングする場合、DNN はランダムな重みで初期化されるため、エンベディングは異なります。代わりに、常に既存の重みで DNN をウォームスタートし、新しいデータで DNN を更新します。