Представьте, что вы разрабатываете приложение с рекомендациями по питанию, в которое пользователи вводят свои любимые блюда, а приложение предлагает похожие блюда, которые им могут понравиться. Вы хотите разработать модель машинного обучения (ML), которая сможет предсказывать сходство продуктов питания, чтобы ваше приложение могло давать высококачественные рекомендации («Поскольку вы любите блины, мы рекомендуем блины»).
Чтобы обучить свою модель, вы собираете набор данных из 5000 популярных блюд, включая борщ , хот-дог , салат , пиццу и шаурму .
Вы создаете объект meal
, который содержит представление каждого блюда в наборе данных в горячем коде .
Подводные камни разреженных представлений данных
Просматривая эти горячие кодировки, вы замечаете две ключевые проблемы с таким представлением данных.
- Количество весов. Большие входные векторы означают огромное количество весов для нейронной сети . С M записями в вашей горячей кодировке и N узлами в первом слое сети после ввода модель должна обучить веса MxN для этого слоя. Большое количество весов вызывает дополнительные проблемы:
- Количество точек данных. Чем больше весов в вашей модели, тем больше данных вам нужно для эффективного обучения.
- Объем вычислений. Чем больше весов, тем больше вычислений требуется для обучения и использования модели. Превысить возможности вашего оборудования легко.
- Объем памяти. Чем больше весов в вашей модели, тем больше памяти требуется ускорителям, которые ее обучают и обслуживают. Эффективно масштабировать это очень сложно.
- Сложность поддержки машинного обучения на устройстве (ODML) . Если вы надеетесь запустить свою модель машинного обучения на локальных устройствах (а не обслуживать их), вам нужно будет сосредоточиться на уменьшении размеров вашей модели и уменьшении количества весов.
- Отсутствие значимых связей между векторами . Векторные значения в горячих кодировках продуктов питания не предоставляют никакой значимой информации о сходстве продуктов питания. Математически индекс 1 («хот-дог») ближе к индексу 2 («салат»), чем к индексу 4999 («шаурма»), хотя хот-дог больше похож на шаурму (оба содержат мясо и хлеб), чем на салат. .
В этом модуле вы узнаете, как создавать внедрения — низкоразмерные представления разреженных данных, которые решают обе эти проблемы.