Битва кибершефов: как нейросети учатся готовить
Что происходит?
Представьте себе мир, в котором вам не нужно тратить время на поиск рецептов, изучение принципов правильного питания и изнурительное пролистывание меню ресторана. Все это сможет делать искусственный интеллект, который проанализирует ваши предпочтения и пищевые аллергии, учтет, хотите вы похудеть или набрать вес, и даже заранее продумает, как снизить количество отходов. Именно такого «умного» помощника создали в Эстонии.
Первоначально стартап Yummy должен был стать очередным сервисом по доставке еды. В итоге получился сервис, который умеет не просто адаптировать рецепты, но и генерировать возможный внешний вид нового блюда. Разработка уже заинтересовала нескольких крупных бизнес-ангелов — Yummy смогли привлечь $3,6 млн.
Как нейросеть изменит опыт пользователя
Сейчас стандартный подход к выбору еды выглядит так: клиент выбирает нужную категорию и настраивает фильтры — цену товара, ингредиенты или производителя. Обычно, каждый раз приходится все настраивать заново. Даже если вы просто перешли из категории «Бакалея» в «Молоко».
Нейросеть позволит максимально кастомизировать выбор, сократив количество действий. Вероятно, можно будет сделать полноценное голосовое управление. Например, вы говорите: «Я хочу подобрать диетический недельный рацион, в котором будет пять блюд из рыбы. А еще я ненавижу рис». Чтобы подобрать что-то подобное вручную, понадобится около 20 минут. Нейросеть потратит пару секунд.
Зачем это нужно?
Генерация фьюжн-рецептов
Хотя эстонский стартап довольно далеко продвинулся, сама идея не уникальна. Поскольку кулинарные рецепты — это алгоритмы, многие разработчики задумывались о том, как автоматизировать процесс готовки и создания новых блюд. Да, возможно роботы пока что не так хороши в оценке вкусовых сочетаний. Зато один ИИ может заменить сразу нескольких шеф-поваров, устроивших «мозговой штурм». Дело в том, что для создания нового фьюжн-рецепта может понадобиться, например, одновременное знание греческой и индонезийской кухонь. Такими навыками обладают далеко не все шефы и уж тем более не повара-любители. ИИ же легко справится с подобной задачей.
Сокращение отходов
У некоторых людей и правда есть суперспособность придумывать гениальные блюда из двух морковок и одного яйца. Но большинство из нас, увидев почти пустой холодильник, скорее закажут пиццу — а одинокие ингредиенты отправятся в мусоропровод через пару дней. Кулинарные ИИ умеют придумывать рецепты из всего, а это значит, что они смогут сделать наш быт экологичнее (и экономнее).
Улучшение сервиса
Вероятно, больший интерес кулинарные ИИ вызовут у владельцев общепитов. Одно дело — придумать, чем удивить друзей на празднике. Совсем другое — запустить кафе, в котором блюда никогда не повторяются, а продукты не пропадают, поскольку робот анализирует остатки и генерирует рецепты рационально. Можно подойти к проблеме и с другой стороны. Пусть блюда придумывают люди, а ИИ анализирует вкусовые предпочтения клиентов и подсказывает, какие ингредиенты заказать, а какие позиции стоит убрать из меню.
Роботы и правда вкусно готовят?
Проблема в том, что пока что мы не можем объяснить нейросети, что такое «вкусно», поскольку это понятие относится к квалиа — непередаваемой информации. Восприятие вкуса субъективно: например, одни обожают оливки, других же выворачивает от одного их запаха. А это значит, что разработчик не сможет даже алгоритмизировать вкусы — например, задав заранее «удачные» и «неудачные» сочетания продуктов.
Правда, есть способ, который немного помогает обойти эту проблему — роботы могут придумывать блюда не из отдельных ингредиентов, а сочетая фрагменты рецептов. Это снижает вероятность генерации абсолютно неудачных вариантов, хотя и не до конца.
Как ИИ придумывает рецепты?
Это зависит от того, какой подход использует нейросеть. Некоторые энтузиасты даже тестируют разные ИИ и устраивают своеобразную «битву шефов», сравнивая на вкус блюда, приготовленные по рецепту робота.
TextGenRNN
Это Python-библиотека, которая использует рекуррентную нейронную сеть (RNN) для генерации текста и работы с последовательными данными. Да, она не заточена конкретно под рецепты, но может с ними работать. У таких нейросетей есть серьезный недостаток — они постепенно «забывают» первоначальные вводные. Поэтому, чем больше данных вы введете, тем выше вероятность, что в конце речь пойдет уже не о борще, а о развитии сельского хозяйства.
Тем не менее, вот что предлагает приготовить такой ИИ:
- смешайте оливкое масло и самбал олек (это индонезийский соус);
- нарежьте огурец кубиками;
- сварите макароны согласно инструкции на упаковке;
- замаринуйте лосось в бальзамическом уксусе, добавив в маринад лук, чеснок и масло. Затем запеките его в духовке до золотистой корочки;
- вымойте и разрежьте помидоры пополам.
И такое блюдо действительно приготовили. По словам дегустатора, получилось вкусно, а соус из оливкового масла и самбала действительно неплох.
GPT-2
Это генеративный предварительно обученный трансформатор. То есть такая нейросеть умеет угадывать последующие слова в предложении — первую фразу вводит сам пользователь. Такой подход в последнее время стал популярнее, чем RNN. У GPT-2 получалось генерировать целые страницы вполне связного текста. Сейчас, кстати, появилась уже GPT-3. Она умнее, но использует все тот же подход.
Вот, что предложила приготовить GPT-2:
«Смешайте помидоры, кинзу, томатную пасту, сметану, сок лайма, соль, черный перец, тмин, порошок чили и кайенский перец в большой миске. Замаринуйте овощи на 30 минут. Нагрейте 12-дюймовую антипригарную сковороду на средне-высоком огне. Добавьте бекон, лук и перцовые хлопья. Жарьте все это 3 минуты, до тех пор, пока бекон не станет хрустящим. Затем добавьте сметану, а потом говяжий фарш. Готовьте, помешивая мясо деревянной ложкой, — достаточно 3-4 минут. Затем смешайте все вместе».
Тестировщику нейросети блюдо понравилось.
Рецепт от нейросети «Сбера»
Популярная русскоязычная нейросеть на GPT-3 — ruGPT-3 Large. Ее создали разработчики из «Сбера», обучив нейросеть на датасете из 600 Гб текстов. РБК Тренды попробовали создать необычный рецепт с помощью этой нейросети. Вот что у нас вышло по запросу «Нарезать чиабатту и потереть сыр»:
«Масло растопить, чили порубить ножом. Разогреть духовку до 180 градусов. Сыр натереть на терке. Растопить в отдельной сковороде сливочное масло, добавить к нему сахар, сухую цедру и острый перец. Тушить, помешивая, около трех минут до карамельного цвета.
В другой сковороде разогреть оливковое масло, выложить туда тертый сыр и готовить, помешивая, около пяти минут. Посыпать чили, выложить сверху на него расплавленный сыр и порубить оставшийся перец. Выложить все это в форму для запекания и залить сливками. Запекать 5-10 минут, чтобы сыр расплавился. Подавать с шариком из чиабатты».
Отметим, что мы запускали нейросеть всего один раз — неплохой результат получился уже с первой попытки. На наш взгляд, блюдо может понравиться любителям острого.
Рецепт от «Балабобы» — нейросети «Яндекса»
Балабоба работает на языковой модели YaLM (Yet another Language Model). В целом, принцип генерации текста у нее такой же, как и у GPT-3. Нейросеть умеет писать тексты в разных стилях — можно заранее выбрать «Инструкции» или даже «Народные мудрости». Рецепты тут тоже есть — Балабоба предлагает перечислить ингредиенты, из которых вы хотите приготовить блюдо.
Мы выбрали морковь и яйцо, которые упоминали ранее в тексте:
«Из морковки и яйца можно сделать очень вкусный салат. Морковь натрите на крупной терке, добавьте яйца, мелко нарезанный лук, зелень, майонез. Перемешайте, украсьте овощами или зеленью».
Нейросеть справилась с четвертой попытки. Рецепт получился довольно простым, а еще Балабоба не уточнил, в каком виде в салат нужно добавить яйцо.
Это и правда важно?
На самом деле, у разработчиков кулинарных ИИ есть и более важные задачи, кроме генерации фьюжн-рецептов. Например, в мире до сих пор нет единого стандарта по здоровому питанию, поскольку национальные подходы сильно разнятся, а сами гайды постоянно совершенствуются. Мощный ИИ помог бы не только объединить опыт диетологов из разных стран, но и учесть множество побочных факторов, от средней стоимости продуктов до углеродного следа, который оставляет их производство.