食品レコメンデーション アプリケーションを開発しているとします。 ユーザーが好みの食事の情報を入力すると、類似のメニューが提案される 目を向けます機械学習(ML)モデルを開発したい 食品の類似度を予測して、 おすすめ情報(「パンケーキが好きなので、クレープがおすすめ」)。
モデルをトレーニングするために、あなたは 食事用品(ボルシチを含む) ホットドッグ サラダ ピザ と shawarma。
![図 1. 5 つの食品のイラストのセット。から時計回り
左上: ボルシチ、ホットドッグ、サラダ、ピザ、シャワルマ。](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/food_images.png?authuser=5&hl=ja)
次の値を含む meal
特徴を作成するとします。
ワンホット エンコード
ラベルが生成されます。
![図 2. 上: ボルシチのワンホット エンコーディングの可視化。
ベクトル [1, 0, 0, 0, ..., 0] が 6 つのボックスの上に表示されている。
左から順に並べます
ベクトル数で表します。左から右にボックス
次の画像が含まれている: ボルシチ、ホットドッグ、サラダ、ピザ、[空]、
Shawarma。中間: ホットドッグのワンホット エンコーディングの可視化。
ベクトル [0, 1, 0, 0, ..., 0] が、それぞれ 6 つのボックスの上に表示されている
ベクトル番号のいずれかで左から右に揃えられます。箱には
Borscht の可視化と同じ画像を左から右に配置しました。
ご覧ください。下: シャワルマのワンホット エンコーディングの可視化。「
ベクトル [0, 0, 0, 0, ..., 1] が 6 つのボックスの上に表示され、それぞれが配置されている
いずれかのベクトル番号で表します。箱には
左から右にボルシチとホットドッグと同じ画像
可視化です。](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/food_images_one_hot_encodings.png?authuser=5&hl=ja)
スパースデータ表現の注意点
これらのワンホット エンコーディングを確認すると、このエンコーディングには 2 つの大きな問題があることに データの表現です。
- 重みの数。入力ベクトルが大きいと、入力ベクトルが
重み
(ニューラル ネットワークの場合)
ワンホット エンコーディングに M エントリ、
最初のレイヤに配置されるため、モデルはトレーニングと
そのレイヤの重みを M×N とします。重みが多数あると、さらに問題が発生します。
- データポイントの数。モデルの重みが大きいほど、より多くのデータが 必要があります。
- 計算の量。重みが大きいほど、必要な計算量が多くなる モデルをトレーニングして使用します組織の能力を あります。
- メモリ容量。モデルの重みが大きいほど、処理できるメモリも多くなります。 トレーニングおよびサービングするアクセラレータに 必要ですこれをスケールアップして 効率的に行うのは困難です
- サポートが困難 オンデバイス機械学習(ODML)。 ML モデルを(サービス提供ではなく)ローカル デバイスで実行したい場合 モデルのサイズを小さくすることに重点を置く必要があり、 重みの数を減らします。
- ベクトル間に意味のある関係がない。モデルのベクトル値には、 食品のワンホット エンコーディングでは、食品の 類似しています。数学的に、インデックス 1(「ホットドッグ」)は インデックス 4999(「shawarma」)よりもインデックス 2(「salad」)に近い 犬は、サラダというよりもシャワルマ(肉とパンの両方を含む)に似ています。
このモジュールでは、低次元のエンベディングを作成する方法について学習します。 スパースデータを表現することで、これらの問題の両方に対処します。