Сегодня мы очень рады объявить о выпуске Developer Preview версии Suggestionbox, последнего ML-in-a-Docker-контейнера от Machine Box. Это действительно потрясающая технология, поэтому, если у вас есть постоянный стол, я рекомендую вам найти место, где можно присесть.

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

Что такое ящик предложений?

Suggestionbox - это контейнер Docker, который вы можете запускать где угодно (в общедоступном облаке или в вашем собственном частном центре обработки данных), который содержит самую современную технологию машинного обучения с искусственным интеллектом, которая может узнать о ваших пользователях то, что иначе было бы трудно понять. обнаружить.

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

В отличие от облачных API, все продукты Machine Box имеют разумные фиксированные цены и готовы к запуску в гигантских масштабах. Вы можете узнать больше о Machine Box в этом блоге.

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

Пример использования 1. Предлагайте читателям новостные статьи.

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

Есть три шага для интеграции Suggestionbox с вашим собственным приложением.

Шаг 1. Создайте модель

В этом случае вы могли бы создать модель внутри окна предложений, где choices - это двадцать последних новостей, сделав такой запрос:

POST /suggestionbox/models
{
  "id": "model1",
  "name": "Story recommendations",
  "choices": [
    {
      "id": "article1",
      "features": [
        {
          "key": "title",
          "type": "text",
          "value": "Machine Box releases new box"
        }
      ] 
   },
   {
     "id": "article2",
     "features": [
       {
         "key": "title",
         "type": "text",
         "value": "Elon Musk actually an AI"
       }
     ] 
   },
   ...
  ]
}

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

Шаг 2. Сделайте прогноз

После создания модели мы можем попросить ее сделать прогноз, рассказав что-то о пользователе с помощью дополнительных функций в массиве inputs:

POST /suggestionbox/models/model1/predict
{
  "inputs": [
    {
      "key": "user_age",
      "type": "number",
      "value": "25"
    },
    {
      "key": "user_interests",
      "type": "list",
      "value": "ml,golang,music,cats"
    }
  ]
} 

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

Мы получим такой ответ:

{
  "choices": [
    {
      "id": "article3",
      "score": 0.60,
      "reward_id": "5a71d78495864f25c02089e154bc2e30"
    },
    {
      "id": "article1",
      "score": 0.30,
      "reward_id": "5a71d7845587d4b715aa3a0e95842dc8"
    },
    {
      "id": "article2",
      "score": 0.10,
      "reward_id": "d789586445587d89e154cbc2e34b715a"
    }
  ]
}

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

Шаг 3: наградите модель

Предполагая, что мы делаем это, и пользователь нажимает на новость, мы должны вознаградить модель, сделав следующий запрос - используя reward_id из успешно предсказанного выбора:

POST /suggestionbox/models/model1/rewards
{
  "reward_id": "5a71d78495864f25c02089e154bc2e30",
  "value": 1
}

Это позволит Suggestionbox знать, что он что-то сделал правильно и что он должен извлечь из этого урок.

Поле value можно использовать для взвешивания наград, но в большинстве случаев подходит 1.

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

Пример использования 2: выбор лучшего изображения

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

Мы могли бы сделать это, создав модель, в которой выбраны фотографии еды:

Suggestionbox использует ту же технологию, что и Tagbox, для понимания изображений, поэтому вы также можете использовать изображения (через URL-адрес или в кодировке Base64) в качестве функций. Да, я знаю, Дэвид Эрнандес заслуживает большого поцелуя за эту особенность!

Мы бы создали такую ​​модель, сделав следующий запрос:

POST /suggestionbox/models
{
  "id": "model2",
  "name": "Sushi pics",
  "choices": [
    {
      "id": "california-roll",
      "features": [
        {
          "key": "pic",
          "type": "image_url",
          "value": "https://url.com/to/pic1.jpg"
        }
      ] 
   },
   {
     "id": "sashimi",
     "features": [
       {
         "key": "pic",
         "type": "image_url",
         "value": "https://url.com/to/pic2.jpg"
       }
     ] 
   },
   ...
  ]
}

Затем мы могли бы попросить модель делать прогнозы на основе того, что мы знаем о пользователе.

Мы могли бы предоставить ящику предложений следующую информацию:

  • Где живет пользователь - может быть, люди в Нью-Йорке едят больше сашими?
  • Их возраст. Может быть, молодые люди предпочитают блюда из карри?
  • История их предыдущих заказов - прошлое поведение, вероятно, помогает предсказать будущее поведение
  • Диетические требования. Скорее всего, веганы не станут есть жирный сочный стейк.
  • Время заказа - вероятно, блюда на завтрак будут привлекать больше внимания утром, чем блюда на ужин позже.

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

Пример использования 3. Рекомендации по новой музыке

Сайты потоковой передачи музыки тратят много времени, пытаясь помочь пользователям открыть для себя новую музыку. Предложение делает это тривиальным при условии, что мы выбираем разумные варианты и пользовательские функции.

Один из способов решить эту проблему - создать модель со всеми жанрами музыки на выбор:

POST /suggestionbox/models
{
  "id": "model3",
  "name": "Music genres",
  "choices": [
    {
      "id": "pop"
    },
    {
      "id": "rock"
    },
    {
      "id": "metal"
    },
    {
      "id": "indie"
    },
    ...
  ]
}

Затем мы бы попросили Suggestionbox предсказать, какой жанр музыки понравится пользователю с большей вероятностью, на основе песен, которые он ранее слушал.

Обратите внимание, что нам не нужно указывать жанры, в которых находятся эти песни, Suggestionbox определит это на основе реальной истории пользователей.

Ваш вариант использования?

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

Сколько будет стоить ящик предложений?

Для разработки, интеграции и тестирования вы можете бесплатно запустить Suggestionbox (подробнее о том, как это сделать, см. Ниже).

В производственной среде для коммерческого использования вы можете запустить Suggestionbox за 99 долларов в месяц с десятью моделями, а за 499 долларов в месяц вы можете использовать их неограниченно с премиальной поддержкой.

Как я могу присоединиться к предварительной версии для разработчиков?

Вы можете бесплатно присоединиться к предварительной версии для разработчиков, запустив Suggestionbox с помощью следующей команды:

docker run -p 8080:8080 -e "MB_KEY=$MB_KEY" machinebox/suggestionbox 

Убедитесь, что вы установили переменную MB_KEY, которую вы можете бесплатно получить на странице учетной записи на веб-сайте Machine Box.

Когда предложение Suggestionbox будет запущено в производство?

Коробка готова к производству, но мы можем поработать с API на основе отзывов разработчиков, поэтому мы оставляем за собой право вносить критические изменения в течение следующих 30 дней, хотя это маловероятно.

Пожалуйста, не позволяйте этому мешать вам интегрировать Suggestionbox в свой продукт. Любые изменения, скорее всего, будут небольшими (например, имена полей) и, скорее всего, будут добавлением, а не вычитанием из API.

Что такое Machine Box?

Machine Box помещает современные возможности машинного обучения в контейнеры Docker, так что разработчики, такие как вы, могут легко включить обработку естественного языка, распознавание лиц, распознавание объектов и т. Д. В свои собственные приложения очень быстро.

Ящики созданы для масштабирования, поэтому, когда ваше приложение действительно набирает обороты, просто добавьте больше ящиков по горизонтали, до бесконечности и дальше. Да, и это намного дешевле, чем любой из облачных сервисов (а они могут быть лучше)… и ваши данные не покидают вашу инфраструктуру.

Поиграйте и дайте нам знать, что вы думаете.