Rec²: 레시피 탐색
마이클 데일리 , 존 맥날리
소개
음식은 인간의 경험에 가장 크게 기여하는 요소 중 하나입니다. 그것은 우리의 감정과 감각을 사로잡습니다. 신선한 팬케이크의 달콤한 향기, 추운 밤에 따뜻한 수프의 위안의 대조, 불타는 그릴과 만나는 생 스테이크의 지글 지글. 수천 년 동안 인간은 빵을 나누기 위해 함께 모였습니다. 최근에는 좋은 음식을 만드는 기술을 보존하고 공유하면서 서면 레시피가 등장했습니다. 올바른 식사는 기억을 굳힐 수 있습니다. 특별한 레시피는 가족 유대 또는 수십억 달러 규모의 회사를 뒷받침할 수 있습니다. Rec²의 저희 팀은 새롭고 오래된 레시피의 탐색과 실험을 촉진하기 위해 웹 앱을 구축했습니다!
오늘날 수백만 개의 고품질 레시피를 온라인에서 사용할 수 있습니다. MIT 연구팀은 인기 있는 웹사이트에서 100만 개 이상을 스크랩하여 Recipe1M+ 데이터 세트를 구성했습니다(Marin, 2019). 각 레시피에는 기계 학습을 위한 풍부한 기질인 자연어, 수량 및 이미지가 혼합되어 있습니다. 우리 팀은 Recipe1M+ 데이터 세트를 사용하여 이러한 레시피를 해석하고 관련시키는 일련의 모델을 개발했습니다. 우리는 음식 발견과 창의성의 다음 진화가 데이터 과학에 의해 강화될 것이라고 믿습니다. 새로운 맛 조합, 재료 대체 또는 전체 레시피가 인공 지능에 의해 생성될 수 있습니다. 스마트한 분석을 통해 더 나은 물류 및 효율적인 소비를 위해 식품 재고 관리를 개선할 수 있습니다.
형평성과 유용성을 극대화하기 위해 이러한 모델은 설명하는 레시피만큼 광범위하게 액세스할 수 있어야 합니다. 우리 팀은 설치나 데이터 과학 경험 없이 실행할 수 있는 웹 앱에 모델을 통합하여 접근 가능성을 우선시했습니다. 우리가 제공하는 대시보드는 음식을 좋아하는 일반 청중을 위한 기계 학습에 대한 소개로 설계되었습니다.
여기 앱 이 있습니다 . 몇 가지 자신만의 프롬프트와 이미지를 시도해 보세요!
행동 양식
우리의 앱은 단순히 사용자의 두 가지 입력 중 하나를 요구합니다: 요리 이름 또는 요리 이미지. 나머지는 우리가 합니다! 아래 그림은 앱에서 사용하는 파이프라인을 개략적으로 보여줍니다. 사용자가 레시피의 이름을 입력하면 앱은 일반적인 짝짓기, 음식 유형 및 민족의 분석과 함께 예측된 재료를 반환하고 민족 그래프에 음식을 표시합니다. 사용자가 이미지를 업로드하면 앱은 레시피의 제목을 예측한 다음 동일한 분석을 수행합니다. 사용자에게 반환된 정보를 통해 사용자는 자신이 좋아하는 레시피를 새로운 방식으로 탐색할 수 있습니다.
Rec² 앱은 Streamlit이라는 Python 라이브러리로 구축되어 사용하기가 즐거웠습니다. Streamlit을 사용하면 개발자가 GitHub 리포지토리에서 기계 학습 모델을 빠르게 시작하고 호스팅할 수 있습니다. 우리 앱은 사이트의 모양을 제어하고 저장된 모델과 데이터에서 추론을 실행하는 지원 스크립트의 결과를 표시하는 기본 스크립트에서 실행됩니다. Streamlit의 단순하지만 강력한 기능 덕분에 우리 앱을 간단하고 쉽게 개선할 수 있었습니다.
Recipe1M+ 데이터세트
Recipe1M + 데이터 세트 는 다양한 방식으로 사용할 수 있는 크고 풍부한 데이터 세트입니다. 이 프로젝트의 범위를 제한하기 위해 각 성분의 정확한 양보다는 성분의 존재에 초점을 맞추었습니다. 데이터의 첫 번째 대대적인 청소는 재료에서 측정 또는 준비 기술과 같은 추가 정보를 제거하는 것과 관련이 있습니다. 이 경우 '다진 양파 1컵'과 같은 문구에서 '양파'를 추출하고자 합니다. 레시피 제목과 마찬가지로 레시피 제목에 추가되는 일반적인 필러 없이 요리 이름을 추출하려고 했습니다. 예를 들어 '할머니 베티의 세계적으로 유명한 초콜릿 칩 쿠키'에서 '초콜릿 칩 쿠키'를 꺼내고 싶습니다. 우리는 베티 할머니의 쿠키를 먹고 싶지만 이러한 필러 단어는 모델을 혼란스럽게 할 것입니다.
이러한 정리 단계를 수행하기 위해 원본 JSON 파일을 정리되고 더 사용하기 쉬운 버전으로 변환하는 스크립트가 작성되었습니다. 스크립트의 첫 번째 단계는 각 토큰의 품사(POS)를 토큰화하고 레이블을 지정하는 것이었습니다. 그런 다음 불용어, 특정 품사 및 일부 추가 정규식이 성분과 제목에서 제거되었습니다. 결과는 두 가지 방법으로 저장되었습니다. 첫 번째는 재료 모델에 대한 제목과 함께 사용할 새 JSON으로 저장된 상위 999개 토큰이었습니다. 이 JSON에는 1000번째 토큰에 대해 '기타'로 나열된 다른 모든 토큰과 함께 상위 999개 수의 토큰이 포함되어 있습니다. 정리된 데이터를 저장하는 두 번째 방법은 Pandas DataFrame에 쉽게 로드할 수 있는 정리되고 압축된 CSV에 저장하는 것입니다. 그런 다음 이 CSV를 사용하여 LDA 및 Word2Vec 모델을 만들었습니다.
정리된 데이터의 초기 버전은 우리 모델에 대한 견고한 결과를 생성했지만 개선의 여지가 상당했습니다. 가장 눈에 띄는 옵션은 공통 성분 이름의 변형입니다. 예를 들어 밀가루를 재료로 나열하는 레시피는 ['밀가루', '다목적 밀가루', 'AP 밀가루' 등]으로 나열할 수 있습니다. 우리 모델에게는 다른 성분이지만 사용자에게는 모두 같은 의미입니다. 이 변형을 수정하기 위해 상위 40개 성분에 대한 성분 매핑을 수동으로 생성하여 모델 성능을 개선했습니다. 매핑은 토큰의 상위 변형을 가장 일반적인 토큰으로 대체하여 생성되었습니다(예: '다용도 밀가루' 및 'AP 밀가루'가 모두 '밀가루'로 대체됨). 이 매핑은 모델 성능을 크게 향상시켰으며 더 큰 매핑으로 더 향상될 수 있습니다.
Epicurious 데이터 세트
Recipe1M+ 데이터 세트의 한 가지 약점은 일부 이미지가 팀이 스크랩한 웹 사이트에 사용자가 제출했다는 것입니다. 이러한 이미지에는 상당한 노이즈가 있으며 많은 이미지가 연결된 요리를 묘사하지 않는 것 같습니다. 잡음이 있는 이미지를 수동으로 제거하려고 시도하는 대신 이미지-제목 모델 훈련을 돕기 위해 별도의 데이터 세트를 선택했습니다. Kaggle 의 Food Ingredients and Recipes Dataset with Images 데이터 세트에는 Epicurious의 13,000개 이상의 레시피가 포함되어 있습니다. 이 데이터 세트는 Recipe1M+보다 훨씬 작지만 각 이미지는 실제 레시피의 기본 스톡 사진이므로 제목과 이미지 사이의 충실도가 훨씬 더 높습니다. 또한 Epicurious 레시피는 더 장황하고 설명적인 제목을 사용하는 경향이 있으므로 가장 흥미로운 결과로 이어질 것이라고 믿었습니다.
레시피 인식
레시피 인식 모델은 음식 이미지를 입력으로 받아 일련의 토큰(이상적으로는 묘사된 레시피의 제목)을 출력합니다. 모델은 음식이 어떻게 보이는지와 언어가 어떻게 구성되는지 모두 학습해야 합니다. 여러 모델 아키텍처가 테스트되었지만, 우리가 궁극적으로 선택한 것은 Tensorflow의 이미지 캡션 자습서 를 밀접하게 따르는 이미지 임베더가 있는 변환기-디코더입니다 . 이미지 임베더는 Google의 헤드리스 MobileNet 모델(MobileNetV3Small)로, 이미지에서 특징을 추출하여 모델에 전달합니다. MobileNet 모델은 소형이며 ImageNet 데이터 세트의 수백만 이미지에 대해 훈련되었습니다. 레시피 인식 모델은 이러한 특징을 가지고 레시피 제목을 순차적으로 구축합니다.
불행하게도 레시피 인식 모델은 사실적으로 들리는 요리 이름을 생성하는 데 상당히 능숙하지만 제공된 입력 이미지와 일치하는 데는 그다지 좋지 않습니다. 우리가 테스트한 다른 아키텍처 및 변형에는 제목 토큰에 대한 GloVe 임베딩이 포함된 시퀀스-시퀀스(seq2seq) 모델, InceptionV3 기반 이미지 임베더 및 음식 분류기와 쌍을 이루는 이미지 세분화 모델(Bose, 2020)이 포함되었습니다. 불행하게도 작업에서 의미 있게 더 성공적인 변형이나 아키텍처는 없었습니다. MobileNet 이미지 기능 추출 계층이 있는 변환기-디코더 아키텍처가 가장 작기 때문에 선택되었으며, 이는 최종 웹 앱을 가볍게 유지하는 데 도움이 되고 가장 장황하고 재미있는 예측을 생성합니다.
주의 맵은 성능 저하의 원인을 설명하는 데 도움이 됩니다. 주의 맵은 이미지의 어떤 영역이 모델에서 가장 많은 뉴런을 활성화하는지 보여줍니다. 일반적으로 모델이 각 토큰을 예측할 때 이미지 내에서 보고 있는 위치를 보여줍니다. 위와 같이 모델은 마카로니와 치즈의 색상과 질감을 뚜렷하게 나타내는 영역을 기반으로 "mac"을 예측합니다. 거기에서 초점 영역은 이미지의 여백과 모서리에 있습니다. 모델이 이미지 픽셀 내의 데이터보다 문법 이해에 더 의존하는 것처럼 보이기 때문입니다. 이 모델은 또한 조명이 밝고 선명하며 전문적인 사진에서 더 나은 성능을 발휘하는 것으로 보입니다. 훈련 데이터에 전문적으로 촬영된 이미지가 거의 독점적으로 포함되어 있기 때문일 수 있습니다. 더 다양하지만 더 깨끗한 훈련 데이터 세트는 모델의 성능을 크게 향상시킬 것입니다.
성분 예측
레시피 이름이 주어지면 성분 예측 모델은 해당 레시피에 포함된 가능성 있는 성분을 출력합니다. 모델의 크기를 제한하기 위해 가장 자주 사용되는 상위 999개의 제목 토큰과 재료만 훈련 중에 포함되었고 다른 모든 항목은 "기타" 범주에 할당되었습니다. 레시피 인식 모델과 달리 성분 예측 모델은 시퀀스 대신 희소 벡터를 입력 및 출력으로 사용합니다. 재료 목록의 순서는 임의적이며 레시피의 토큰 순서는 기본 재료를 결정하는 데 덜 중요합니다. 신경망은 간단한 인코더-디코더 아키텍처에서 ReLU 활성화가 포함된 3개의 조밀한 은닉층으로 구성됩니다.
아키텍처는 간단했지만 이 다중 레이블 분류 작업을 위해 교육 방법을 고도로 사용자 정의해야 했습니다. 주어진 레시피에 대해 알려진 재료의 대부분은 존재하지 않습니다. 따라서 모든 성분에 대해 확률을 0으로 출력하는 사소한 모델은 진부정의 수가 압도적으로 많기 때문에 99% 이상의 정확도를 달성할 것입니다. 극단적인 클래스 불균형을 보상하기 위해 Tensorflow의 weighted_cross_entropy_with_logits긍정적인 예측에 훨씬 더 높은 가중치를 적용하도록 함수가 수정되었습니다. 또한 각 성분의 가중치는 빈도에 따라 선형적으로 조정하여 희귀 성분의 정확한 예측이 일반적인 성분의 예측보다 높게 가중치를 부여했습니다. 이러한 가중치는 재료 분포의 불균형에도 불구하고 모델이 모든 레시피에 대해 가장 일반적인 몇 가지 재료를 단순히 예측하는 것을 방지하는 데 도움이 되었습니다.
테스트 파티션의 평균 레시피에는 모델에 알려진 1,000가지 성분(5.05개의 실제 성분) 중 1% 미만이 포함되어 있습니다. 성분 예측 모델은 여전히 99% 이상의 전체 정확도를 얻지만, 0.50의 재현율과 0.32의 정밀도도 달성했습니다. 즉, 모델이 평균적으로 레시피당 7.78개의 예측을 하고 그 중 2.52개가 정확하다는 것을 의미합니다. 레시피와 실제로 일치하는 예측된 재료의 원시 확률을 고려할 때(상위 몇 가지 재료 제외) 이는 엄청난 결과입니다. 모델이 파슬리와 실란트로와 같은 고명으로 어려움을 겪는 동안 가장 자주 사용되는 거의 모든 50가지 재료를 최소 10%의 정확도로 정확하게 식별합니다.
요리 식별
이 프로젝트의 요리 식별 부분은 음식 유형과 민족의 두 가지 형태를 취했습니다. Recipe1M+ 데이터 세트에는 이러한 작업에 대한 레이블이 포함되어 있지 않으므로 감독되지 않은 방법으로 모델을 개발해야 했습니다. 이와 같이 식품 유형 식별은 LDA(Latent Dirichlet Allocation) 모델을 사용하여 수행되었으며 민족 부분은 Word2Vec 모델을 사용하여 수행되었습니다.
LDA 모델
토픽 모델이 반환한 토픽의 해석 가능성과 설명 사이의 균형을 맞추는 것이 프로젝트의 이 부분에서 주요 과제였습니다. 소수의 주제는 잘 정의된 주제 집합을 생성할 가능성이 높지만 주제의 설명이 부족할 수 있습니다. 더 많은 항목이 설명적인 항목을 생성할 수 있지만 사람이 해석할 수 없을 가능성이 높습니다. 데이터세트에는 각 레시피에 대한 실측 레이블이 포함되어 있지 않기 때문에 팀은 다양한 벡터라이저, 모델, 하이퍼파라미터 및 평가 기술의 사용을 조사했습니다. 궁극적으로 20개의 주제가 있는 LDA 모델이 선택되었는데, 이는 주제의 해석 가능성과 설명 사이에서 최상의 균형을 보여주었기 때문입니다. 항목 수와 계산된 메트릭(로그 우도, 당혹감 및 항목 일관성) 사이의 LDA 모델에 대한 장단점은 부록에 나와 있습니다.
출력 주제 벡터를 해석하고 수동으로 레이블을 지정하는 작업은 주제 모델링에서 가장 어려운 부분 중 하나입니다. 아래 그림은 두 가지 주제 벡터에서 반환된 일부 토큰과 이러한 주제에 대한 최상위 가중치 레시피 제목에서 생성된 단어 구름을 보여줍니다. 주제 0은 빵이나 반죽 주제로 명확하게 식별할 수 있지만 주제 2는 좀 더 모호합니다. '캐서롤', 일반적인 '이탈리아' 카테고리 또는 완전히 다른 것으로 라벨이 지정될 수 있습니다. 주제 벡터에 대한 레이블의 모호성은 모델에 포함된 주제의 수에 따라 증가했습니다. 최선의 판단으로 라벨을 지정했지만 해당 분야 전문가와 상의하는 것이 가장 좋은 방법이었습니다.
LDA 모델의 출력은 위에 표시된 주제 벡터의 전체 버전입니다. 이러한 주제 벡터는 앱 내에 저장되며 각 주제 벡터와 예상 재료 목록 간의 코사인 유사도를 계산하여 레시피를 분류합니다.
Word2Vec 모델
word2vec 모델은 말뭉치에 있는 단어 간의 연관성을 학습하기 위해 문서 말뭉치에서 훈련되는 신경망입니다. 즉, 모델에 레이블을 전달하고 주제 벡터를 나타내는 해당 레이블과 가장 유사한 단어를 반환하도록 할 수 있습니다. 이를 통해 기본 레이블을 얼마든지 생성하고 해당 레이블을 할당하는 데 사용할 수 있는 주제 벡터를 생성할 수 있습니다. 인종을 사용하는 대신 '아침', '저녁', '디저트' 입력에 대한 주제 벡터를 만들어 입력 레시피를 해당 레이블로 분류할 수 있습니다.
이 작업을 위한 word2vec 모델은 레시피 재료와 제목 모두로 훈련되었습니다. 조리법의 제목에는 모델이 학습하는 데 도움이 되는 인종 또는 기타 중요한 레이블이 포함되는 경우가 많습니다. 결과적으로 word2vec 모델이 반환하는 토큰은 항상 성분이 아니며 입력과 유사한 다른 레이블일 수 있습니다. 예를 들어 'Greek' 입력에 대해 반환된 일부 토큰은 'tzatziki', 'feta' 및 'Mediterranean'입니다. word2vec 모델은 여전히 다른 재료에 대한 이러한 레이블과의 연관성이 있기 때문에 재료가 아닌 토큰은 조리법에 민족성을 할당하는 데 여전히 허용됩니다. '지중해식'은 '병아리콩' 또는 '오이'와 같은 재료와 연결될 수 있으며, 이는 여전히 모델이 해당 조리법을 '그리스식'으로 식별하는 데 도움이 됩니다.
이러한 주제 벡터가 있으면 t-SNE(t-distributed Stochastic Neighbor Embedding) 플롯에 플롯하여 서로 어떻게 관련되어 있는지 시각화할 수 있습니다. 아래의 t-SNE 플롯은 2D 플롯으로 축소된 각 민족 레이블의 상위 10개 토큰을 보여줍니다. T-SNE 플롯은 저차원 공간에서 고차원 데이터를 시각화하는 방법입니다. 비슷한 포인트와 클러스터를 더 가깝게 유지하고 유사하지 않은 포인트와 클러스터를 분리하려고 시도합니다. 결과적으로 인도 음식과 같은 것이 대부분의 다른 요리와 분리된 밀집된 군집을 가지고 있거나 아시아 레이블이 오른쪽으로 분리되어 있지만 여전히 서로 가깝다는 것을 알 수 있습니다.
결과
Rec² 팀은 우리 앱이 안착한 위치에 감격했습니다. 우리는 일반 대중이 우리 모델의 힘을 활용할 수 있도록 하는 사용자 친화적이고 효율적인 웹 앱을 만들기 시작했습니다. 앱은 사용자가 시작하는 데 두 가지 입력 중 하나만 필요하며 결과를 표시하는 추론 시간은 최대 5초를 넘지 않습니다. 임의적이지만 재미있는 측정 기준은 이 앱을 사용하고 즐길 수 있는 기술적으로 어려운 할아버지에게 이것을 보냈다는 것입니다.
앱의 효율성과 접근성은 이 프로젝트의 가장 어려운 측면 중 하나였지만 가장 큰 강점 중 하나이기도 합니다. 속도 메트릭을 충족하기 위해 모든 모델을 저장하고 사용할 모든 데이터를 미리 계산해야 했습니다. 또한 Streamlit의 실험적인 메모이제이션 기능 중 일부를 활용할 수 있었습니다. 이러한 함수는 사용자가 앱의 다른 부분과 상호 작용할 때 모든 것을 다시 계산할 필요가 없도록 서로 다른 출력을 메모했습니다. 그 결과 앱의 다양한 모델이 원활하게 통합되었습니다.
우리 프로젝트의 주요 약점은 모델 자체에 결함이 있지만 여전히 식품 기반 애플리케이션을 위한 기계 학습 기능에 대한 유용한 소개입니다. 성분 예측 모델은 대체로 논리적이지만 보수적인 성분 목록을 생성합니다. 레시피 인식 모델은 때때로 합리적인 출력을 생성하지만 종종 입력 이미지와 명확하게 관련되지 않은 새로운 요리에 대한 재미있는 개념을 생성합니다. 식품 유형 및 민족 모델은 감독되지 않은 기술을 사용하여 생성되었으며, 이는 이상적이지는 않지만 ground-truth 레이블이 있는 데이터 세트가 달성할 수 있는 것의 풍미(*윙크*)를 제공합니다. 이러한 모델은 음식에 대한 심각한 결정을 알릴 준비가 되어 있지 않습니다. 그러나 그것들은 출발점일 뿐이며 탐색과 학습에 확실히 효과적입니다. 모델은 프로젝트의 약점이지만 애플리케이션의 백엔드는 이러한 모델을 쉽게 업그레이드할 수 있도록 합니다. 사용자가 우리 프로젝트에 기여하고 싶다면 우리 모델을 스스로 훈련하는 모델로 교체하는 것이 간단하다는 것을 알게 될 것입니다.
논의
Rec² Recipe Exploration 앱은 사람들이 음식을 탐색하고 더 많이 배울 수 있도록 돕는 것을 목표로 합니다. 미식가와 셰프 모두가 새롭고 좋아하는 레시피와 재료를 탐색할 수 있는 플랫폼을 만들고 싶었습니다. 식도락가는 앱을 사용하여 어떤 민족 요리가 서로 유사한지 탐색하고 새로운 것을 시도할 수 있습니다. 또는 가정 요리사는 온라인 레시피에서 3페이지 분량의 텍스트와 광고를 살펴보는 대신 좋아하는 레시피를 빠르게 검색하여 필요한 모든 재료를 기억할 수 있습니다.
앱이 현재 서 있기 때문에 최소한의 윤리적 문제가 있습니다. 주요 관심사는 데이터의 명백한 편향입니다. 데이터 세트와 모델의 결과를 탐색하는 동안 데이터 세트의 레시피가 대체로 미국식 식단을 선호한다는 것이 분명해졌습니다. 이러한 편향은 모델이 서로 다른 지역 식단을 구별하기 어렵게 만듭니다. 예를 들어 음식 유형 모델에는 케이준 및 바비큐 음식과 같은 항목을 나타내는 주제가 있지만 다른 아시아 국가에서 본 조리법을 나타내는 일반적인 '아시아' 범주만 생성할 수 있습니다. 이 맥락에서 또 다른 윤리적 문제는 주제가 다른 요리에 대한 팀의 개인적인 경험을 기반으로 분류되었다는 것입니다. 음식은 많은 사람들이 열정을 갖고 있는 주제이고 모든 사람들이 서로 다른 경험을 가지고 있기 때문에 이것은 주목하는 것이 중요합니다.
당사의 앱 또는 모델이 상업용 애플리케이션에 사용되는 경우 저작권 문제가 발생할 수 있습니다. Recipe1M+ 및 Epicurious 데이터 세트는 공개 웹사이트에서 가져왔지만 여전히 저작권이 있는 자료나 레시피를 포함할 수 있습니다. 앱이나 모델에서 가져온 모든 결론이나 학습 내용은 콘텐츠에 대한 권리가 있는 레시피 작성자의 지적 재산권을 침해할 수 있습니다. 우리 앱은 학업 목적으로만 개발되었으므로 공정 사용으로 보호될 가능성이 높습니다(Walker, 2018).
Rec² 팀은 우리 앱의 현재 위치에 대해 흥분하고 자랑스러워하지만 훨씬 더 발전하는 것을 보고 싶습니다! 우리는 열정적인 데이터 과학자, 식도락가 또는 셰프에게 이 앱을 유용하고 재미있는 음식 탐색 공간으로 만드는 데 도움을 줄 것을 요청합니다. 앱의 소스 코드와 모델은 사람들이 개선하거나 피드백을 제공할 수 있도록 공개 GitHub 리포지토리에서 사용할 수 있습니다.
웹 앱의 주요 제약 조건은 모델 파일이 75MB를 초과할 수 없으며 앱이 Streamlit을 통해 GitHub 리포지토리에서 직접 배포되기 때문에 실제로는 50MB 미만으로 유지되어야 한다는 것입니다. 모델은 또한 기본 레시피에서 재료를 추출하기 위한 해당 처리 및/또는 매핑과 함께 설정된 재료 목록을 준수해야 합니다. 이 성분 목록은 편집할 수 있지만 정렬을 유지하려면 성분 예측 모델과 요리 식별 모델 간에 공유해야 합니다. 모델 아키텍처 자체가 명백하고 가치 있는 성능 향상을 나타내거나 가중치 및 매개변수를 조정할 수 있는 경우 변경될 수 있습니다.
Rec² 팀이 우리 앱에서 보고 싶었지만 이 프로젝트를 위해 구현할 시간이 없었던 몇 가지 멋진 기능이 있습니다. 이 목록에서 누락된 항목이 있다고 생각되면 알려주십시오.
- 모델에 사용자 피드백을 구현하는 것은 모델 개선을 크라우드소싱하는 멋진 방법이 될 것입니다. 이 기능을 통해 사용자는 예측된 성분 또는 레이블에 동의하거나 동의하지 않거나 추가 항목을 제안하여 이 피드백에 대해 모델을 재교육할 수 있습니다.
- 많은 양의 재료와 지침이 포함된 전체 레시피 생성은 도달해야 할 멋진 목표가 될 것입니다. 이것은 명령의 양과 구조를 추출하기 위해 훨씬 더 많은 자연어 처리를 포함합니다.
- 데이터 세트에서 미국 식단 편향을 설명하기 위해 더 많은 글로벌 레시피를 수집합니다.
- 다양한 식단(채식주의자, 코셔 등) 또는 인종에 대한 필터.
작업의 문
저자인 Michael Daly와 John McNally는 함께 협력하여 이 프로젝트의 목표를 선택하고 범위를 정했습니다. 그들은 모델 개발을 위해 레시피 데이터 세트를 정리하고 준비하는 전처리 기술을 개발하기 위해 협력했습니다. Michael Daly는 레시피 인식 및 성분 예측 모델 개발을 주도했습니다. John McNally는 인종과 음식 유형 모두에 대한 요리 유형 식별 모델의 개발을 주도했습니다. 두 저자 모두 이 블로그 게시물의 작성 및 편집 책임을 공유했습니다.
참조
보스, 비샬. 2020. Caption-IT: Image to Sequence Deep Leaning 모델: 개발에서 배포로! Analytics Vidhya(중간). 2022년 12월부터 액세스https:///analytics-vidhya/caption-it-image-to-sequence-deep-learning-model-development-to-deployment-7f9f04ab5fa0
"시각적 관심을 가진 이미지 캡션." 2022. 텐서플로우. 2022년 12월부터 액세스https://www.tensorflow.org/tutorials/text/image_captioning
마린, 하비에르 등. 2019. "Recipe1M+: 요리 레시피 및 음식 이미지를 위한 크로스모달 임베딩 학습을 위한 데이터 세트." 패턴 분석 및 머신 인텔리전스에 대한 IEEE 트랜잭션. tpami19.pdf(mit.edu) 에서 2022년 12월에 액세스 함
워커, 아담. 2018. "공정한 사용 - AI 알고리즘에 대한 법률 정의의 긴급성." DataDrivenInvestor(중간). 2022년 12월부터 액세스https://medium.datadriveninvestor.com/fair-use-and-ai-87f77721f1ea
쉬, 케빈, 외. 2015. "보이고, 참석하고, 말하라: 시각적 관심을 통한 신경 이미지 캡션 생성." 2022년 12월부터 액세스https://arxiv.org/pdf/1502.03044.pdf
부록
A.1 보충 보고서
제시된 작업은 미시간 대학의 응용 데이터 과학 석사를 위한 Milestone II 프로젝트의 확장입니다. 해당 보고서는 여기 로 연결됩니다 .
A.2 성분 예측 개발
손실 함수에 통합된 추가 가중치 외에도 긍정적인 예측의 임계값은 최상의 결과를 위해 0.02로 조정되었습니다. 임계값이 낮을수록 더 많은 예측이 생성되지만 임계값이 높을수록 가장 신뢰도가 높은 예측으로 제한됩니다. 개선된 사전 처리 파이프라인을 사용하면 임계값 0.02는 Recipe1M+ 테스트 파티션에 대한 총 예측 7.78개의 실제 예측 2.52개로 이어집니다. 이 레시피에는 평균 5.05개의 실제 재료가 있으므로 모델은 50% 더 많은 추측의 이점으로 각 레시피의 재료의 거의 절반을 얻습니다.
A.3 LDA 모델에 대한 지표
위의 그림은 주제 수가 다른 5개 LDA 모델의 성능 메트릭을 보여줍니다. 가장 성능이 좋은 모델은 당혹감이 가장 낮고 로그 우도 및 주제 일관성이 가장 높습니다. 그래프는 40개의 주제가 있는 모델이 전체적으로 가장 잘 수행되고 있음을 보여줍니다. 그러나 20개의 주제에서 명확한 변곡점(왼쪽)과 점프(오른쪽)를 볼 수 있습니다. 이는 모델에 더 많은 주제를 추가하는 데 따른 수익 감소가 있음을 시사할 수 있습니다.

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































