Topik jaringan saraf menggairahkan hati pengembang, ilmuwan, dan pemasar bukan untuk tahun pertama, tetapi bahkan untuk beberapa dekade pertama. Tapi kita semua tahu bahwa sering dalam proyek-proyek berdasarkan neuron ada tanggal besar sederhana dan buletin pemasaran, meningkat dengan latar belakang header clickbait. Kami mencoba menghindari cerita seperti itu dan mengembangkan proyek neuropizza berdasarkan studi tentang kompatibilitas molekul bahan, analisis 300 ribu resep dan kreativitas murni. Di bawah potongan Anda dapat mengetahui detailnya dan menemukan tautan open source di GitHub.

Bisakah mobil membuat sesuatu yang baru atau dibatasi oleh apa yang diketahuinya? Sejauh ini, tidak ada yang tahu jawaban untuk pertanyaan ini. Tapi sekarang, kecerdasan buatan menyelesaikan masalah menganalisis data non-standar besar dengan sempurna.
Begitu tiba di Dodo Pizza, mereka memutuskan untuk melakukan percobaan: untuk mensistematisasikan dan menggambarkan secara struktural apa yang dianggap kacau dan subyektif di seluruh dunia - sesuai selera. Kecerdasan buatan membantu menemukan kombinasi bahan paling gila, yang, meskipun sifatnya tidak biasa, ternyata terasa enak bagi kebanyakan orang.
Rekan saya dan saya bertindak sebagai spesialis jaringan saraf dari MIPT dan Skoltech dalam proyek yang tidak biasa ini. Kami telah mengembangkan dan melatih jaringan saraf yang dapat memecahkan masalah menghasilkan resep dapur. Dalam perjalanan pekerjaan, lebih dari 300.000 resep dianalisis, serta hasil penelitian ilmiah tentang kompatibilitas molekul bahan. Berdasarkan hal ini, AI belajar untuk menemukan hubungan yang tidak jelas antara bahan-bahan dan memahami bagaimana mereka bergabung satu sama lain dan bagaimana kehadiran masing-masing mempengaruhi kompatibilitas semua yang lain.
Bagaimana kami masuk ke dalam proyek Dodo AI-pizza
Segala sesuatu, seperti biasanya terjadi, terjadi secara tiba-tiba. Ada periode waktu singkat sebelum latihan musim panas, kami baru saja menyelesaikan kursus Pembelajaran Mendalam, membela proyek dan mencoba beradaptasi dengan ritme studi / kehidupan yang lebih santai. Tetapi mereka tidak bisa: secara tidak sengaja bertemu dengan repost dalam permintaan pribadi dari BBDO tentang menemukan orang-orang yang bisa menulis jaringan saraf untuk menghasilkan resep baru. Lebih khusus: resep pizza baru untuk Dodo. Tanpa ragu, kami memutuskan bahwa kami ingin mencoba.
Ketika proyek baru saja dimulai, kami tidak sepenuhnya memahami apakah akan melangkah lebih jauh, apakah akan ada implementasi praktis, kami hanya tertarik pada tugas. Banyak redbowl dan internet cepat membantu dan memajukan kami. Melihat ke belakang, kami memahami bahwa beberapa hal dapat dilakukan secara berbeda, tetapi ini normal.
Bagaimanapun, setelah beberapa minggu model kerja jaringan saraf siap, tahap peluncurannya dalam produksi dimulai. Kami sangat beruntung bahwa proyek ini tidak dapat disebut industri atau teknis dalam arti kata-kata ini. Status percobaan lebih cocok untuknya.
Menggunakan model kami, berbagai varian resep pizza dihasilkan, yang kami sampaikan ke tangan koki Dodo yang sangat keren untuk menjalankan tes produk. Momen mencicipi pizza di Dodo R&D Lab adalah titik penting dalam hal mengenali nilai dari pekerjaan yang kami lakukan. Sangat menyenangkan melihat produk yang dijual. Memang, seringkali semua pengembangan dan solusi adalah hal yang agak fana, tidak berwujud, dan di sini hasilnya tidak hanya dapat disentuh, tetapi juga terasa.
Kumpulan data primer dan cabai
Model apa pun membutuhkan data untuk berfungsi. Karena itu, untuk melatih AI kami, kami mengumpulkan 300.000 resep dari semua sumber yang tersedia. Penting bagi kami untuk mengumpulkan tidak hanya resep pizza, tetapi diversifikasi pilihan sebanyak mungkin, sambil berusaha untuk tidak melampaui yang masuk akal (misalnya, mengabaikan resep koktail, menyadari bahwa semantik mereka tidak akan sangat mempengaruhi semantik resep pizza).
Setelah mengumpulkan data, kami mendapat lebih dari 100.000 bahan unik. Masalah besar adalah membawa mereka ke satu bentuk. Tapi dari mana datangnya begitu banyak barang? Semuanya sederhana, misalnya, cabai dalam resep diindikasikan seperti ini: cabai, cabai, cabai, cabai. Jelas bagi Anda bahwa ini adalah lada yang sama, tetapi jaringan saraf mempersepsikan ejaan yang berbeda sebagai entitas yang terpisah. Kami memperbaikinya. Setelah kami membersihkan data dan membawanya ke satu tampilan, kami hanya memiliki 1.000 posisi tersisa.
Analisis selera dunia
Setelah kami menerima dataset yang siap untuk bekerja, kami melakukan analisis awal. Pertama, kami melihat masakan mana di dunia yang terwakili dalam dataset kami dalam rasio kuantitatif.

Untuk setiap masakan, kami telah mengidentifikasi bahan-bahan yang paling populer.

Pada grafik ini, perbedaan dalam preferensi rasa orang menurut negara terlihat. Dari preferensi-preferensi ini juga menjadi jelas bagaimana orang-orang dari berbagai negara menggabungkan satu sama lain.
Dua temuan pizza
Setelah analisis global ini, kami memutuskan untuk mempelajari resep pizza dari seluruh dunia secara lebih rinci untuk menemukan pola dalam komposisi mereka. Berikut adalah kesimpulan yang kami buat:
- Resep pizza adalah urutan besarnya lebih kecil dari resep daging / ayam dan makanan penutup.

- Banyak bahan yang ditemukan dalam resep pizza terbatas. Variabilitas produknya jauh lebih rendah daripada hidangan lainnya.

Bagaimana kami menguji model
Menemukan kombinasi rasa nyata tidak sama dengan mengungkapkan kompatibilitas molekul. Semua keju memiliki komposisi molekul yang sama, tetapi ini tidak berarti bahwa kombinasi yang berhasil hanya terletak di area bahan terdekat.

Namun, kita harus melihat kompatibilitas bahan yang persis sama dengan tingkat molekul ketika kita menerjemahkan semuanya ke dalam matematika. Karena benda yang mirip (keju yang sama) harus tetap serupa, tidak peduli bagaimana kami menggambarkannya. Jadi kita dapat menentukan objek yang dijelaskan dengan benar.
Ubah resep menjadi matematika
Untuk menyajikan resep dalam bentuk yang dapat dipahami untuk jaringan saraf, kami menggunakan Skip-Gram Negative Sampling (SGNS) - algoritma word2vec, yang didasarkan pada kemunculan kata-kata dalam konteks. Kami memutuskan untuk tidak menggunakan model word2vec yang sudah dilatih sebelumnya, karena resep kami jelas berbeda dalam struktur semantik dari teks sederhana. Dengan menggunakan model seperti itu, kita dapat kehilangan informasi penting.
Anda dapat mengevaluasi hasil dari word2vec dengan melihat tetangga semantik terdekat. Misalnya, inilah yang diketahui model kami tentang keju:

Untuk menguji bagaimana model semantik dapat menangkap interaksi resep bahan, kami menerapkan model pemodelan tematik untuk semua resep dari sampel. Artinya, mereka mencoba memecah dataset resep menjadi kelompok sesuai dengan pola yang diidentifikasi secara matematis.

Mengetahui sebelumnya bahwa sampel resep tertentu termasuk dalam berbagai kelas nyata yang diperoleh dari data, kami membuat distribusi kepemilikan masing-masing kelas nyata ke yang dihasilkan.

Yang paling jelas adalah kelas makanan penutup, yang membentuk tema 0 dan 1, yang dihasilkan oleh model tematik. Selain makanan penutup, hampir tidak ada kelas lain dalam mata pelajaran ini, yang menunjukkan bahwa makanan penutup mudah dipisahkan dari kelas hidangan lainnya. Juga di setiap mata pelajaran ada kelas yang paling menggambarkannya. Ini berarti bahwa model kami berhasil dengan baik dengan deskripsi matematis dari makna "rasa" yang tidak jelas.
Pembuatan Resep
Untuk membuat resep baru, kami menggunakan dua jaringan saraf berulang. Untuk melakukan ini, kami menyarankan bahwa di ruang resep umum ada subruang yang bertanggung jawab untuk resep pizza. Agar jaringan saraf dapat belajar membuat resep pizza baru, kami harus menemukan subruang ini.
Tugas semacam itu mirip artinya dengan autocoding gambar ketika kami menyajikan gambar sebagai vektor dimensi kecil. Dalam hal ini, vektor dapat berisi sejumlah besar informasi spesifik tentang gambar.
Misalnya, untuk pengenalan wajah di foto, vektor tersebut dapat menyimpan informasi tentang warna rambut manusia di sel yang terpisah. Kami memilih pendekatan ini justru karena sifat unik subruang tersembunyi.
Untuk mengidentifikasi subruang pizza, kami menjalankan resep melalui dua jaringan saraf berulang. Yang pertama menerima resep pizza di pintu masuk dan mencari perwakilannya dalam bentuk vektor tersembunyi. Yang kedua menerima vektor tersembunyi dari jaringan saraf pertama dan harus menawarkan resep berdasarkan itu. Resep pada input jaringan saraf pertama dan pada output yang kedua seharusnya bertepatan.
Jadi dua jaringan saraf dalam format encoder decoding belajar untuk menyampaikan resep dengan benar ke vektor (laten) yang tersembunyi dan sebaliknya. Berdasarkan ini, kami dapat menemukan subruang tersembunyi yang bertanggung jawab untuk semua resep pizza.


Kompatibilitas molekul
Ketika kami memecahkan masalah membuat resep pizza, kami harus menambahkan kriteria kompatibilitas molekul ke model. Untuk ini, kami menggunakan hasil
studi bersama para ilmuwan dari Cambridge dan beberapa universitas AS.
Sebagai hasil penelitian, ditemukan bahwa bahan-bahan dengan jumlah terbesar pasangan molekul total paling baik dikombinasikan. Karena itu, ketika membuat resep, jaringan saraf lebih suka bahan-bahan dengan struktur molekul yang sama.
Hasil dan AI Pizza
Akibatnya, jaringan saraf kami telah belajar untuk berhasil membuat resep pizza. Dengan menyesuaikan koefisien, AI dapat menghasilkan resep klasik (seperti Margarita atau Pepperoni), dan yang gila. Salah satu resep gila tersebut menjadi dasar pizza sempurna molekuler pertama di dunia dengan sepuluh bahan: saus tomat, melon, pir, ayam, tomat ceri, tuna, mint, brokoli, keju Mozzarella, granola. Edisi terbatas bahkan dapat dibeli di salah satu restoran pizza Dodo. Dan berikut ini beberapa resep menarik yang bisa Anda coba masak di rumah:
- bayam, keju, tomat, black_olive, zaitun, bawang putih, lada, kemangi, jeruk, melon, kecambah, buttermilk, lemon, bass, nut, rutabaga;
- bawang, tomat, zaitun, black_pepper, roti, adonan;
- ayam, bawang, black_olive, keju, saus, tomat, olive_oil, mozzarella_cheese;
- tomat, mentega, cream_cheese, lada, olive_oil, keju, black_pepper, mozzarella_cheese;
Semua ini akan menjadi sampah jika kami tidak memberikan tautan ke yang paling menarik: