Pizza AI: como usamos duas redes neurais recorrentes

O tópico das redes neurais excita os corações dos desenvolvedores, cientistas e profissionais de marketing há mais de um ano e para alguém que nem sequer é a primeira década. Mas todos sabemos que, em projetos baseados em neurônios, geralmente existe uma grande data simples e um boletim de marketing, inflado no contexto de um cabeçalho de clickbait. Tentamos evitar essa história e desenvolvemos um projeto de neuropizza baseado em um estudo da compatibilidade molecular de ingredientes, análise de 300 mil receitas e pura criatividade. Abaixo do corte, você pode descobrir os detalhes e o link de código aberto no GitHub.



Um carro pode inventar algo novo ou é limitado pelo que sabe? Até agora, ninguém sabe a resposta para esta pergunta. Mas agora, a inteligência artificial resolve perfeitamente os problemas de analisar grandes dados não-padrão.

Uma vez na Dodo Pizza, eles decidiram realizar um experimento: sistematizar e descrever estruturalmente o que é considerado caótico e subjetivo em todo o mundo - gosto. A inteligência artificial ajudou a encontrar as combinações mais loucas de ingredientes, que, apesar de sua natureza incomum, acabaram sendo saborosas para a maioria das pessoas.

Meu colega e eu atuamos como especialistas em redes neurais do MIPT e Skoltech nesse projeto incomum. Desenvolvemos e treinamos uma rede neural que pode resolver o problema de gerar receitas de cozinha. No decorrer do trabalho, foram analisadas mais de 300.000 receitas, bem como os resultados de pesquisas científicas sobre a compatibilidade molecular de ingredientes. Com base nisso, a IA aprendeu a encontrar conexões não óbvias entre os ingredientes e a entender como eles se combinam e como a presença de cada um deles afeta a compatibilidade de todos os outros.

Como entramos no projeto Dodo AI-pizza


Tudo, como geralmente acontece, aconteceu de repente. Houve um curto período de tempo antes do verão, terminamos o curso de Deep Learning, defendemos o projeto e tentamos nos adaptar a um ritmo mais relaxado de estudo / vida. Mas eles não conseguiram: acidentalmente encontraram republicações em um pedido pessoal do BBDO sobre encontrar pessoas que poderiam escrever uma rede neural para gerar novas receitas. Mais especificamente: novas receitas de pizza para o Dodo. Sem hesitar, decidimos que queríamos tentar.

Quando o projeto estava apenas começando, não sabíamos completamente se ele iria além, se haveria uma implementação prática, estávamos simplesmente interessados ​​na tarefa. Um monte de redbowl e internet rápida nos ajudaram e nos levaram adiante. Olhando para trás, entendemos que algumas coisas poderiam ser feitas de maneira diferente, mas isso é normal.

De qualquer forma, depois de algumas semanas o modelo de trabalho da rede neural estava pronto, o estágio de seu lançamento na produção começou. Temos muita sorte que o projeto não possa ser chamado de industrial ou técnico no sentido estrito dessas palavras. O status do experimento é mais adequado para ele.

Usando nosso modelo, foram geradas várias variantes de receitas de pizza, que passamos para as mãos de chefes muito legais do Dodo para executar testes de produtos. O momento de degustação de pizza no Dodo R&D Lab foi um divisor de águas em termos de reconhecimento do valor do trabalho que fizemos. Foi muito emocionante ver o produto vendido. De fato, muitas vezes todo desenvolvimento e soluções são algo intangível e efêmero, e aqui o resultado não só pode ser tocado, mas também provado.

Coleta primária de conjunto de dados e chili


Qualquer modelo precisa de dados para funcionar. Portanto, para treinar nossa IA, coletamos 300.000 receitas de todas as fontes disponíveis. Era importante coletar não apenas receitas de pizza, mas diversificar a seleção o máximo possível, tentando não ir além do razoável (por exemplo, ignore as receitas de coquetel, percebendo que sua semântica não afetará muito a semântica da receita da pizza).

Depois de coletar os dados, obtivemos mais de 100.000 ingredientes exclusivos. O grande problema foi trazê-los para uma forma. Mas de onde vieram tantos itens? Tudo é simples, por exemplo, os chili peppers nas receitas são indicados da seguinte maneira: chili, malagueta, malagueta, pimenta. É óbvio para você que essa é a mesma pimenta, mas a rede neural percebe grafias diferentes como entidades separadas. Nós consertamos. Depois de limparmos os dados e apresentá-los a uma visualização, restavam apenas 1.000 posições.

Análise de gostos mundiais


Depois de recebermos o conjunto de dados pronto para o trabalho, realizamos a análise inicial. Primeiro, analisamos quais cozinhas do mundo estão representadas em nosso conjunto de dados em uma proporção quantitativa.



Para cada uma das cozinhas, identificamos os ingredientes mais populares.



Nesses gráficos, são notadas diferenças nas preferências de gosto das pessoas por país. Também fica claro a partir dessas preferências como pessoas de diferentes países combinam ingredientes entre si.

Duas descobertas de pizza


Após essa análise global, decidimos estudar receitas de pizza de todo o mundo com mais detalhes para encontrar padrões em sua composição. Aqui estão as conclusões que tiramos:

  1. As receitas de pizza são uma ordem de magnitude menor que as receitas de carne / frango e sobremesas.

  2. Muitos dos ingredientes encontrados nas receitas de pizza são limitados. A própria variabilidade dos produtos é muito menor do que em outros pratos.


Como testamos o modelo


Encontrar combinações de sabores reais não é o mesmo que revelar a compatibilidade de moléculas. Todos os queijos têm uma composição molecular semelhante, mas isso não significa que combinações bem-sucedidas estejam apenas na área dos ingredientes mais próximos.



No entanto, devemos ver exatamente a compatibilidade de ingredientes semelhantes ao nível molecular quando traduzirmos tudo em matemática. Como objetos semelhantes (os mesmos queijos) devem permanecer semelhantes, não importa como os descrevemos. Portanto, podemos determinar que descreveu esses objetos corretamente.

Converter receita em matemática


Para apresentar a receita de uma forma compreensível para a rede neural, usamos a Amostra Negativa de Skip-Gram (SGNS) - o algoritmo word2vec, que se baseia na ocorrência de palavras no contexto. Decidimos não usar os modelos word2vec pré-treinados, porque nossa receita é obviamente diferente na estrutura semântica dos textos simples. Usando esses modelos, poderíamos perder informações importantes.

Você pode avaliar o resultado do word2vec observando os vizinhos semânticos mais próximos. Por exemplo, aqui está o que nosso modelo sabe sobre o queijo:



Para testar como os modelos semânticos podem capturar as interações da receita dos ingredientes, aplicamos um modelo de modelagem temática para todas as receitas da amostra. Ou seja, eles tentaram dividir o conjunto de dados de receitas em clusters de acordo com padrões identificados matematicamente.



Sabendo antecipadamente que uma determinada amostra de receitas pertence a várias classes reais obtidas a partir dos dados, construímos a distribuição da pertença de cada classe real às geradas identificadas.



O mais óbvio foi a classe de sobremesas, que formou o tema 0 e 1, gerado pelo modelo temático. Além das sobremesas, quase não há outras classes nessas matérias, o que sugere que as sobremesas são facilmente separadas de outras classes de pratos. Também em cada disciplina há uma classe que a descreve melhor. Isso significa que nossos modelos lidaram bem com a descrição matemática do significado não óbvio de "gosto".

Geração de receita


Para criar novas receitas, usamos duas redes neurais recorrentes. Para fazer isso, sugerimos que no espaço comum das receitas exista um subespaço responsável pelas receitas de pizza. Para que a rede neural aprendesse a criar novas receitas de pizza, tivemos que encontrar esse subespaço.

Essa tarefa é semelhante em significado à codificação automática de imagens quando apresentamos uma imagem como um vetor de pequena dimensão. Nesse caso, os vetores podem conter uma grande quantidade de informações específicas sobre a imagem.

Por exemplo, para reconhecimento de rosto na foto, esses vetores podem armazenar informações sobre a cor do cabelo humano em uma célula separada. Escolhemos essa abordagem precisamente por causa das propriedades exclusivas do subespaço oculto.

Para identificar o subespaço da pizza, executamos receitas através de duas redes neurais recorrentes. O primeiro recebeu uma receita de pizza na entrada e procurou sua representação na forma de um vetor oculto. O segundo recebeu um vetor oculto da primeira rede neural e teve que oferecer uma receita baseada nele. Receitas na entrada da primeira rede neural e na saída da segunda deveriam ter coincidido.

Assim, duas redes neurais no formato de decodificação de codificador aprenderam a retransmitir corretamente a receita para um vetor oculto (latente) e vice-versa. Com base nisso, descobrimos um subespaço oculto responsável por todas as muitas receitas de pizza.





Compatibilidade molecular


Quando resolvemos o problema de criar uma receita de pizza, tivemos que adicionar o critério de compatibilidade molecular ao modelo. Para isso, usamos os resultados de um estudo conjunto de cientistas de Cambridge e várias universidades dos EUA.

Como resultado do estudo, verificou-se que os ingredientes com o maior número de pares moleculares totais são melhor combinados. Portanto, ao criar a receita, a rede neural preferia ingredientes com uma estrutura molecular semelhante.

Resultado e Pizza AI


Como resultado, nossa rede neural aprendeu a criar com sucesso receitas de pizza. Ao ajustar os coeficientes, a IA pode produzir receitas clássicas (como Margarita ou Pepperoni) e loucas. Uma dessas loucas receitas formou a base da primeira pizza molecularmente perfeita do mundo, com dez ingredientes: molho de tomate, melão, pêra, frango, tomate cereja, atum, hortelã, brócolis, queijo mussarela, granola. Edição limitada pode até ser comprada em uma das pizzarias Dodo. E aqui estão algumas receitas mais interessantes que você pode tentar cozinhar em casa:

  • espinafre, queijo, tomate, azeitona preta, azeitona, alho, pimenta, manjericão, citros, melão, broto, soro de leite coalhado, limão, baixo, noz, rutabaga;
  • cebola, tomate, azeitona, pimenta preta, pão, massa;
  • frango, cebola, azeitona preta, queijo, molho, tomate, óleo de oliva, mussarela;
  • tomate, manteiga, creme de queijo, pimenta, azeite de oliva, queijo, pimenta preta, mussarela;

Tudo isso seria lixo se não dermos um link para o mais interessante:

Source: https://habr.com/ru/post/pt471650/


All Articles