Rec²: eksploracja receptur

Dec 10 2022
Interaktywna soczewka z obsługą uczenia maszynowego na jedzeniu
Michael Daly, John McNally Wstęp Jedzenie jest jednym z najbogatszych czynników wpływających na ludzkie doświadczenia. Oddziałuje na nasze emocje i zmysły.

Michael Daly , John McNally

Wstęp

Jedzenie jest jednym z najbogatszych składników ludzkiego doświadczenia. Oddziałuje na nasze emocje i zmysły. Słodki aromat świeżych naleśników, pocieszający kontrast ciepłej zupy w zimną noc, skwierczenie surowego steku na rozpalonym grillu. Od tysiącleci ludzie spotykają się, by łamać chleb. Niedawno pojawiły się pisane przepisy, ponieważ zachowujemy i dzielimy się naszymi technikami wytwarzania dobrego jedzenia. Właściwy posiłek może scementować pamięć. Specjalny przepis może stanowić podstawę więzi rodzinnej lub firmy wartej miliardy dolarów. Nasz zespół w Rec² stworzył aplikację internetową, aby wspierać eksplorację i eksperymentowanie z nowymi i starymi przepisami!

Obecnie miliony wysokiej jakości przepisów są dostępne online. Zespół badawczy z MIT zebrał ponad 1 milion z nich z popularnych stron internetowych, aby utworzyć zbiór danych Recipe1M+ (Marin, 2019). Każda receptura zawiera mieszankę języka naturalnego, ilości i obrazów — bogate podłoże dla uczenia maszynowego. Nasz zespół wykorzystał zestaw danych Recipe1M+ do opracowania zestawu modeli do interpretacji i powiązania tych przepisów. Wierzymy, że następna ewolucja odkrywania żywności i kreatywności zostanie wzmocniona przez naukę o danych. Nowe połączenia smakowe, zamienniki składników lub całe przepisy mogą być generowane przez sztuczną inteligencję. Inteligentne analizy mogą umożliwić lepsze zarządzanie zapasami żywności w celu lepszej logistyki i efektywnej konsumpcji.

Aby zmaksymalizować ich słuszność i użyteczność, modele te muszą być tak szeroko dostępne, jak przepisy, które opisują. Nasz zespół nadał priorytet przystępności, integrując nasze modele z aplikacją internetową, którą można uruchomić bez żadnych instalacji lub doświadczenia w nauce o danych. Prezentowany przez nas pulpit nawigacyjny został zaprojektowany jako wprowadzenie do uczenia maszynowego dla ogółu odbiorców kochających jedzenie.

Oto aplikacja . Wypróbuj kilka własnych podpowiedzi i obrazów!

Metody

Nasza aplikacja wymaga od użytkownika jednego z dwóch danych wejściowych: nazwy potrawy lub zdjęcia potrawy. My zajmiemy się resztą! Poniższy rysunek przedstawia potok, z którego korzysta nasza aplikacja. Jeśli użytkownik wprowadzi nazwę przepisu, aplikacja zwróci przewidywane składniki z typowymi parami, podziałem na rodzaj żywności i pochodzenie etniczne oraz umieści jedzenie na wykresie grup etnicznych. Jeśli użytkownik prześle zdjęcie, aplikacja przewidzi tytuł przepisu, a następnie przeprowadzi te same analizy. Informacje zwrócone użytkownikowi pozwalają mu odkrywać ulubione przepisy w nowy sposób.

Schemat blokowy komponentów aplikacji internetowej.

Aplikacja Rec² jest zbudowana przy użyciu biblioteki Python o nazwie Streamlit, z której korzystanie było przyjemnością. Streamlit umożliwia programistom szybkie uruchamianie i hostowanie modeli uczenia maszynowego z repozytorium GitHub. Nasza aplikacja jest uruchamiana z głównego skryptu, który kontroluje wygląd witryny i wyświetla wyniki ze skryptów pomocniczych, które uruchamiają wnioski z naszych zapisanych modeli i danych. Proste, ale potężne funkcje Streamlit sprawiły, że wdrożenie naszej aplikacji było proste i łatwe do ulepszenia.

Recipe1M+ zestaw danych

Zestaw danych Recipe1M+ to duży, bogaty zbiór danych, który można wykorzystać na wiele sposobów. Aby ograniczyć zakres tego projektu, zdecydowaliśmy się skupić na obecności składników, a nie na dokładnych ilościach każdego składnika. Pierwsze poważne czyszczenie danych polegało na usunięciu ze składników dodatkowych informacji, takich jak pomiary lub techniki przygotowania. W tym przypadku chcemy wyodrębnić „cebulę” z wyrażenia typu „1 szklanka posiekanej cebuli”. Podobnie w przypadku tytułów przepisów, chcieliśmy wyodrębnić nazwy potraw bez zwykłego wypełniacza, który jest dodawany do tytułów przepisów. Na przykład chcemy wyciągnąć „ciasteczka z kawałkami czekolady” z „Światowej sławy ciasteczek z kawałkami czekolady babci Betty”. Chociaż chcielibyśmy mieć trochę ciasteczek babci Betty, te słowa wypełniające po prostu zmyliłyby modele.

Aby wykonać te kroki czyszczenia, napisano skrypt konwertujący oryginalny plik JSON na oczyszczoną i bardziej użyteczną wersję. Pierwszym krokiem w skrypcie było tokenizowanie i etykietowanie części mowy (POS) dla każdego tokena. Następnie ze składników i tytułów usunięto stopwords, niektóre części mowy i dodatkowe wyrażenia regularne. Wynik został następnie zapisany na dwa sposoby. Pierwszym z nich było 999 najlepszych tokenów zapisanych jako nowy JSON do użycia z modelem tytułu do składnika. Ten JSON zawierał tokeny z największą liczbą 999, a wszystkie inne tokeny wymienione jako „inne” dla tysięcznego tokena. Drugim sposobem zapisania oczyszczonych danych był oczyszczony i skondensowany plik CSV, który można łatwo załadować do Pandas DataFrame. Ten plik CSV został następnie użyty do stworzenia modeli LDA i Word2Vec.

Początkowa wersja oczyszczonych danych dała solidne wyniki dla naszych modeli, ale było wiele do zrobienia. Najbardziej oczywistą opcją są różnice w nazwach wspólnych składników. Na przykład przepisy, które wymieniają mąkę jako składnik, mogą zawierać ją jako [„mąka”, „mąka uniwersalna”, „mąka AP” itp.]. Dla naszych modeli są to różne składniki, ale dla użytkownika oznaczają to samo. Aby skorygować tę zmienność, ręcznie utworzono mapowanie składników dla 40 najlepszych składników, aby poprawić wydajność modelu. Mapowanie zostało utworzone poprzez zastąpienie najlepszych odmian żetonów najpopularniejszym żetonem (np. „mąka uniwersalna” i „mąka AP” zostały zastąpione słowem „mąka”). To mapowanie znacznie poprawiło wydajność modelu i można je jeszcze ulepszyć dzięki większemu mapowaniu,

Przykład mapowania składników dla dwóch typowych składników. Wszystkie te odmiany jajka i cukru przetrwały wstępne przetwarzanie wstępnego czyszczenia danych.

Epikurejski zbiór danych

Jedną ze słabości zestawu danych Recipe1M+ było to, że niektóre obrazy zostały przesłane przez użytkowników do stron internetowych, które zeskrobał zespół. Wśród tych obrazów panuje znaczny szum, a wiele z nich wydaje się nie przedstawiać naczynia, do którego są przywiązane. Zamiast próbować ręcznie przycinać zaszumione obrazy, wybrano osobny zestaw danych, aby pomóc w szkoleniu modelu obrazu do tytułu. Zbiór danych składników i przepisów żywnościowych z zestawem danych obrazów w serwisie Kaggle zawiera ponad 13 000 przepisów z Epicurious. Chociaż ten zestaw danych jest znacznie mniejszy niż Recipe1M+, każdy obraz jest głównym zdjęciem stockowym rzeczywistego przepisu, więc tytuły i obrazy są znacznie bardziej wierne. Ponadto przepisy Epicurious miały zwykle bardziej szczegółowe i opisowe tytuły, więc wierzyliśmy, że doprowadzi to do najciekawszych wyników.

Rozpoznawanie receptur

Model rozpoznawania receptur pobiera obraz żywności jako dane wejściowe i wyprowadza sekwencję tokenów, najlepiej tytuł przedstawionego przepisu. Model musi nauczyć się zarówno wyglądu jedzenia, jak i struktury języka. Przetestowano kilka architektur modeli, ale ostatecznie wybraliśmy dekoder-transformator z osadzonym obrazem, dokładnie postępując zgodnie z samouczkiem dotyczącym podpisów obrazów z Tensorflow. Urządzenie do osadzania obrazu to bezgłowy model MobileNet firmy Google (MobileNetV3Small), który wyodrębnia funkcje z obrazu i przekazuje je do naszego modelu. Modele MobileNet są kompaktowe i zostały przeszkolone na milionach obrazów w zbiorze danych ImageNet. Model rozpoznawania receptur wykorzystuje te funkcje i sekwencyjnie buduje tytuł receptury.

Schemat sekwencyjnego procesu przewidywania tytułu przepisu. Przewidywany tytuł jest inicjowany jako token początkowy ( ). Model przewiduje następny token na podstawie poprzedniego tokena i obrazu wejściowego. Proces jest powtarzany do końca tokenu ( ) jest przewidywany.

Niestety, podczas gdy model rozpoznawania przepisów jest dość dobry w tworzeniu realistycznie brzmiących nazw potraw, nie jest zbyt dobry w dopasowywaniu dostarczonego obrazu wejściowego. Inne architektury i odmiany, które przetestowaliśmy, obejmowały model sekwencja do sekwencji (seq2seq) z osadzonymi GloVe dla tokenów tytułowych, osadzanie obrazu oparte na InceptionV3 oraz model segmentacji obrazu w połączeniu z klasyfikatorem żywności (Bose, 2020). Niestety, żadna odmiana ani architektura nie była bardziej skuteczna w zadaniu. Wybrano architekturę transformatora-dekodera z warstwą ekstrakcji cech obrazu MobileNet, ponieważ była najmniejsza, co pomogło zachować lekką ostateczną aplikację internetową i generować najbardziej szczegółowe i zabawne prognozy.

Mapy uwagi do rozpoznawania przepisu na obrazie makaronu i sera. Model poprawnie przewiduje „makaron z serem”, ale ekstrapoluje „z kasztanami i rozmarynem” na podstawie pustych obszarów obrazu.

Mapy uwagi pomagają wyjaśnić, co jest przyczyną niskiej wydajności. Mapy uwagi pokazują, które regiony obrazu aktywują najwięcej neuronów w modelu. Potocznie pokazuje, gdzie model patrzy w obrazie, gdy przewiduje każdy token. Jak pokazano powyżej, model przewiduje „mac” na podstawie regionu, który wyraźnie reprezentuje kolor i teksturę makaronu i sera. Stamtąd obszary ostrości znajdują się na marginesach i rogach obrazu, ponieważ model wydaje się bardziej polegać na zrozumieniu gramatyki niż na jakichkolwiek danych w pikselach obrazu. Model wydaje się również działać lepiej na dobrze oświetlonych, wyraźnych, profesjonalnych zdjęciach, prawdopodobnie dlatego, że dane treningowe zawierały prawie wyłącznie profesjonalnie wykonane zdjęcia. Bardziej zróżnicowany, ale czystszy zestaw danych szkoleniowych prawdopodobnie znacznie poprawi wydajność modelu.

Przewidywanie składników

Biorąc pod uwagę nazwę przepisu, model przewidywania składników wyprowadza prawdopodobne składniki zawarte w tym przepisie. Aby ograniczyć rozmiar modelu, podczas treningu uwzględniono tylko 999 najczęściej występujących tytułów i składników, a wszystkie inne elementy przypisano do kategorii „inne”. W przeciwieństwie do modelu rozpoznawania receptur, model przewidywania składników wykorzystuje rzadkie wektory jako dane wejściowe i wyjściowe zamiast sekwencji. Kolejność listy składników jest dowolna, a kolejność żetonów w przepisie ma mniejsze znaczenie dla określenia podstawowych składników. Sieć neuronowa składa się tylko z trzech gęstych warstw ukrytych z aktywacjami ReLU w prostej architekturze koder-dekoder.

Architektura modelu przewidywania składników.

Chociaż architektura była prosta, metody szkoleniowe musiały być wysoce dostosowane do tego zadania klasyfikacji z wieloma etykietami. W przypadku dowolnego przepisu zdecydowana większość znanych składników nie będzie obecna. Dlatego trywialny model, który daje zerowe prawdopodobieństwo dla wszystkich składników, osiągnąłby dokładność większą niż 99% ze względu na przytłaczającą liczbę prawdziwych negatywów. Aby zrekompensować ekstremalną nierównowagę klas, Tensorflow's weighted_cross_entropy_with_logitsfunkcja została zmodyfikowana, aby zastosować znacznie większą wagę do pozytywnych prognoz. Ponadto wagi dla każdego składnika były skalowane liniowo według częstotliwości, tak że dokładne przewidywanie rzadkiego składnika miało wyższą wagę niż przewidywanie zwykłego składnika. Wagi te pomogły zapobiec prostemu przewidywaniu przez model kilku najczęstszych składników dla każdego przepisu, pomimo braku równowagi w dystrybucji składników.

Przeciętny przepis w naszej części testowej zawiera mniej niż 1% z 1000 składników znanych modelowi (5,05 składników rzeczywistych). Mimo że model przewidywania składników nadal uzyskuje ogólną dokładność większą niż 99%, osiągnął również powtarzalność na poziomie 0,50 i precyzję na poziomie 0,32, co oznacza, że ​​model dokonuje średnio 7,78 przewidywań na recepturę, z czego 2,52 jest poprawnych. Biorąc pod uwagę surowe prawdopodobieństwo, że jakikolwiek przewidywany składnik faktycznie pasuje do przepisu (oprócz kilku najlepszych składników), są to niesamowite wyniki. Chociaż model miał problemy z dodatkami, takimi jak pietruszka i kolendra, poprawnie identyfikuje prawie wszystkie z 50 najczęstszych składników z dokładnością co najmniej 10%.

Wydajność modelu przewidywania składników, mierzona liczbą prawdziwych prognoz w porównaniu z prawdziwymi wystąpieniami i całkowitą liczbą prognoz dla 50 najczęstszych składników.

Identyfikacja kuchni

Część identyfikująca kuchnię w tym projekcie przybrała dwie formy: rodzaj żywności i pochodzenie etniczne. Zbiór danych Recipe1M+ nie zawiera żadnych etykiet dla tych zadań, więc modele musiały zostać opracowane metodami bez nadzoru. W związku z tym identyfikacja rodzaju żywności została przeprowadzona przy użyciu modelu alokacji latentnego Dirichleta (LDA), a część etniczna została wykonana przy użyciu modelu Word2Vec.

Model LDA
Głównym wyzwaniem dla tej części projektu było znalezienie równowagi między interpretowalnością a opisowością tematów zwracanych przez model tematyczny. Mniejsza liczba tematów prawdopodobnie stworzyłaby zestaw dobrze zdefiniowanych tematów, ale może nie odzwierciedlać stopnia ich opisowości. Więcej tematów może generować tematy opisowe, ale prawdopodobnie nie byłoby możliwe do zinterpretowania przez człowieka. Ponieważ zestaw danych nie zawiera etykiet prawdy podstawowej dla każdej z receptur, zespół zbadał użycie różnych wektoryzatorów, modeli, hiperparametrów i technik oceny. Ostatecznie wybrano model LDA z 20 tematami, ponieważ wykazywał najlepszą równowagę między interpretowalnością a opisowością tematów. Kompromisy dla modeli LDA między liczbą tematów a obliczonymi metrykami (logarytm wiarygodności, zakłopotanie i spójność tematów) podano w dodatku.

Zadanie interpretacji i ręcznego etykietowania wyjściowych wektorów tematów jest jedną z najtrudniejszych części modelowania tematów. Poniższy rysunek przedstawia niektóre tokeny zwrócone przez dwa wektory tematów oraz chmury słów, które zostały wygenerowane z tytułów przepisów o najwyższej wadze dla tych tematów. Temat 0 można wyraźnie zidentyfikować jako temat chleba lub ciasta, ale temat 2 jest nieco bardziej niejednoznaczny. Może być oznaczony jako „zapiekanka”, ogólna kategoria „włoska” lub coś zupełnie innego. Niejednoznaczność w etykietach dla wektorów tematów wzrastała wraz z liczbą tematów uwzględnionych w modelu. Przydzielając etykiety, kierowaliśmy się naszym najlepszym osądem, ale najlepszym sposobem byłoby skonsultowanie się z ekspertem w danej dziedzinie.

Tabela przedstawiająca różnice między surowymi składnikami a tytułami przepisów, które reprezentują.

Wynikiem modelu LDA są pełne wersje wektorów tematycznych pokazanych powyżej. Te wektory tematów są zapisywane w naszej aplikacji, a my obliczamy podobieństwo cosinusowe między każdym wektorem tematu a przewidywaną listą składników, aby sklasyfikować przepis.

Model Word2Vec Model
word2vec to sieć neuronowa, która jest szkolona na zbiorze dokumentów w celu poznania powiązań między słowami w tym zbiorze. Oznacza to, że możemy przekazać etykietę do modelu i zwrócić najbardziej podobne słowa do tej etykiety, która będzie reprezentować wektor tematu. To pozwala nam tworzyć dowolną liczbę podstawowych etykiet i tworzyć wektory tematyczne, których możemy użyć do przypisania tych etykiet. Zamiast używać grup etnicznych, moglibyśmy utworzyć wektory tematyczne dla danych wejściowych „śniadanie”, „kolacja” i „deser”, aby przypisać przepis wejściowy do tych etykiet.

Model word2vec dla tego zadania został przeszkolony zarówno pod kątem składników receptury, jak i tytułów. Tytuły przepisów często zawierają pochodzenie etniczne lub inne ważne etykiety, które pomagają modelce się uczyć. Konsekwencją tego jest to, że tokeny zwracane przez model word2vec nie zawsze są składnikami, mogą to być inne podobne etykiety do danych wejściowych. Na przykład niektóre tokeny zwracane dla danych wejściowych „grecki” to „tzatziki”, „feta” i „śródziemnomorski”. Tokeny, które nie są składnikami, są nadal akceptowane do przypisania pochodzenia etnicznego do przepisu, ponieważ model word2vec nadal będzie miał powiązania z tymi etykietami z innymi składnikami. „Śródziemnomorska” może być powiązana ze składnikami takimi jak „ciecierzyca” lub „ogórek”, co nadal pomoże modelowi zidentyfikować ten przepis jako „grecki”.

Kiedy już mamy te wektory tematów, możemy wykreślić je na wykresie Stochastic Neighbor Embedding (t-SNE) z rozkładem t, aby zwizualizować, w jaki sposób są one ze sobą powiązane. Poniższy wykres t-SNE pokazuje 10 najlepszych tokenów dla każdej etykiety etnicznej zredukowanej do wykresu 2-D. Wykresy T-SNE to sposób na wizualizację danych wielowymiarowych w przestrzeni o niższych wymiarach. Próbują trzymać punkty i klastry, które są podobne, bliżej siebie i oddzielać niepodobne. W rezultacie możemy zobaczyć, że coś takiego jak indyjskie jedzenie ma zwartą grupę, która jest oddzielona od większości innych kuchni, lub że azjatyckie etykiety są oddzielone po prawej stronie, ale nadal są blisko siebie.

Wektory tematu etnicznego zredukowane do wykresu 2D, aby pokazać związek między kuchniami. Pokazano 5 górnych żetonów każdej etykiety, a niektóre składniki nakładają się na siebie (np. „arroz” w lewym górnym rogu).

Wyniki

Zespół Rec² jest zachwycony miejscem, w którym wylądowała nasza aplikacja. Postanowiliśmy stworzyć przyjazną dla użytkownika i wydajną aplikację internetową, która umożliwi szerokiej publiczności wykorzystanie mocy naszych modeli. Aplikacja wymaga tylko jednego z dwóch danych wejściowych, aby użytkownik mógł rozpocząć pracę, a czas wnioskowania do wyświetlenia wyników nigdy nie przekracza ~5 sekund. Arbitralną, ale zabawną metryką jest to, że wysłałem to do mojego dziadka z wyzwaniami technologicznymi, który był w stanie korzystać z tej aplikacji i cieszyć się nią.

Wydajność i dostępność aplikacji były jednym z trudniejszych aspektów tego projektu, ale są też jednym z największych atutów. Aby osiągnąć nasze wskaźniki prędkości, musieliśmy zapisać wszystkie nasze modele i wstępnie obliczyć wszelkie dane, które miały zostać użyte. Udało nam się również skorzystać z niektórych eksperymentalnych funkcji zapamiętywania Streamlit. Te funkcje zapamiętują różne dane wyjściowe, więc gdy użytkownik wchodzi w interakcję z różnymi częściami aplikacji, nie musi wszystkiego ponownie obliczać. Doprowadziło to do bezproblemowej integracji różnych modeli w aplikacji.

Główną słabością naszego projektu jest to, że same modele są wadliwe, ale nadal stanowią przydatne wprowadzenie do możliwości uczenia maszynowego w zastosowaniach związanych z żywnością. Model przewidywania składników w dużej mierze tworzy logiczne, choć konserwatywne listy składników. Model rozpoznawania receptur czasami daje rozsądne wyniki, ale często generuje zabawną koncepcję nowego dania, które nie jest w oczywisty sposób związane z obrazem wejściowym. Zarówno modele żywności, jak i modele etniczne zostały wygenerowane przy użyciu technik bez nadzoru, które, choć nie są idealne, dają przedsmak (*mrugnięcie*) tego, co byłby w stanie osiągnąć zestaw danych z etykietami prawdy podstawowej. Modele te nie są gotowe do podjęcia jakichkolwiek poważnych decyzji dotyczących żywności. Jednak są one tylko punktem wyjścia iz pewnością skuteczne w eksploracji i nauce. Chociaż modele są słabością projektu, zaplecze naszej aplikacji pozwala na łatwą aktualizację tych modeli. Jeśli użytkownik chce przyczynić się do naszego projektu, powinien bez problemu zastąpić nasze modele modelami, które sam wytrenuje.

Dyskusja

Aplikacja Rec² Recipe Exploration ma na celu pomóc ludziom odkrywać i uczyć się więcej o jedzeniu. Chcieliśmy stworzyć platformę dla smakoszy i szefów kuchni, aby odkrywać nowe i ulubione przepisy i składniki. Korzystając z naszej aplikacji, smakosze mogą sprawdzić, które kuchnie etniczne są do siebie podobne i być może spróbować czegoś nowego. Alternatywnie, domowi kucharze mogą szybko wyszukać swoje ulubione przepisy, aby zapamiętać wszystkie potrzebne składniki, zamiast przesiewać 3 strony tekstu i reklam z przepisu online.

W obecnym stanie aplikacji istnieją minimalne obawy etyczne. Głównym problemem jest widoczna stronniczość danych. Podczas eksploracji zbioru danych i ustaleń z modeli stało się jasne, że przepisy w naszych zbiorach danych w dużej mierze faworyzują dietę amerykańską. To odchylenie utrudnia modelom rozróżnienie różnych regionalnych diet. Na przykład model typu żywności miał tematy, które reprezentowały rzeczy takie jak cajun i potrawy z grilla, ale mógł wygenerować tylko ogólną kategorię „Azjatycka”, reprezentującą przepisy, które widział z różnych krajów azjatyckich. Innym problemem etycznym w tym duchu jest to, że tematy zostały oznaczone na podstawie osobistych doświadczeń zespołu z różnymi kuchniami. Warto o tym pamiętać, ponieważ jedzenie to temat, który pasjonuje wiele osób i każdy ma inne doświadczenia.

Jeśli nasza aplikacja lub modele miałyby być używane w aplikacji komercyjnej, możemy napotkać problemy z prawami autorskimi. Zbiory danych Recipe1M+ i Epicurious zostały pobrane z publicznych witryn internetowych, ale nadal mogą zawierać materiały lub przepisy chronione prawem autorskim. Wszelkie wnioski lub informacje wyciągnięte z aplikacji lub modeli mogą naruszać własność intelektualną autora przepisu, który ma prawa do ich treści. Nasza aplikacja została opracowana wyłącznie do celów akademickich, więc prawdopodobnie podlegamy ochronie w ramach dozwolonego użytku (Walker, 2018).

Zespół Rec² jest podekscytowany i dumny z tego, gdzie obecnie znajduje się nasza aplikacja, ale chciałby, aby zaszła znacznie dalej! Wzywamy wszystkich pasjonatów danych, smakoszy lub szefów kuchni, aby pomogli nam przekształcić tę aplikację w użyteczną i zabawną przestrzeń do odkrywania jedzenia. Kod źródłowy i modele aplikacji będą dostępne w publicznym repozytorium GitHub, aby ludzie mogli je ulepszać lub przekazywać nam opinie.

Głównym ograniczeniem dla aplikacji internetowej jest to, że pliki modeli nie mogą przekraczać 75 MB i naprawdę powinny pozostać poniżej 50 MB, ponieważ aplikacja jest wdrażana bezpośrednio z repozytorium GitHub za pośrednictwem Streamlit. Modele muszą również być zgodne z ustaloną listą składników, z odpowiednim przetwarzaniem i/lub mapowaniem w celu wyodrębnienia składników z rodzimej receptury. Chociaż tę listę składników można edytować, musi ona być udostępniana między modelami przewidywania składników i identyfikacji kuchni, aby zachować spójność. Same architektury modeli można zmienić, jeśli zapewniają oczywisty i wartościowy wzrost wydajności, lub można dostosować wagi i parametry.

Jest kilka fajnych funkcji, które zespół Rec² chciałby zobaczyć w naszej aplikacji, ale nie miał czasu na wdrożenie w tym projekcie. Daj nam znać, jeśli uważasz, że czegoś brakuje na tej liście.

  • Implementacja opinii użytkowników w naszych modelach byłaby świetnym sposobem na gromadzenie ulepszeń naszych modeli. Ta funkcja pozwoli użytkownikom zgodzić się lub nie zgodzić się ze składnikami lub etykietami, które zostały przewidziane, lub zasugerować dodatkowe, aby modele mogły zostać przeszkolone na podstawie tych informacji zwrotnych.
  • Pełne generowanie receptur z ilością składników i instrukcjami byłoby niesamowitym celem do osiągnięcia. Wymagałoby to znacznie większego przetwarzania języka naturalnego w celu wyodrębnienia ilości i struktury instrukcji.
  • Zbieranie większej liczby globalnych przepisów, aby uwzględnić w zbiorze danych błąd amerykańskiej diety.
  • Filtry dla różnych diet (wegetariańska, koszerna itp.) lub grup etnicznych.

Zestawienie pracy

Obaj autorzy, Michael Daly i John McNally, współpracowali w tandemie, aby wybrać i określić cele tego projektu. Pracowali razem nad opracowaniem techniki przetwarzania wstępnego w celu oczyszczenia i przygotowania zbiorów danych receptury do opracowania modelu. Michael Daly kierował rozwojem modeli rozpoznawania receptur i przewidywania składników. John McNally kierował rozwojem modeli identyfikacji typu kuchni, zarówno dla pochodzenia etnicznego, jak i rodzaju żywności. Obaj autorzy podzielili się odpowiedzialnością za pisanie i redagowanie tego posta na blogu.

Bibliografia

Bose, Bishal. 2020. Caption-IT: Głęboko oparty model obrazu do sekwencji: od rozwoju do wdrożenia! Analytics Vidhya (średnia). Dostęp grudzień 2022 zhttps:///analytics-vidhya/caption-it-image-to-sequence-deep-learning-model-development-to-deployment-7f9f04ab5fa0

„Podpisy pod obrazami z uwagą wizualną”. 2022. TensorFlow. Dostęp grudzień 2022 zhttps://www.tensorflow.org/tutorials/text/image_captioning

Marin, Javier i in. 2019. „Recipe1M+: zbiór danych do nauki osadzania międzymodalnego dla przepisów kulinarnych i obrazów żywności”. Transakcje IEEE dotyczące analizy wzorców i inteligencji maszynowej. Dostęp grudzień 2022 z tpami19.pdf (mit.edu)

Walker, Adam. 2018. „Dozwolony użytek — konieczność zdefiniowania prawa dla algorytmów sztucznej inteligencji”. DataDrivenInvestor (średni). Dostęp grudzień 2022 zhttps://medium.datadriveninvestor.com/fair-use-and-ai-87f77721f1ea

Xu, Kevin i in. 2015. „Pokaż, weź udział i powiedz: generowanie podpisów obrazów neuronowych z uwagą wizualną”. Dostęp grudzień 2022 zhttps://arxiv.org/pdf/1502.03044.pdf

Załącznik

A.1 Raport uzupełniający

Prezentowana praca jest rozwinięciem projektu Milestone II dla naszego Master of Applied Data Science na University of Michigan. Link do tego raportu znajduje się tutaj .

A.2 Opracowanie prognozy składników

Analiza czułości dla hiperparametrów modelu przewidywania składników, ilustrująca kompromisy między precyzją a wycofaniem w rozwoju modelu.

Oprócz dodatkowych wag włączonych do funkcji straty, wartość progowa dla pozytywnych prognoz została dostrojona do 0,02, aby uzyskać najlepsze wyniki. Niższy próg generuje więcej prognoz, ale wyższy próg ogranicza prognozy do tych z największą pewnością. Dzięki ulepszonemu potokowi przetwarzania wstępnego próg 0,02 prowadzi do 2,52 prawdziwych prognoz z 7,78 wszystkich prognoz na partycji testowej Recipe1M+. Te przepisy mają średnio 5,05 prawdziwych składników, więc model otrzymuje prawie połowę składników z każdego przepisu z korzyścią dla 50% więcej domysłów.

A.3 Metryki dla modelu LDA

Prawdopodobieństwo dziennika i średnia spójność tematów dla różnej liczby tematów dla alokacji latent-dirichlet (LDA).

Powyższy rysunek przedstawia metryki wydajności pięciu modeli LDA z różną liczbą tematów. Modele o najlepszych wynikach będą charakteryzować się najniższym poziomem zakłopotania oraz najwyższą logarytmiczną wiarygodnością i spójnością tematu. Wykresy pokazują, że model z 40 tematami działa ogólnie najlepiej; jednak widzimy wyraźny punkt przegięcia (po lewej) i skok (po prawej) na 20 tematów. Może to sugerować, że dodawanie kolejnych tematów do modelu przynosi coraz mniejsze zyski.