Этот пост представляет собой краткий обзор этой статьи от сотрудников Google Пола Ковингтона, Джея Адамса и Эмре Саргина.

Нейронные сети, машинное обучение, ИИ, глубокое обучение. Это одни из наиболее часто используемых модных словечек в технологическом и деловом духе прямо сейчас, и на то есть веские причины. Необработанный объем данных, которые люди производят каждый год, стремительно растет, поскольку компьютеры охватывают все больше и больше людей и интегрируются со все большим количеством устройств (этот блог меркнет по сравнению с тем, что пишет мой умный холодильник). Этот взрыв данных сравнивают с нефтяным бумом 19-го и 20-го веков из-за быстрой монетизации этого нового природного ресурса. В настоящее время некоторые из самых ценных фирм в мире, такие как Facebook и Google (или, я думаю, Meta и Alphabet?!?), предлагают свои продукты бесплатно благодаря своей способности использовать прибыль от данных, которые они получают о людях, использующих их платформу. Надлежащий сбор, обработка и анализ данных о клиентах имеют решающее значение для любой фирмы в 21 веке, но для таких компаний, как Google, это основа их бизнеса.

Нейронный Что?

В этом посте будет специально рассмотрено, как Google реализует нейронные сети в системе рекомендаций Youtube, и в качестве предупреждения будет… жаргон. Большую часть этого жаргона я буду определять по мере появления, но в этом посте предполагается, что вы уже знаете самые основы того, что такое нейронная сеть и как она работает. Если вы уже знаете основы, пропустите абзац ниже, а если нет, я настоятельно рекомендую эту короткую серию от ютубера 3Blue1Brown. Тем не менее, для тех из вас, кто распечатал этот пост в блоге и только сейчас начинает читать его в самолете, потея, глядя на стоимость Wi-Fi в полете, я скажу следующее.

Нейронные сети — это модели машинного обучения, которые в некоторой степени имитируют нейроны в человеческом мозгу. Нейронные сети могут принимать неструктурированные данные, такие как необработанные изображения и видео, и выполнять такие действия, как в этом кратком примере, решать задачи бинарной классификации. Скажем, определить, изображена ли на картинке кошка или нет. Сеть делает это, превращая входные данные в числа, называемые активациями (например, значения пикселей изображения), затем изменяя эти значения активации на нескольких взаимосвязанных слоях, пока не будет получен последний слой, в котором есть нейроны (вещь, которая содержит число между 0 и и 1) соответствующий каждому возможному классу (нейрон для «изображения кота», нейрон для «не изображения кота»). Нейрон в выходном слое с наибольшим значением (активация) — это предположение сети, к какому классу принадлежат входные данные. Вы начинаете со случайной мутации целых чисел, и каждый раз, когда модель выводит предположения для изображений в нашем наборе данных, вы сообщаете ей, в чем именно она была неверна, и она меняет способ мутации чисел на каждом этапе, чтобы лучше справляться с задачей. это компонент машинного обучения.

Youtube = некоторые очень большие данные

Есть несколько уникальных проблем, с которыми сталкиваются люди на Youtube при попытке построить рекомендательную систему, но в основном проблема заключается в том, что проблема связана с определением больших данных из учебника. Как бы то ни было, для того, чтобы система рекомендаций заработала, ей придется иметь дело с более чем 2 миллиардами пользователей в месяц и примерно 500 часов видео, загружаемых каждую минуту. Кроме того, в то время как наборы данных, хранящиеся в таблицах или электронных таблицах (структурированные данные), легко понимаются компьютерами, видео являются классическим примером неструктурированных данных, а количество различных типов видео и пользователей означает безумное разнообразие как в . Видео и пользовательские данные Youtube легко удовлетворяют классическим «трем V» больших данных.

  1. Объем: количество битов.
  2. Скорость: насколько быстро поступают данные.
  3. Разнообразие: Насколько различны все данные.

Итак, Почему нейронные сети для рекомендаций?

1. Масштаб

В статье авторы говорят о том, что многие распространенные системы рекомендаций просто не могут масштабироваться до размера, необходимого Youtube. На Youtube есть огромное количество видео, которые постоянно добавляются.

Кстати, если вы читаете статью, вы встретите слово «корпус». Это латинское слово «тело» и, к счастью, не означает, что команда Youtube использует компоненты морга для обучения своих алгоритмов. Корпус обычно относится ко всей совокупности работ определенного автора или по определенной теме, но используется в машинном обучении и обработке естественного языка людьми для обозначения всей совокупности текстов, которые их интересуют. В этой статье корпус означает полный каталог всех видео Youtube, доступных в настоящее время. В чем разница между корпусом и набором данных? Подумайте об этом так: корпус Youtube — это огромный океан каждого отдельного видео на Youtube, а набор данных — это бассейн, особая подвыборка морской воды на Youtube, которую мы будем использовать для обучения и тестирования. Давайте вернемся к нейронным сетям, прежде чем я увлекусь, и попробуем метафорическую виньетку о том, как надеть водяные крылья на нейронную сеть, когда она учится плавать в бассейне с набором данных.

2. Google просто любит нейронные сети

Авторы ссылаются на то, что одной из причин их подхода был сдвиг всей компании в сторону использования нейронных сетей, в частности, с глубоким обучением в качестве универсального решения для большинства задач машинного обучения.

Как это работает

1. Технология

Эта команда использовала Google Brain, систему с недавно открытым кодом TensorFlow в основе. Эта система идеально подходит для задач машинного обучения в Google, и она позволила им легко манипулировать архитектурой своей сети, а также обучать свою модель с помощью распределенных вычислений. Архитектура сети представляет собой предустановленную структуру, определенную инженером, и инкапсулирует, сколько слоев имеет модель, количество нейронов для каждого слоя, насколько плотно связаны слои и т. д. Термин «глубокое обучение» происходит от описания нейронных сетей со многими слои как «глубокие». Распределенные вычисления — это распространенный метод работы с большими данными, который включает в себя получение массивного набора данных и разделение работы по анализу этого набора данных между несколькими отдельными компьютерами, а затем объединение их индивидуальных ответов в один коллективный ответ.

2. Структура

Команда Youtube решила разбить эту проблему рекомендации видео пользователям на два отдельных шага, каждый из которых получит свою нейронную сеть. Первая сеть берет миллионы видео в корпусе Youtube и генерирует несколько сотен «кандидатов» для конкретного пользователя в определенное время. Вторая сеть берет этих кандидатов и ранжирует их в порядке того, насколько пользователю понравится каждое видео. Затем алгоритм отображает лучшие (n) видео пользователю в качестве рекомендаций.

3. Мыслительный процесс

В документе обсуждается теоретический подход, который команда использовала для этой задачи. Они думали о проблеме как о «экстремальной проблеме классификации нескольких классов». Проблема классификации нескольких классов — это когда у нас есть набор данных отдельных элементов, и эти элементы принадлежат одному из многих классов, и мы хотим определить, к какому классу принадлежит каждый человек, на основе особенностей этого человека. Классический пример — получение изображений рукописных цифр и обучение модели машинного обучения точному сообщению нам, какая цифра записана. Здесь 10 цифр, от 0 до 9, — это классы, которые мы пытаемся предсказать, а входные признаки — это значения яркости каждого пикселя в наших входных изображениях. Крайность возникает из-за того, что система рекомендаций пытается определить, к какому классу (тот, который пользователь хочет смотреть, и тот, который пользователь не хочет смотреть) принадлежит каждое видео на Youtube.

Обе нейронные сети учитывают как историю пользователей, так и контекст в процессе принятия решений. История пользователей — это известные предпочтения пользователей, а контекст — это время, последние рекомендации и недавние поиски пользователей.

Команда также позаботилась о том, чтобы модель использовала возраст видео в качестве входных данных, потому что добавление его в качестве функции не только повысило производительность системы рекомендаций, но и продвигало новый и вирусный контент «чрезвычайно важно для Youtube как продукта».

4. Тестирование

Модель обучалась в автономном режиме, а затем периодически тестировалась с помощью живого A/B-тестирования на пользователях. Команда решила не использовать явные метрики рейтинга, такие как «палец вверх»/«палец вниз», в пользу неявных метрик, таких как время просмотра и завершение видео. Они сделали это, потому что объем явных данных чрезвычайно мал по сравнению с объемом неявных данных.

Они использовали «время просмотра на показ» в качестве показателя успеха в A/B-тестах, а не рейтинг кликов, как это может потребоваться в некоторых других задачах. Это было связано с тем, что на Youtube использование рейтинга кликов в качестве показателя успеха может научить модель продвигать видео-клики с яркими миниатюрами, на просмотр которых люди не тратят столько времени.

Это хорошо?

Команда Google была достаточно любезна, чтобы опубликовать этот документ, в котором рассказывается о некоторых основах их сети рекомендаций, но, конечно, у этой открытости есть предел. Они вложили много инженерных ресурсов в этот проект и не собираются просто выпускать учебник о том, как его воссоздать, или слишком много деталей о нем, чтобы их конкуренты могли использовать против них. Поэтому, хотя в конце этой статьи мы не получили каких-либо конкретных показателей или оценок, авторы говорят, что эта система с двумя нейронными сетями намного превзошла старые древовидные и линейные методы.

Нейронные сети все еще довольно новы, но все больше и больше кажется, что шумиха в отрасли заслужена, и переход всей компании Google на нейронные сети в качестве общих средств решения задач машинного обучения — это шаг в правильном направлении.