エンベディング
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
ユーザーが自分の好きなメニューを入力すると、好みに合いそうな類似メニューを提案してくれる、おすすめ料理アプリを開発しているとします。あなたは、料理の類似性を予測できる機械学習(ML)モデルを開発し、質の高いおすすめができるアプリにしたいと考えています(例: 「パンケーキがお好きでしたら、クレープをおすすめします」)。
モデルをトレーニングするために、ボルシチ、ホットドッグ、サラダ、ピザ、シャワルマなど、人気のあるメニュー 5,000 品目を集めたデータセットを作成します。
図 1. 料理のデータセットに含まれるメニュー項目のサンプル。
データセット内の各メニュー項目をワンホット エンコーディングで表現する meal
の特徴量を作成します。エンコードとは、モデルをトレーニングするために、データの初期の数値表現を選択するプロセスを指します。
図 2. ボルシチ、ホットドッグ、シャワルマのワンホット エンコーディング。
各ワンホット エンコーディングのベクトルは長さ 5,000 で、データセット内の各メニュー項目に対応する 1 つのエントリを含みます。図中の省略記号は、表示されていない 4,995 のエントリを示しています。
スパースデータ表現の注意点
これらのワンホット エンコーディングを確認すると、このデータ表現にはいくつかの問題があることがわかります。
- 重みの数。入力ベクトルが大きいと、ニューラル ネットワークにとって膨大な数の重みが必要になります。ワンホット エンコーディングに M 個のエントリがあり、入力後のネットワークの最初のレイヤに N 個のノードがある場合、モデルはそのレイヤに対して MxN 個の重みをトレーニングしなければなりません。
- データポイントの数。モデルの重みが多いほど、効果的なトレーニングを行うためには、より多くのデータが必要になります。
- 計算量。重みが多いほど、モデルをトレーニングし、使用するために必要な計算量も増加します。ハードウェアの能力を超えてしまう可能性も高くなります。
- メモリの量。モデルの重みが多いほど、それをトレーニングして提供するアクセラレータに必要なメモリも増加します。これを効率よくスケーリングするのは非常に困難です。
- オンデバイス機械学習(ODML)の対応の難しさ。ML モデルをサーバーなどで提供するのではなく、ローカル デバイス上で実行したいと考えている場合は、モデルを小さくすることに重点を置き、重みの数を減らす必要があります。
このモジュールでは、このような問題に対処するために、スパースデータの低次元表現であるエンベディングを作成する方法を学びます。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-05-20 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-05-20 UTC。"],[],[]]