Вынужденная самоизоляция стимулировала многих из нас вспомнить о своих pet-проектах или просто найти себе хобби. Кто-то увлекается радиосвязью, кто-то разрабатывает корпуса для Raspberry. Ну а кто-то занимается выпечкой. Но не простой, а с привлечением машинного обучения.
Разработчик Сара Робинсон, специалист по машинному обучению, решила испечь идеальный кекс. Но не методом проб и ошибок — этим занимались наши бабушки, а при помощи технологий. Все началось с того, что взяла 33 разных рецепта печенья, пирогов и хлеба и построила TensorFlow модель для анализа всех этих данных. Сначала целью было понять, почему хлебобулочные изделия иногда сильно крошатся и как этого можно избежать. Но в конечном итоге Сара смогла получить рецепт идеального кекса, который на самом деле является чем-то средним между печеньем и пирогом. А еще — рецепт гибрида хлеба и печенек.
От набора данных до кухонного стола
В декабре 2020 года Сара привлекла к проекту своего коллегу — сотрудника Google по имени Дейл Маркович. Вместе они и разработали гибридный рецепт. Полученная в итоге модель позволяла по введенным игредиентам определить, что получится в итоге — печенье, пирог или хлеб.
После того, как все получилось, разработчики (немного странно употреблять этот термин в применении к выпечке, правда?) решили пойти дальше. Проект масштабировали. На этот раз для анализа отобрали уже 600 рецептов. Их тщательно проанализировали для того, чтобы выделить 16 самых важных ингредиентов, которые влияют на текстуру и упругость выпечки, плюс, конечно, на вкусовые качества.
Этими ингредиентами оказались:
- дрожжи,
- мука,
- сахар,
- яйца,
- жир (любое масло),
- молоко,
- пищевая сода,
- разрыхлитель,
- яблочный уксус,
- пахта,
- банан,
- тыквенное пюре,
- авокадо,
- вода,
- масло,
- соль.
Авторы проекта при помощи новой модели составили не только список ингредиентов, но и определили правильные пропорции, которые помогают создать идеальную выпечку.
Кроме того, модель оказалась способной самостоятельно определять тип выпечки, отделяя
Для каждого из типов выпечки — печенья, пирога или хлеба модель предсказывала оптимальное количество и соотношение масла, сахара, дрожжей и яиц. А еще полученная модель давала возможность получить рецепт для гибридных блюд. Ниже — фото гибрида пирога и печенья с использованием шоколадной крошки.
Пример кода, модель и работающий сервис
Что касается TensorFlow модели, то код достаточно короткий. Для модели использовался Keras API.
model = tf.keras.Sequential([
tf.keras.layers.Dense(16, input_shape=(num_ingredients,)),
tf.keras.layers.Dense(16, activation='relu'),
tf.keras.layers.Dense(3, activation='softmax')
])
При помощи Python разработчики создали функцию, которая преобразовывает вводимые ингредиенты сначала в привычные для любителей выпечки единицы измерения (чашки, чайные ложки и т.п.), а потом — в проценты.
def get_prediction(request):
data = request.get_json()
prescaled = dict(zip(columns, data))
scaled = scale_data(prescaled)
# Send scaled inputs to the model
prediction = predict_json('gcp-project-name', 'baking', scaled)
# Get the item with the highest confidence prediction
predicted_ind = np.argmax(prediction)
label_map = ['Bread', 'Cake', 'Cookies']
baked_prediction = label_map[predicted_ind]
confidence = str(round(prediction[predicted_ind] * 100))
if baked_prediction == 'Bread':
emoji = "It's bread!"
elif baked_prediction == 'Cake':
emoji = "It's cake!"
elif baked_prediction == 'Cookies':
emoji = "It's cookies!"
return "{} {}% confidence".format(emoji, confidence)
Вот, что получается в итоге.
Ну а само приложение, точнее, веб-сервис, доступен здесь. Так что опробовать его можно самостоятельно.
Тестовые испытания
Гибрид пирога и печенья
Проектом заинтересовались другие разработчики, некоторые решили опробовать результаты работы модели на практике. Один из рецептов, который проверили — «пирог-печенье».
Ингредиенты и процедура приготовления были соблюдены. Например, модель показала, что оптимальной температурой для добавляемого масла является 18.33 °C. Конечно, за десятыми и сотыми долями градуса никто не следил, но условие в 18°C было соблюдено.
Единственное, что пришлось изменить — размеры формы для выпечки. Требовалась 6-дюймовая форма, но такой не было, так что обошлись 9-дюймовой. В общем, после того, как «пирог-печенье» было выпечено, ему дали чуток остыть и опробовали. По словам тестировщиков, текстура выпечки была необычной, но вкус — просто отличный. Все, кто попробовали эту вещь, одобрили ее.
Гибрид хлеба и печенья
Второй опробованный рецепт — это «хлебопеченье». С ним пришлось повозиться чуть дольше, но в итоге все получилось. Рецепт, предложенный моделью, разделен на две части — собственно, хлеб и печенье. Тесто получилось гораздо более густым, чем обычно требуется для печенья, напоминая тесто для хлеба.
Но в итоге все оказалось вкусным, текстура напомнила овсяное печенье, хотя чуть мягче. В рецепте использовались дрожжи, так что и на хлеб чем-то похоже.
В целом, эксперимент оказался удачным — машинное обучение и предиктивная модель помогли создать необычные блюда, которые понравились всем, кто их попробовал.