Stay organized with collections
Save and categorize content based on your preferences.
Imagine you're developing a food-recommendation application, where
users input their favorite meals, and the app suggests similar meals
that they might like. You want to develop a machine learning (ML) model
that can predict food similarity, so your app can make high quality
recommendations ("Since you like pancakes, we recommend crepes").
To train your model, you curate a dataset of 5,000 popular
meal items, including borscht,
hot dog,
salad,
pizza,
and shawarma.
Figure 1. Sampling of meal items included in the food dataset.
You create a meal feature that contains a
one-hot encoded
representation of each of the meal items in the dataset.
Encoding refers to the process of
choosing an initial numerical representation of data to train the model on.
Figure 2. One-hot encodings of borscht, hot dog, and shawarma.
Each one-hot encoding vector has a length of 5,000 (one entry for each
menu item in the dataset). The ellipsis in the diagram represents
the 4,995 entries not shown.
Pitfalls of sparse data representations
Reviewing these one-hot encodings, you notice several problems with this
representation of the data.
Number of weights. Large input vectors mean a huge number of
weights
for a neural network.
With M entries in your one-hot encoding, and N
nodes in the first layer of the network after the input, the model has to train
MxN weights for that layer.
Number of datapoints. The more weights in your model, the more data you
need to train effectively.
Amount of computation. The more weights, the more computation required
to train and use the model. It's easy to exceed the capabilities of your
hardware.
Amount of memory. The more weights in your model, the more memory that
is needed on the accelerators that train and serve it. Scaling this up
efficiently is very difficult.
Difficulty of supporting
on-device machine learning (ODML).
If you're hoping to run your ML model on local devices (as opposed to serving
them), you'll need to be focused on making your model smaller, and will want
to decrease the number of weights.
In this module, you'll learn how to create embeddings, lower-dimensional
representations of sparse data, that address these issues.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-12-16 UTC."],[[["This module explains how to create embeddings, which are lower-dimensional representations of sparse data that address the problems of large input vectors and lack of meaningful relations between vectors in one-hot encoding."],["One-hot encoding creates large input vectors, leading to a huge number of weights in a neural network, requiring more data, computation, and memory."],["One-hot encoding vectors lack meaningful relationships, failing to capture semantic similarities between items, like the example of hot dogs and shawarmas being more similar than hot dogs and salads."],["Embeddings offer a solution by providing dense vector representations that capture semantic relationships and reduce the dimensionality of data, improving efficiency and performance in machine learning models."],["This module assumes familiarity with introductory machine learning concepts like linear regression, categorical data, and neural networks."]]],[]]