Rec²: Khám phá công thức

Dec 10 2022
Một ống kính tương tác, hỗ trợ máy học về thực phẩm
Michael Daly, John McNally Giới thiệu Thực phẩm là một trong những thứ đóng góp phong phú nhất cho trải nghiệm của con người. Nó nắm giữ cảm xúc và các giác quan của chúng ta.

Michael Daly , John McNally

Giới thiệu

Thực phẩm là một trong những đóng góp phong phú nhất cho trải nghiệm của con người. Nó nắm giữ cảm xúc và các giác quan của chúng ta. Mùi thơm ngọt ngào của những chiếc bánh kếp tươi, sự tương phản dễ chịu của món súp ấm áp trong một đêm lạnh giá, tiếng xèo xèo của bít tết sống khi nướng trên lửa. Trong nhiều thiên niên kỷ, con người đã cùng nhau bẻ bánh. Gần đây, các công thức nấu ăn bằng văn bản đã xuất hiện khi chúng tôi lưu giữ và chia sẻ các kỹ thuật chế biến món ăn ngon của mình. Một bữa ăn phù hợp có thể củng cố một kỷ niệm. Một công thức đặc biệt có thể củng cố mối quan hệ gia đình hoặc một công ty trị giá hàng tỷ đô la. Nhóm của chúng tôi tại Rec² đã xây dựng một ứng dụng web để thúc đẩy việc khám phá và thử nghiệm các công thức nấu ăn mới và cũ!

Ngày nay, hàng triệu công thức nấu ăn chất lượng cao có sẵn trực tuyến. Một nhóm nghiên cứu từ MIT đã thu thập hơn 1 triệu trong số chúng từ các trang web phổ biến để tạo thành bộ dữ liệu Recipe1M+ (Marin, 2019). Mỗi công thức bao gồm sự kết hợp của ngôn ngữ tự nhiên, số lượng và hình ảnh – một nền tảng phong phú cho máy học. Nhóm của chúng tôi đã sử dụng bộ dữ liệu Recipe1M+ để phát triển một bộ mô hình nhằm diễn giải và liên hệ các công thức nấu ăn này. Chúng tôi tin rằng sự phát triển tiếp theo của việc khám phá và sáng tạo thực phẩm sẽ được thúc đẩy bởi khoa học dữ liệu. Trí tuệ nhân tạo có thể tạo ra các cặp hương vị mới, thay thế thành phần hoặc toàn bộ công thức nấu ăn. Các phân tích thông minh có thể cho phép quản lý hàng tồn kho thực phẩm tốt hơn để phục vụ hậu cần tốt hơn và tiêu thụ hiệu quả.

Để tối đa hóa tính công bằng và tính hữu dụng của chúng, các mô hình này cần được tiếp cận rộng rãi như các công thức mà chúng mô tả. Nhóm của chúng tôi đã ưu tiên khả năng tiếp cận bằng cách tích hợp các mô hình của chúng tôi vào một ứng dụng web có thể chạy mà không cần bất kỳ cài đặt hoặc trải nghiệm khoa học dữ liệu nào. Trang tổng quan mà chúng tôi trình bày được thiết kế để giới thiệu về công nghệ máy học dành cho đối tượng yêu thích ẩm thực nói chung.

Đây là ứng dụng . Vui lòng thử một vài lời nhắc và hình ảnh của riêng bạn!

phương pháp

Ứng dụng của chúng tôi chỉ yêu cầu một trong hai thông tin đầu vào từ người dùng: tên món ăn hoặc hình ảnh món ăn. Chúng tôi làm phần còn lại! Hình dưới đây tổng quan về đường ống mà ứng dụng của chúng tôi sử dụng. Nếu người dùng nhập tên của một công thức, ứng dụng sẽ trả về các thành phần được dự đoán với các cặp phổ biến, phân tích loại thực phẩm và dân tộc, đồng thời sẽ vẽ đồ ăn trên biểu đồ dân tộc. Nếu người dùng tải lên một hình ảnh, ứng dụng sẽ dự đoán tiêu đề của công thức, sau đó thực hiện các phân tích tương tự. Thông tin được trả về cho người dùng cho phép họ khám phá các công thức nấu ăn yêu thích của mình theo một cách mới.

Sơ đồ khối các thành phần ứng dụng web.

Ứng dụng Rec² được xây dựng với thư viện Python có tên là Streamlit, rất thú vị khi sử dụng. Streamlit cho phép các nhà phát triển nhanh chóng khởi chạy và lưu trữ các mô hình máy học của họ từ kho lưu trữ GitHub. Ứng dụng của chúng tôi được chạy từ tập lệnh chính kiểm soát giao diện của trang web và hiển thị kết quả từ các tập lệnh hỗ trợ chạy suy luận từ các mô hình và dữ liệu đã lưu của chúng tôi. Các chức năng đơn giản nhưng mạnh mẽ từ Streamlit giúp việc triển khai ứng dụng của chúng tôi trở nên đơn giản và dễ cải thiện.

Bộ dữ liệu Recipe1M+

Bộ dữ liệu Recipe1M+ là một bộ dữ liệu lớn, phong phú có thể được sử dụng theo nhiều cách. Để giới hạn phạm vi của dự án này, chúng tôi chọn tập trung vào sự hiện diện của các thành phần hơn là số lượng chính xác của từng thành phần. Quá trình làm sạch dữ liệu quan trọng đầu tiên liên quan đến việc loại bỏ thông tin bổ sung như phép đo hoặc kỹ thuật chuẩn bị khỏi các thành phần. Trong trường hợp này, chúng tôi muốn trích xuất 'hành tây' từ một cụm từ như '1 chén hành tây xắt nhỏ'. Tương tự như vậy đối với tiêu đề của công thức nấu ăn, chúng tôi muốn trích xuất tên món ăn mà không có phần đệm thông thường được thêm vào tiêu đề công thức. Ví dụ: chúng tôi muốn lấy 'bánh quy sô cô la chip' từ 'Bánh quy sô cô la chip nổi tiếng thế giới của bà Betty'. Mặc dù chúng tôi rất muốn có một số bánh quy của Bà Betty, nhưng những từ bổ sung này sẽ chỉ khiến người mẫu bối rối.

Để thực hiện các bước làm sạch này, một tập lệnh đã được viết để chuyển đổi tệp JSON gốc thành một phiên bản đã được làm sạch và có thể sử dụng được nhiều hơn. Bước đầu tiên trong tập lệnh là mã hóa và gắn nhãn phần lời nói (POS) cho mỗi mã thông báo. Sau đó, các từ dừng, một số phần nhất định của bài phát biểu và một số biểu thức chính quy bổ sung đã bị xóa khỏi thành phần và tiêu đề. Kết quả sau đó được lưu theo hai cách. Đầu tiên là 999 mã thông báo hàng đầu được lưu dưới dạng JSON mới để sử dụng với tên mô hình thành phần. JSON này chứa các mã thông báo có tổng số 999 cao nhất cùng với tất cả các mã thông báo khác được liệt kê là 'khác' đối với mã thông báo thứ 1000. Cách thứ hai để lưu dữ liệu đã làm sạch là trong CSV được làm sạch và cô đọng, có thể dễ dàng tải vào Khung dữ liệu Pandas. CSV này sau đó được sử dụng để tạo các mô hình LDA và Word2Vec.

Phiên bản ban đầu của dữ liệu được làm sạch đã tạo ra kết quả vững chắc cho các mô hình của chúng tôi, nhưng vẫn còn chỗ cần cải thiện đáng kể. Tùy chọn rõ ràng nhất là sự thay đổi trong tên của các thành phần phổ biến. Ví dụ: các công thức nấu ăn liệt kê bột mì là một thành phần có thể liệt kê nó là ['bột mì', 'bột mì đa dụng', 'bột mì AP', v.v.]. Đối với các mô hình của chúng tôi, đây là những thành phần khác nhau, nhưng đối với người dùng, tất cả những thành phần này đều có ý nghĩa giống nhau. Để khắc phục biến thể này, một ánh xạ thành phần cho 40 thành phần hàng đầu đã được tạo thủ công để cải thiện hiệu suất của mô hình. Ánh xạ được tạo bằng cách thay thế các biến thể hàng đầu của mã thông báo bằng mã thông báo phổ biến nhất (ví dụ: 'bột mì đa dụng' và 'bột mì AP' đều được thay thế bằng 'bột mì'). Ánh xạ này đã cải thiện đáng kể hiệu suất của mô hình và có thể được cải thiện hơn nữa với ánh xạ lớn hơn,

Mẫu ánh xạ thành phần cho hai thành phần phổ biến. Tất cả các biến thể của trứng và đường này đều tồn tại trong quá trình tiền xử lý làm sạch dữ liệu ban đầu.

Tập dữ liệu Epicurious

Một điểm yếu của bộ dữ liệu Recipe1M+ là một số hình ảnh do người dùng gửi đến các trang web mà nhóm đã thu thập. Có tiếng ồn đáng kể trong số những hình ảnh này và nhiều hình ảnh dường như không mô tả món ăn mà chúng được gắn vào. Thay vì cố gắng cắt bớt những hình ảnh nhiễu theo cách thủ công, một bộ dữ liệu riêng biệt đã được chọn để giúp huấn luyện mô hình chuyển đổi hình ảnh thành tiêu đề. Bộ dữ liệu Công thức và Thành phần Thực phẩm với Bộ dữ liệu Hình ảnh trên Kaggle chứa hơn 13.000 công thức nấu ăn từ Epicurious. Mặc dù bộ dữ liệu này nhỏ hơn nhiều so với Recipe1M+, nhưng mỗi hình ảnh là ảnh lưu trữ chính trên công thức thực tế, do đó, tiêu đề và hình ảnh có độ trung thực cao hơn nhiều. Ngoài ra, các công thức nấu ăn của Epicurious có xu hướng có nhiều tiêu đề dài dòng và mô tả hơn, vì vậy chúng tôi tin rằng nó sẽ dẫn đến những kết quả thú vị nhất.

Nhận dạng công thức

Mô hình nhận dạng công thức lấy hình ảnh của thực phẩm làm đầu vào và xuất ra một chuỗi mã thông báo, lý tưởng nhất là tiêu đề của công thức được mô tả. Mô hình cần tìm hiểu cả cách thức ăn và cấu trúc ngôn ngữ. Một số kiến ​​trúc mô hình đã được thử nghiệm, nhưng kiến ​​trúc mà chúng tôi chọn cuối cùng là bộ giải mã biến áp với bộ nhúng hình ảnh, theo sát hướng dẫn tạo chú thích hình ảnh từ Tensorflow. Trình nhúng hình ảnh là mô hình MobileNet không đầu của Google (MobileNetV3Small), mô hình này trích xuất các tính năng từ hình ảnh để chuyển sang mô hình của chúng tôi. Các mô hình MobileNet nhỏ gọn và đã được đào tạo trên hàng triệu hình ảnh trong bộ dữ liệu ImageNet. Mô hình nhận dạng công thức sử dụng các tính năng này và tuần tự xây dựng tiêu đề công thức.

Sơ đồ của quá trình tuần tự dự đoán tiêu đề công thức. Tiêu đề dự đoán được khởi tạo dưới dạng mã thông báo bắt đầu ( ). Mô hình dự đoán mã thông báo tiếp theo dựa trên mã thông báo trước đó và hình ảnh đầu vào. Quá trình lặp lại cho đến khi mã thông báo kết thúc ( ) được dự đoán.

Thật không may, mặc dù mô hình nhận dạng công thức khá tốt trong việc tạo ra các tên món ăn nghe có vẻ thực tế, nhưng nó không khớp với hình ảnh đầu vào được cung cấp cho lắm. Các kiến ​​trúc và biến thể khác mà chúng tôi đã thử nghiệm bao gồm mô hình sắp xếp theo trình tự (seq2seq) với các phần nhúng GloVe cho mã thông báo tiêu đề, trình nhúng hình ảnh dựa trên InceptionV3 và mô hình phân đoạn hình ảnh được ghép nối với bộ phân loại thực phẩm (Bose, 2020). Thật không may, không có biến thể hoặc kiến ​​trúc nào thành công hơn một cách có ý nghĩa trong nhiệm vụ này. Kiến trúc bộ giải mã biến áp với lớp trích xuất tính năng hình ảnh MobileNet đã được chọn vì nó là lớp nhỏ nhất, giúp giữ cho ứng dụng web cuối cùng nhẹ và tạo ra các dự đoán dài dòng và thú vị nhất.

Bản đồ chú ý để nhận dạng công thức có hình ảnh mì ống và pho mát. Mô hình dự đoán chính xác “mắc ca và phô mai”, nhưng ngoại suy “với hạt dẻ và hương thảo” dựa trên các vùng trống của hình ảnh.

Bản đồ chú ý giúp giải thích nguyên nhân gây ra hiệu suất kém. Bản đồ chú ý hiển thị vùng nào của hình ảnh đang kích hoạt nhiều nơ-ron nhất trong mô hình. Nói một cách thông thường, nó cho biết vị trí mà mô hình đang tìm kiếm trong một hình ảnh khi nó dự đoán từng mã thông báo. Như được hiển thị ở trên, mô hình dự đoán “mac” dựa trên khu vực thể hiện rõ ràng màu sắc và kết cấu của mì ống và pho mát. Từ đó, các vùng tiêu điểm nằm ở lề và góc của hình ảnh, vì mô hình dường như dựa nhiều vào sự hiểu biết về ngữ pháp của nó hơn bất kỳ dữ liệu nào trong pixel hình ảnh. Mô hình này dường như cũng hoạt động tốt hơn trên các bức ảnh chuyên nghiệp, rõ ràng, được chiếu sáng tốt, có thể là do dữ liệu đào tạo hầu như chỉ chứa các hình ảnh được chụp chuyên nghiệp. Tập dữ liệu đào tạo đa dạng hơn nhưng rõ ràng hơn có thể sẽ cải thiện đáng kể hiệu suất của mô hình.

Dự đoán thành phần

Đặt tên cho một công thức, mô hình dự đoán thành phần đưa ra các thành phần có thể có trong công thức đó. Để giới hạn kích thước của mô hình, chỉ 999 mã thông báo tiêu đề và thành phần thường xuyên nhất được đưa vào trong quá trình đào tạo, với tất cả các mục khác được gán cho danh mục “khác”. Không giống như mô hình nhận dạng công thức, mô hình dự đoán thành phần sử dụng các vectơ thưa thớt làm cả đầu vào và đầu ra thay vì trình tự. Thứ tự của danh sách thành phần là tùy ý và thứ tự của các mã thông báo trong công thức ít quan trọng hơn để xác định các thành phần cơ bản. Mạng thần kinh chỉ bao gồm ba lớp ẩn dày đặc với các kích hoạt ReLU trong một kiến ​​trúc bộ mã hóa-giải mã đơn giản.

Kiến trúc của mô hình dự đoán thành phần.

Mặc dù kiến ​​trúc đơn giản nhưng các phương pháp đào tạo phải được tùy chỉnh cao cho nhiệm vụ phân loại đa nhãn này. Đối với bất kỳ công thức cụ thể nào, phần lớn các thành phần đã biết sẽ không có mặt. Do đó, một mô hình tầm thường đưa ra xác suất bằng 0 cho tất cả các thành phần sẽ đạt được độ chính xác cao hơn 99% do số lượng âm tính thực sự áp đảo. Để bù đắp cho sự mất cân bằng lớp học nghiêm trọng, Tensorflow's weighted_cross_entropy_with_logitschức năng đã được sửa đổi để áp dụng trọng số cao hơn nhiều cho các dự đoán tích cực. Ngoài ra, trọng số của từng thành phần được chia tỷ lệ tuyến tính theo tần số sao cho dự đoán chính xác về thành phần hiếm có trọng số cao hơn so với dự đoán thành phần phổ biến. Các trọng số này đã giúp ngăn mô hình dự đoán một số nguyên liệu phổ biến nhất cho mọi công thức, bất chấp sự mất cân đối trong phân phối nguyên liệu.

Công thức trung bình trong phân vùng thử nghiệm của chúng tôi chứa ít hơn 1% trong số 1.000 thành phần được mô hình biết đến (5,05 thành phần thực). Mặc dù mô hình dự đoán thành phần vẫn đạt được độ chính xác tổng thể cao hơn 99%, nhưng nó cũng đạt được mức thu hồi 0,50 và độ chính xác 0,32, có nghĩa là trung bình mô hình đưa ra 7,78 dự đoán cho mỗi công thức, 2,52 trong số đó là chính xác. Với xác suất thô của bất kỳ thành phần dự đoán nào thực sự phù hợp với công thức (ngoài một vài thành phần hàng đầu), đây là những kết quả tuyệt vời. Mặc dù mô hình gặp khó khăn với các món trang trí như rau mùi tây và rau mùi, nhưng nó xác định chính xác gần như tất cả 50 thành phần thường dùng nhất với độ chính xác ít nhất là 10%.

Hiệu suất của mô hình dự đoán thành phần, được đo bằng số lần dự đoán đúng so với số lần xuất hiện thực và tổng số lần dự đoán, đối với 50 thành phần thường xuyên xuất hiện nhất.

Nhận dạng ẩm thực

Phần xác định ẩm thực của dự án này có hai dạng: loại thực phẩm và dân tộc. Bộ dữ liệu Recipe1M+ không bao gồm bất kỳ nhãn nào cho các tác vụ này, vì vậy các mô hình phải được phát triển bằng các phương pháp không giám sát. Do đó, việc nhận dạng loại thực phẩm được thực hiện bằng mô hình Phân bổ Dirichlet tiềm ẩn (LDA) và phần sắc tộc được thực hiện bằng mô hình Word2Vec.

Mô hình LDA
Tạo ra sự cân bằng giữa khả năng diễn giải và tính mô tả của các chủ đề được mô hình chủ đề trả về là thách thức chính đối với phần này của dự án. Ít chủ đề hơn có thể sẽ tạo ra một tập hợp các chủ đề được xác định rõ ràng, nhưng có thể thiếu cách mô tả các chủ đề đó. Nhiều chủ đề hơn có thể tạo ra các chủ đề mô tả, nhưng có khả năng sẽ không thể hiểu được đối với con người. Vì bộ dữ liệu không bao gồm nhãn sự thật cơ bản cho từng công thức, nên nhóm đã khám phá việc sử dụng các công cụ véc tơ, mô hình, siêu đường kính và kỹ thuật đánh giá khác nhau. Cuối cùng, một mô hình LDA với 20 chủ đề đã được chọn vì nó thể hiện sự cân bằng tốt nhất giữa khả năng diễn giải và tính mô tả của các chủ đề. Sự cân bằng cho các mô hình LDA giữa số lượng chủ đề và các số liệu được tính toán (khả năng ghi nhật ký, độ phức tạp và sự gắn kết của chủ đề) được đưa ra trong phần phụ lục.

Nhiệm vụ diễn giải và gắn nhãn thủ công các vectơ chủ đề đầu ra là một trong những phần khó khăn nhất của mô hình hóa chủ đề. Hình dưới đây cho thấy một số mã thông báo được trả về bởi hai trong số các vectơ chủ đề và các đám mây từ được tạo từ tiêu đề công thức có trọng số cao nhất cho các chủ đề này. Chủ đề 0 rõ ràng có thể được xác định là chủ đề bánh mì hoặc bột nhào, nhưng Chủ đề 2 mơ hồ hơn một chút. Nó có thể được dán nhãn là 'thịt hầm', một danh mục 'Ý' chung chung hoặc một thứ gì đó hoàn toàn khác. Sự mơ hồ trong các nhãn cho các vectơ chủ đề tăng theo số lượng chủ đề được đưa vào mô hình. Chúng tôi đã sử dụng khả năng phán đoán tốt nhất của mình để gán nhãn, nhưng tham khảo ý kiến ​​của chuyên gia về chủ đề sẽ là cách tốt nhất để thực hiện.

Bảng hiển thị sự mất kết nối giữa nguyên liệu thô và tiêu đề công thức mà chúng đại diện.

Đầu ra của mô hình LDA là các phiên bản đầy đủ của các vectơ chủ đề được hiển thị ở trên. Các vectơ chủ đề này được lưu trong ứng dụng của chúng tôi và chúng tôi tính toán độ tương tự cosin giữa mỗi vectơ chủ đề và danh sách thành phần dự đoán để phân loại công thức.

Mô hình Word2Vec Mô hình
word2vec là một mạng thần kinh được đào tạo trên một kho tài liệu để tìm hiểu mối liên hệ giữa các từ trong kho văn bản đó. Điều này có nghĩa là chúng ta có thể chuyển một nhãn cho mô hình và yêu cầu nó trả về các từ giống nhất với nhãn đó, nhãn này sẽ đại diện cho một vectơ chủ đề. Điều này cho phép chúng tôi tạo bất kỳ số lượng nhãn thô sơ nào và tạo các vectơ chủ đề mà chúng tôi có thể sử dụng để gán các nhãn đó. Thay vì sử dụng các sắc tộc, chúng tôi có thể tạo các vectơ chủ đề cho đầu vào 'bữa sáng', 'bữa tối' và 'món tráng miệng' để phân loại công thức đầu vào cho các nhãn đó.

Mô hình word2vec cho nhiệm vụ này đã được đào tạo với cả thành phần công thức và tiêu đề. Tiêu đề của công thức nấu ăn thường bao gồm sắc tộc hoặc các nhãn quan trọng khác giúp mô hình học hỏi. Hệ quả của việc này là các mã thông báo do mô hình word2vec trả về không phải lúc nào cũng là thành phần, chúng có thể là các nhãn tương tự khác với đầu vào. Ví dụ: một số mã thông báo được trả về cho đầu vào 'tiếng Hy Lạp' là 'tzatziki', 'feta' và 'Mediterranean'. Các mã thông báo không phải là thành phần vẫn được chấp nhận để gán sắc tộc cho công thức vì mô hình word2vec sẽ vẫn có liên kết với các nhãn này với các thành phần khác. 'Địa Trung Hải' có thể được liên kết với các thành phần như 'đậu xanh' hoặc 'dưa chuột', điều này vẫn sẽ giúp mô hình xác định công thức đó là 'Hy Lạp'.

Khi chúng ta có các vectơ chủ đề này, chúng ta có thể vẽ chúng trên biểu đồ Nhúng hàng xóm ngẫu nhiên phân tán t (t-SNE) để hình dung chúng có liên quan với nhau như thế nào. Biểu đồ t-SNE bên dưới hiển thị 10 mã thông báo hàng đầu cho mỗi nhãn dân tộc được rút gọn thành biểu đồ 2-D. Biểu đồ T-SNE là một cách để trực quan hóa dữ liệu chiều cao trong không gian chiều thấp hơn. Họ cố gắng giữ các điểm và cụm giống nhau gần nhau hơn và tách riêng những điểm và cụm khác nhau. Kết quả là, chúng ta có thể thấy rằng một số thứ như món ăn Ấn Độ có một nhóm chặt chẽ tách biệt với hầu hết các món ăn khác, hoặc các nhãn châu Á được tách ra bên phải, nhưng vẫn gần nhau.

Các vectơ chủ đề dân tộc được rút gọn thành một biểu đồ 2D để thể hiện mối quan hệ giữa các món ăn. 5 mã thông báo hàng đầu của mỗi nhãn được hiển thị và một số thành phần có phần trùng nhau (ví dụ: 'arroz' ở trên cùng bên trái).

Kết quả

Nhóm Rec² rất vui mừng với nơi ứng dụng của chúng tôi đã cập bến. Chúng tôi bắt đầu tạo ra một ứng dụng web hiệu quả và thân thiện với người dùng, cho phép đối tượng chung tận dụng sức mạnh của các mô hình của chúng tôi. Ứng dụng chỉ yêu cầu một trong hai đầu vào để người dùng bắt đầu và thời gian suy luận để hiển thị kết quả không bao giờ quá ~5 giây. Một số liệu tùy ý, nhưng thú vị là tôi đã gửi cái này cho ông nội của tôi, người gặp khó khăn về công nghệ, người đã có thể sử dụng và tận hưởng ứng dụng này.

Hiệu quả và khả năng truy cập của ứng dụng là một trong những khía cạnh thách thức hơn của dự án này, nhưng cũng là một trong những điểm mạnh lớn nhất. Để đáp ứng các số liệu về tốc độ của chúng tôi, chúng tôi phải lưu tất cả các mô hình của mình và tính toán trước mọi dữ liệu sẽ được sử dụng. Chúng tôi cũng có thể tận dụng một số chức năng ghi nhớ thử nghiệm của Streamlit. Các chức năng này đã ghi nhớ các đầu ra khác nhau để khi người dùng tương tác với các phần khác nhau của ứng dụng, họ không phải tính toán lại mọi thứ. Điều này dẫn đến sự tích hợp liền mạch giữa các mô hình khác nhau trên ứng dụng.

Điểm yếu chính của dự án của chúng tôi là bản thân các mô hình này còn thiếu sót, nhưng chúng vẫn là những lời giới thiệu hữu ích về khả năng học máy cho các ứng dụng dựa trên thực phẩm. Mô hình dự đoán thành phần phần lớn tạo ra danh sách thành phần hợp lý, nếu bảo thủ. Mô hình nhận dạng công thức đôi khi tạo ra kết quả đầu ra hợp lý, nhưng đôi khi tạo ra một khái niệm thú vị cho một món ăn mới không liên quan rõ ràng đến hình ảnh đầu vào. Cả mô hình loại thực phẩm và dân tộc đều được tạo bằng cách sử dụng các kỹ thuật không được giám sát, mặc dù không phải là lý tưởng, nhưng mang lại hương vị (*nháy mắt*) về những gì một tập dữ liệu có nhãn xác thực cơ bản có thể đạt được. Những mô hình này chưa sẵn sàng để đưa ra bất kỳ quyết định nghiêm túc nào về thực phẩm. Tuy nhiên, chúng chỉ là điểm khởi đầu và chắc chắn hiệu quả cho việc khám phá và học hỏi. Mặc dù các mô hình là một điểm yếu của dự án, nhưng phần cuối của ứng dụng của chúng tôi cho phép nâng cấp các mô hình này một cách dễ dàng. Nếu người dùng muốn đóng góp cho dự án của chúng tôi, họ sẽ thấy dễ dàng thay thế các mô hình của chúng tôi bằng mô hình do họ tự đào tạo.

Thảo luận

Ứng dụng Khám phá công thức Rec² nhằm mục đích giúp mọi người khám phá và tìm hiểu thêm về thực phẩm. Chúng tôi muốn tạo ra một nền tảng cho những người sành ăn cũng như đầu bếp khám phá các công thức và nguyên liệu mới và được yêu thích. Sử dụng ứng dụng của chúng tôi, những người sành ăn có thể khám phá những món ăn dân tộc nào giống nhau và có thể thử một cái gì đó mới. Ngoài ra, những người nấu ăn tại gia có thể nhanh chóng tìm kiếm công thức nấu ăn yêu thích của mình để ghi nhớ tất cả nguyên liệu họ cần thay vì phải chọn lọc qua 3 trang văn bản và quảng cáo từ một công thức trực tuyến.

Vì ứng dụng hiện đang tồn tại, có những lo ngại về đạo đức tối thiểu. Điểm quan tâm chính là sự thiên vị rõ ràng trong dữ liệu. Trong khi khám phá bộ dữ liệu và những phát hiện từ các mô hình, rõ ràng là các công thức nấu ăn trong bộ dữ liệu của chúng tôi phần lớn ủng hộ chế độ ăn kiêng của người Mỹ. Sự thiên vị này khiến các người mẫu khó phân biệt chế độ ăn uống giữa các khu vực khác nhau. Ví dụ: mô hình loại thực phẩm có các chủ đề đại diện cho những thứ như món Cajun và đồ nướng, nhưng chỉ có thể tạo ra một danh mục 'Châu Á' chung để đại diện cho các công thức mà nó thấy từ các quốc gia Châu Á khác nhau. Một vấn đề đạo đức khác trong lĩnh vực này là các chủ đề được gắn nhãn dựa trên kinh nghiệm cá nhân của nhóm với các món ăn khác nhau. Điều này rất quan trọng cần lưu ý vì thực phẩm là một chủ đề mà nhiều người đam mê và mọi người đều có những trải nghiệm khác nhau.

Nếu ứng dụng hoặc mô hình của chúng tôi được sử dụng trong một ứng dụng thương mại, chúng tôi có thể gặp vấn đề về bản quyền. Bộ dữ liệu Recipe1M+ và Epicurious được lấy từ các trang web công khai, nhưng chúng vẫn có thể chứa tài liệu hoặc công thức nấu ăn có bản quyền. Bất kỳ kết luận hoặc kiến ​​thức nào được rút ra từ ứng dụng hoặc mô hình đều có thể vi phạm quyền sở hữu trí tuệ của tác giả công thức có quyền đối với nội dung của họ. Ứng dụng của chúng tôi chỉ được phát triển cho mục đích học thuật, vì vậy chúng tôi có khả năng được bảo vệ dưới dạng sử dụng hợp lý (Walker, 2018).

Nhóm Rec² rất vui mừng và tự hào về vị trí của ứng dụng của chúng tôi ngày nay, nhưng rất muốn thấy ứng dụng này tiến xa hơn nữa! Chúng tôi kêu gọi bất kỳ nhà khoa học dữ liệu, tín đồ ẩm thực hoặc đầu bếp đam mê nào giúp chúng tôi biến ứng dụng này thành một không gian hữu ích và thú vị để khám phá ẩm thực. Mã nguồn và các mô hình cho ứng dụng sẽ có sẵn trong kho lưu trữ GitHub công khai để mọi người cải thiện hoặc cung cấp phản hồi cho chúng tôi.

Hạn chế chính đối với ứng dụng web là các tệp mô hình không được vượt quá 75 MB và thực sự phải duy trì dưới 50 MB, vì ứng dụng triển khai trực tiếp từ kho lưu trữ GitHub thông qua Streamlit. Các mô hình cũng phải tuân thủ danh sách thành phần đã định, với quy trình xử lý và/hoặc ánh xạ tương ứng để chiết xuất thành phần từ công thức gốc. Mặc dù danh sách thành phần này có thể được chỉnh sửa nhưng nó phải được chia sẻ giữa các mô hình dự đoán thành phần và nhận dạng món ăn để duy trì sự liên kết. Bản thân kiến ​​trúc mô hình có thể được thay đổi nếu chúng thể hiện mức tăng hiệu suất rõ ràng và đáng giá, hoặc trọng số và tham số có thể được điều chỉnh.

Có một số tính năng thú vị mà nhóm Rec² muốn thấy trong ứng dụng của chúng tôi nhưng không có thời gian để triển khai cho dự án này. Hãy cho chúng tôi biết nếu bạn nghĩ rằng danh sách này còn thiếu điều gì đó.

  • Triển khai phản hồi của người dùng vào các mô hình của chúng tôi sẽ là một cách hay để huy động nguồn lực từ cộng đồng để cải tiến các mô hình của chúng tôi. Tính năng này sẽ cho phép người dùng đồng ý hoặc không đồng ý với các thành phần hoặc nhãn đã được dự đoán hoặc đề xuất các thành phần hoặc nhãn bổ sung để các mô hình có thể được đào tạo lại dựa trên phản hồi này.
  • Tạo công thức đầy đủ với số lượng thành phần và hướng dẫn sẽ là một mục tiêu tuyệt vời để đạt được. Điều này sẽ liên quan đến nhiều xử lý ngôn ngữ tự nhiên hơn để trích xuất số lượng và cấu trúc của hướng dẫn.
  • Thu thập nhiều công thức nấu ăn toàn cầu hơn để giải thích cho sự thiên vị về chế độ ăn uống của người Mỹ trong bộ dữ liệu.
  • Bộ lọc cho các chế độ ăn kiêng khác nhau (ăn chay, Kosher, v.v.) hoặc dân tộc.

Báo cáo công việc

Cả hai tác giả, Michael Daly và John McNally, đã hợp tác song song để lựa chọn và vạch ra các mục tiêu của dự án này. Họ đã làm việc cùng nhau để phát triển kỹ thuật tiền xử lý nhằm làm sạch và chuẩn bị bộ dữ liệu công thức để phát triển mô hình. Michael Daly dẫn đầu việc phát triển các mô hình dự đoán thành phần và nhận dạng công thức. John McNally đã dẫn đầu việc phát triển các mô hình nhận dạng kiểu ẩm thực cho cả dân tộc và loại thực phẩm. Cả hai tác giả đã chia sẻ trách nhiệm viết và chỉnh sửa cho bài đăng trên blog này.

Người giới thiệu

Bose, Bishal. 2020. Caption-IT: Mô hình tinh gọn sâu từ hình ảnh đến trình tự: Phát triển đến triển khai! Phân tích Vidhya (Trung bình). Truy cập tháng 12 năm 2022 từhttps:///analytics-vidhya/caption-it-image-to-sequence-deep-learning-model-development-to-deployment-7f9f04ab5fa0

“Chú thích hình ảnh với sự chú ý trực quan.” 2022. TenorFlow. Truy cập tháng 12 năm 2022 từhttps://www.tensorflow.org/tutorials/text/image_captioning

Marin, Javier và cộng sự. 2019. “Recipe1M+: Bộ dữ liệu để tìm hiểu các cách nhúng đa phương thức dành cho công thức nấu ăn và hình ảnh món ăn.” Các giao dịch của IEEE về phân tích mẫu và trí thông minh của máy. Truy cập tháng 12 năm 2022 từ tpami19.pdf (mit.edu)

Người đi bộ, Adam. 2018. “Sử dụng hợp lý — Cần phải xác định luật cho các thuật toán AI.” DataDrivenInvestor (Trung bình). Truy cập tháng 12 năm 2022 từhttps://medium.datadriveninvestor.com/fair-use-and-ai-87f77721f1ea

Xu, Kevin, và cộng sự. 2015. “Hiển thị, tham dự và kể: Tạo chú thích hình ảnh thần kinh với sự chú ý trực quan.” Truy cập tháng 12 năm 2022 từhttps://arxiv.org/pdf/1502.03044.pdf

ruột thừa

A.1 Báo cáo bổ sung

Công việc được trình bày là phần mở rộng của dự án Cột mốc II dành cho Thạc sĩ Khoa học Dữ liệu Ứng dụng của chúng tôi tại Đại học Michigan. Báo cáo đó được liên kết ở đây .

A.2 Phát triển dự đoán thành phần

Phân tích độ nhạy cho siêu tham số mô hình dự đoán thành phần, minh họa sự đánh đổi giữa độ chính xác và khả năng thu hồi trong quá trình phát triển mô hình.

Ngoài các trọng số bổ sung được tích hợp trong hàm mất mát, giá trị ngưỡng cho các dự đoán tích cực được điều chỉnh thành 0,02 để có kết quả tốt nhất. Ngưỡng thấp hơn tạo ra nhiều dự đoán hơn, nhưng ngưỡng cao hơn sẽ giới hạn các dự đoán ở những dự đoán có độ tin cậy cao nhất. Với quy trình tiền xử lý được cải thiện, ngưỡng 0,02 dẫn đến 2,52 dự đoán đúng trong tổng số 7,78 dự đoán trên phân vùng thử nghiệm Recipe1M+. Các công thức nấu ăn này có trung bình 5,05 thành phần thực, do đó, mô hình gần như nhận được một nửa số thành phần của mỗi công thức với lợi ích là có thêm 50% số lần đoán.

A.3 Số liệu cho Mô hình LDA

Khả năng đăng nhập và sự gắn kết chủ đề trung bình đối với số lượng chủ đề khác nhau đối với Phân bổ tiềm ẩn-Dirichlet (LDA).

Hình trên cho thấy số liệu hiệu suất của năm mô hình LDA với số lượng chủ đề khác nhau. Các mô hình hoạt động tốt nhất sẽ có độ phức tạp thấp nhất và khả năng ghi nhật ký và sự gắn kết chủ đề cao nhất. Các biểu đồ cho thấy mô hình với 40 chủ đề đang hoạt động tốt nhất về tổng thể; tuy nhiên, chúng ta có thể thấy điểm uốn rõ ràng (trái) và bước nhảy (phải) ở 20 chủ đề. Điều này có thể gợi ý rằng lợi nhuận giảm dần khi thêm nhiều chủ đề hơn vào mô hình.