Trên thế giới, đã có nhiều công ty, tổ chức áp dụng thành công mô hình hệ thống gợi ý như là một dịch vụ thương mại nhằm gợi ý các dịch vụ, sản phẩm và thông tin cần thiết đến người dùng
Trang 1HỌC VIỆN KỸ THUẬT QUÂN SỰ
ĐỖ ĐÌNH HƯNG KHÓA 14
HỆ ĐÀO TẠO KỸ SƯ DÂN SỰ
ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
CHUYÊN NGÀNH: CÔNG NGHỆ DỮ LIỆU
XÂY DỰNG HỆ THỐNG GỢI Ý THỰC ĐƠN BỮA ĂN HÀNG NGÀY SỬ DỤNG MÔ HÌNH HỌC SÂU
NĂM 2020
Trang 2HỌC VIỆN KỸ THUẬT QUÂN SỰ
ĐỖ ĐÌNH HƯNG KHÓA 14
HỆ ĐÀO TẠO KỸ SƯ DÂN SỰ
Trang 3KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN AN TOÀN THÔNG TIN
Độc lập - Tự do - Hạnh phúc
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ và tên: ĐỖ ĐÌNH HƯNG Lớp: CNTT Khóa: 14
Ngành: Công nghệ thông tin Chuyên ngành: Công nghệ dữ liệu
1 Tên đề tài:
Xây dựng hệ thống gợi ý thực đơn bữa ăn hàng ngày sử dụng mô hình học sâu
2 Các số liệu ban đầu:
Thông tin về gần 1000 thực đơn bữa ăn được thu thập trên các trang web
về ẩm thực như vietnamnet, vnexpress, … được tổ chức lại thành cơ sở
dữ liệu
Thông tin về gần 100,000 bản ghi thông tin tương tác của 1000 người dùng
Triển khai các phương pháp để hỗ trợ, tư vấn người dùng
Xây dựng giao diện cơ bản của hệ thống
3 Nội dung bản thuyết minh:
Mở đầu
Chương 1: Giới thiệu
Chương 2: Kiến thức cơ sở
Chương 3: Thu thập, xử lý và lưu trữ dữ liệu
Chương 4: Phương pháp và kết quả
Kết luận
Tài liệu tham khảo
Trang 44 Số lượng, nội dung các bản và sản phẩm cụ thể:
Được sử dụng máy tính và máy chiếu để trình chiếu
5 Cán bộ hướng dẫn:
Họ và tên: TS Phan Việt Anh
Cấp bậc: Thiếu tá
Chức vụ: Giảng viên
Đơn vị: Bộ môn An toàn thông tin – Khoa Công nghệ thông tin
Nội dung hướng dẫn: Toàn bộ phân hệ của đồ án
Ngày giao: 10/01/2020 Ngày hoàn thành: 28/07/2020
Hà Nội, ngày 28 tháng 07 năm 2020
Chủ nhiệm bộ môn Cán bộ hướng dẫn
Trang 5Từ viết tắt Từ tiếng Anh Từ tiếng Việt
Acc@K Accuracy@Top K Độ chính xác tại Top K
ANN Artificial Neural Network Mạng nơ-ron nhân tạo
AP@k Average Precision@Top K Giá trị Precision trung bình tại
tuyến tính
Trang 6DANH MỤC HÌNH ẢNH
Hình 1.1 Sơ đồ bài toán hỗ trợ gợi ý thực đơn 5
Hình 1.2 Các thành phần hệ thống 11
Hình 1.3 Giao diện trang chủ của hệ thống 14
Hình 1.4 Giao diện nội dung thực đơn 14
Hình 2.1 Kiến trúc một nơ-ron cơ bản 17
Hình 2.2 Đồ thị các hàm kích hoạt sigmoid, tanh, ReLU 18
Hình 2.3 Kiến trúc của một mạng nơ-ron 19
Hình 2.4 Sơ đồ giải thuật lan truyền ngược 21
Hình 2.5 Ví dụ tính AP@3 24
Hình 2.6 Mô hình CBOW và mô hình Skipgram 26
Hình 2.7 Kiến trúc mô hình Wide 28
Hình 2.8 Kiến trúc mô hình Deep 29
Hình 2.9 Kiến trúc mô hình Wide&Deep 30
Hình 3.1 Giao diện danh sách thực đơn của “365 mâm cơm” 34
Hình 3.2 Nội dung HTML của “365 mâm cơm” 35
Hình 3.3 Giao diện danh sách thực đơn của “thực đơn theo tuần” 37
Hình 3.4 Nội dung HTML của “thực đơn theo tuần” 39
Hình 3.5 Giao diện danh sách thực đơn của “thực đơn cho 1 tháng” 40
Hình 3.6 Nội dung HTML của “thực đơn cho 1 tháng” 41
Hình 3.7 Bảng thông tin chi tiết thực đơn 43
Hình 3.8 Bảng thông tin chi tiết người dùng 45
Hình 4.1 Sơ đồ mô hình tìm kiếm thực đơn phổ biến nhất 47
Hình 4.2 Thông tin các món ăn 49
Hình 4.3 Thông tin nhãn nhóm các món ăn 49
Hình 4.4 Thông tin các món ăn thuộc nhóm canh 50
Hình 4.5 Thông tin tương tác người dùng 51
Hình 4.6 Mô hình thuật toán Wide&Deep 52Hình 4.7 Sơ đồ mô hình tìm kiếm thực đơn dựa trên mô hình Wide&Deep 54
Trang 7Hình 4.9 Kết quả gợi ý khi không có thông tin người dùng 57
Hình 4.10 Kết quả gợi ý khi có đủ thông tin người dùng 58
Hình 4.11 Kết quả gợi ý khi không có thông tin sở thích của người dùng 59
Hình 4.12 Kết quả gợi ý khi không có thông tin nhóm đối tượng người dùng60Hình 4.13 Giao diện trang chủ 60
Hình 4.14 Giao diện trang kết quả sau khi tìm kiếm 61
Hình 4.15 Giao diện trang khi người dùng đăng nhập 61
Hình 4.16 Giao diện trang khi người dùng đăng kí 62
Hình 4.17 Giao diện trang nội dung chi tiết thực đơn 62
Hình 4.18 Giao diện trang tìm kiếm nâng cao 63
Hình 4.19 Giao diện trang chỉnh sửa thông tin cá nhân người dùng 63
Trang 8DANH MỤC BẢNG BIỂU
Bảng 4.1 Đánh giá mô hình theo Top 3 56Bảng 4.2 Đánh giá mô hình theo Top 2 56Bảng 4.3 Đánh giá mô hình theo Top 1 56
Trang 9MỞ ĐẦU 1
1 Tính cấp thiết, tình hình nghiên cứu liên quan đến đề tài 1
2 Mục tiêu, nhiệm vụ đề tài 2
3 Phương pháp nghiên cứu 2
4 Đối tượng và phạm vi nghiên cứu 3
1.2.1 Một số hệ thống gợi ý ở nước ngoài và Việt Nam 6
1.2.2 Điểm hạn chế của các hệ thống gợi ý ở nước ngoài và Việt Nam 91.3 Yêu cầu, chức năng, cấu trúc hệ thống 9
Chương 2 15
KIẾN THỨC CƠ SỞ 15
2.1 Hệ thống gợi ý là gì? 15
2.2 Nền tảng học sâu cho hệ thống gợi ý 16
2.2.1 Kiến thức cơ bản về học sâu 16
2.2.2 Mô hình FastText 24
2.2.3 Mô hình Wide, mô hình Deep 27
2.3 Phương pháp đề xuất 29
Chương 3 32
Trang 10THU THẬP, XỬ LÝ VÀ LƯU TRỮ DỮ LIỆU 32
3.1 Các dạng cơ sở dữ liệu hiện nay 32
3.2 Thu thập dữ liệu 33
3.2.1 Phương pháp thu thập 33
3.2.2 Thu thập dữ liệu trên website “365 mâm cơm” 34
3.2.3 Thu thập dữ liệu trên website “thực đơn theo tuần” 36
3.2.4 Thu thập dữ liệu trên website “thực đơn cho 1 tháng” 40
3.2.5 Thu thập dữ liệu thông tin người dùng 41
3.3 Tổ chức CSDL 43
Chương 4 47
PHƯƠNG PHÁP VÀ KẾT QUẢ 47
4.1 Phương pháp 47
4.1.1 Tìm kiếm thực đơn phổ biến nhất 47
4.1.2 Tìm kiếm thực đơn dựa trên mô hình Wide&Deep 48
4.2 Kết quả 55
KẾT LUẬN 64
TÀI LIỆU THAM KHẢO 66
Trang 111 Tính cấp thiết, tình hình nghiên cứu liên quan đến đề tài
Với sự phát triển công nghệ thông tin trong thời đại cuộc Cách mạng 4.0, mọi lĩnh vực trong đời sống xã hội đang chuyển mình và phát triển chóng mặt Hiện nay mỗi người Việt trung bình sở hữu đến 1,3 chiếc điện thoại và 70% trong đó
là Smartphone Do đó, các giao dịch, tìm kiếm, trao đổi online ngày càng trở nên phổ biến, góp một phần không nhỏ vào sự tăng trưởng của các nhóm ngành như thương mại điện tử, sức khỏe, …
Theo dự kiến, tiềm năng tăng trưởng của nhóm ngành thực phẩm khoảng 15% GDP Điều này có nghĩa thực phẩm là một trong mười nhóm ngành sản phẩm được giao dịch nhiều nhất trên Internet Trong thời đại kinh tế phát triển và xu thế hội nhập văn hóa, người tiêu dùng đang ngày càng quan tâm hơn đến việc thay đổi thói quen ăn uống và chế độ dinh dưỡng hợp lý Chế độ ăn dinh dưỡng hợp lý
là yếu tố quan trọng để tăng cường và duy trì sức khỏe tốt trong suốt cuộc đời con người Ở nhiều quốc gia trên thế giới, việc cung cấp chế độ ăn dinh dưỡng là một phần không thể thiếu của chính sách nâng cao đời sống sức khỏe người dân Trên thế giới, đã có nhiều công ty, tổ chức áp dụng thành công mô hình hệ thống gợi ý như là một dịch vụ thương mại nhằm gợi ý các dịch vụ, sản phẩm và thông tin cần thiết đến người dùng như: website mua sắm trực tuyến Amazon cung cấp cho khách hàng những sản phẩm mà họ có thể quan tâm, website video clip YouTube gợi ý các videos mà người dùng có thể quan tâm, … Đối với lĩnh vực
ẩm thực, một vài hệ thống gợi ý món ăn bằng ngôn ngữ Tiếng Anh tiêu biểu như: Yummly, Meal Planer Pro hay hệ thống gợi ý món ăn tại Việt Nam như “Ăn gì hôm nay - Món ngon mỗi ngày” Tuy nhiên, một trong những điểm yếu của các
hệ thống kể trên là chưa tự động đưa ra được gợi ý thực đơn dựa trên việc tổng hợp giữa thông tin người dùng như lứa tuổi, sở thích, … với yêu cầu về món ăn của họ
Nhận thấy đây là một đề tài không chỉ mang tính khoa học lớn mà còn có tính thực tế rất cao, là nhu cầu cấp thiết của toàn xã hội ngày nay, tôi quyết định chọn
Trang 12đề tài “Xây dựng hệ thống gợi ý thực đơn bữa ăn hàng ngày dựa trên mô hình học sâu” với phân hệ “Nghiên cứu thu thập, tổ chức dữ liệu và áp dụng các thuật toán hỗ trợ gợi ý thực đơn bữa ăn, xây dựng giao diện cơ bản của hệ thống” để thực hiện nghiên cứu Đề tài tập trung vào việc nghiên cứu, khảo sát,
đánh giá và đề xuất một số phương pháp hỗ trợ gợi ý thực đơn bữa ăn phù hợp với yêu cầu món ăn cũng như thông tin cá nhân người dùng, áp dụng chúng vào
hệ thống với dữ liệu thông tin các món ăn, thực đơn từ thực tế
2 Mục tiêu, nhiệm vụ đề tài
Mục tiêu
Đề tài tập trung vào việc nghiên cứu đưa ra phương pháp gợi ý thực đơn cho người dùng khi lựa chọn các món ăn cho bữa ăn hàng ngày Thông tin của các thực đơn khác nhau sẽ được tổng hợp và lưu trữ trên hệ thống giúp người dùng tìm kiếm tập trung mà không cần đi qua các trang ẩm thực khác Ngoài ra, việc cung cấp chi tiết thông tin từng món ăn còn giúp người dùng có thêm đánh giá về thực đơn, từ đó người dùng có thể tự đưa ra quyết định
Nhiệm vụ
Thứ nhất, nghiên cứu thu thập dữ liệu và tổ chức lưu trữ dữ liệu thành cơ sở
dữ liệu
Thứ hai, nghiên cứu các thuật toán, mô hình học sâu để gợi ý thực đơn bữa
ăn cho người dùng dựa trên dữ liệu đã thu thập được
Thứ ba, xây dựng giao diện cơ bản của hệ thống để thử nghiệm, đánh giá và cải thiện các phương pháp đã nghiên cứu
3 Phương pháp nghiên cứu
Căn cứ vào mục đích, yêu cầu, nội dung đặt ra của đề tài, tôi xác định các phương pháp nghiên cứu bao gồm:
Xây dựng một sơ đồ tổng quan của hệ thống
Tiến hành thu thập thông tin, dữ liệu
Nghiên cứu dữ liệu đã thu thập; áp dụng các thuật toán, mô hình để xử lý
dữ liệu, và đưa ra kết quả gợi ý tới người dùng
Trang 13hình đã áp dụng
4 Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu:
- Các phương pháp thu thập, tổ chức và lưu trữ dữ liệu
- Kho dữ liệu về thực đơn, món ăn thu thập từ các trang mạng
- Các phương pháp gợi ý thực đơn bữa ăn
Phạm vi nghiên cứu:
- Luận án tập trung nghiên cứu, đề xuất phương pháp gợi ý thực đơn bữa ăn hàng ngày cho người dùng từ dữ liệu thu thập được về ẩm thực
5 Bố cục đồ án tốt nghiệp
Phần mở đầu: Nêu lên tính cấp thiết, mục tiêu, nhiệm vụ của đề tài, phương
pháp nghiên cứu, đối tượng, phạm vi nghiên cứu
Phần nội dung: Gồm 4 chương chính:
Chương 1: Giới thiệu
Chương 2: Kiến thức cơ sở
Chương 3: Thu thập, xử lý và lưu trữ dữ liệu
Chương 4: Phương pháp và kết quả
Phần kết luận: Nêu lên kết quả đồ án và trích dẫn tài liệu tham khảo
Trang 14Chương 1
GIỚI THIỆU 1.1 Giới thiệu về hệ thống gợi ý thực đơn bữa ăn
1.1.1 Đặt vấn đề
Trong thời đại hiện nay, với sự phát triển mạnh mẽ của công nghệ hiện đại, các phần mềm trợ lý ảo đã và đang đóng một vai trò vô cùng quan trọng trong nhiều lĩnh vực của doanh nghiệp như hỗ trợ khách hàng, tư vấn online Song song với đó, việc con người đang ngày càng chú trọng vào chất lượng những bữa
ăn hàng ngày càng trở nên phổ biến Các món ăn trong từng bữa ăn ngày càng trở nên công phu hơn, các loại gia vị như xào, hầm, chiên, rán, … xuất hiện ngày một nhiều hơn thay vì các món đơn giản luộc, hấp như trước đây Tuy nhiên, qua khảo sát thực tế cho thấy phần lớn các bữa ăn chỉ được xây dựng theo cảm tính và sở thích trong ăn uống chứ chưa thực sự quan tâm nhiều đến yếu tố dinh dưỡng Hơn thế nữa, thực phẩm tự nhiên, hữu cơ, thực phẩm tiện lợi và công nghệ làm thay đổi trải nghiệm ẩm thực của người dùng là ba xu thế chủ đạo trong phong cách tiêu dùng thực phẩm mới của người dùng hiện đại Vì vậy, hệ thống gợi ý thực đơn bữa ăn hàng ngày này có thể được tích hợp vào chuyên mục của các tờ báo hay trở thành một phần mềm với mục đích đưa ra lời khuyên ăn uống sao cho phù hợp với yêu cầu cũng như sức khỏe của người dùng Hệ thống còn giúp người dùng đạt được sự cân bằng lành mạnh và bền vững giữa các món thịt và rau thay
vì việc áp dụng cách lựa chọn cực đoan chỉ một thứ
Bộ dữ liệu gồm danh sách các thực đơn, thông tin chi tiết các món ăn trong thực đơn được lấy từ chuyên mục ẩm thực, đời sống, sức khỏe của các tờ báo lớn như Vietnamnet, Vnexpress, 24h.com… và các trang ẩm thực nổi tiếng khác Ngoài ra, còn có dữ liệu thông tin cá nhân của người dùng như giới tính, sở thích,
Trang 15Hình 1.1 Sơ đồ bài toán hỗ trợ gợi ý thực đơn
Như chúng ta có thể thấy trong hình 1.1, với mỗi yêu cầu tìm kiếm thực đơn chứa món ăn cụ thể của người dùng, hệ thống sẽ áp dụng các thuật toán xử lý dữ liệu và mô hình học sâu để đưa ra những gợi ý thực đơn tương ứng phù hợp nhất Sau đó người dùng có thể xem chi tiết thông tin về từng món ăn trong thực đơn bao gồm nguyên liệu, cách nấu…
1.1.2 Mục đích, ý nghĩa của bài toán
Trong phạm vi của đồ án, hệ thống gợi ý thực đơn bữa ăn hàng ngày được triển khai trên website giúp cho người dùng dễ dàng trong quá trình sử dụng, trải nghiệm và đánh giá các thực đơn Hệ thống gợi ý thực đơn được xây dựng nhằm mục đích giúp người dùng lựa chọn được các thực đơn thực sự phù hợp với bản thân, đề cao tính cá nhân hóa mạnh mẽ trong ẩm thực, giảm thiểu việc nấu các món ăn theo sở thích nhất thời mà không tốt cho sức khỏe Không chỉ vậy, hệ thống gợi ý này sẽ giúp đại đa số người dùng giải quyết được vấn đề “hôm nay ăn gì?”
Đối với phạm vi nghiên cứu, bài toán gợi ý thực đơn bữa ăn hàng ngày sẽ đóng góp một phần không nhỏ vào việc xây dựng bộ cơ sở dữ liệu (CSDL) tiếng Việt về nội dung thông tin của các thực đơn cũng như thông tin chi tiết các món
ăn phổ biến Hơn nữa, các hệ thống gợi ý liên quan đến chủ đề ẩm thực đã có trên thế giới nói chung và Việt Nam nói riêng đều mới sử dụng phương pháp gợi ý dựa
Trang 16trên chỉ thông tin của món ăn, hoặc dựa trên thông tin đã biết về một người dùng nào đó có điểm tương đồng Vì vậy, phương pháp gợi ý sử dụng mô hình học sâu trong phạm vi bài toán này có thể được coi là thay đổi về mô hình và có khả năng
tự học, tổng hợp tri thức từ tất cả thông tin phức tạp của người dùng cũng như nội dung các món ăn trong từng thực đơn Kết quả chạy thử nghiệm đã chỉ ra mức tăng hiệu suất hợp lý khi sử dụng mô hình học sâu trong hệ thống gợi ý thực đơn bữa ăn hàng ngày so với các phương pháp truyền thống khác
Điều đặc biệt của hệ thống này là nó liên kết với Instacart – một dịch vụ giao hàng tạp hóa hàng ngày có hợp tác với các cửa hàng địa phương Vì vậy, người dùng có thể lựa chọn các món ăn yêu thích và đặt hàng ngay với các cửa hàng tại địa phương
Hệ thống của Yummly sử dụng thuật toán để tạo ra các công thức nấu ăn dựa trên sở thích và không thích của người dùng Nếu người dùng đang trong giai đoạn ăn kiêng, hệ thống sẽ ghi nhớ thông tin dinh dưỡng cho tất cả các công thức món ăn như calo, chất béo, cholesterol, từ đó đưa ra những gợi ý phù hợp với đối tượng người dùng đó Yummly thậm chí còn cung cấp cho người dùng tính năng lọc các công thức nấu ăn dựa trên mức độ kỹ năng của họ, điều này thực sự hoàn hảo cho những người dùng mới tập nấu ăn và muốn tìm hiểu, hoàn thiện các kỹ năng trong bếp Nhà phát triển Yummly còn tổng hợp lại một số bài viết giúp người dùng nào đang gặp khó khăn với những công thức nấu ăn như:
35 Bí quyết nấu món gà đặc biệt
36 Bí quyết Salad Quinoa tuyệt vời
Trang 1753 Bí quyết ăn sáng lành mạnh
63 Ý tưởng ăn sáng giàu protein
56 Ý tưởng ăn nhẹ lành mạnh
Meal Planer Pro
Meal Planer Pro là một ứng dụng khuyến khích ăn uống lành mạnh và kết hợp điều đó vào thói quen lập kế hoạch ăn hàng tuần của người dùng cũng như các thành viên khác trong gia đình
Cơ sở dữ liệu của Meal Planer Pro không chỉ bao gồm những ý tưởng ăn tối
mà còn bao gồm cả các công thức nấu ăn sáng cũng như ăn trưa tốt cho sức khỏe Đây là một điều khá hiếm có đối với hầu hết các sản phẩm gợi ý về ẩm thực Hơn thế nữa, Meal Planer Pro còn tích hợp hệ thống ProScore tương đương với việc
có chuyên gia về dinh dưỡng riêng của mỗi cá nhân ProScore nêu bật các giá trị dinh dưỡng tốt và xấu của từng món ăn, sau đó gán cho nó số điểm từ 1 đến 100 tương ứng
Ứng dụng Meal Planer Pro cũng có khả năng cung cấp kế hoạch ăn uống theo
cá nhân dựa trên một số thông tin cơ bản như: người bệnh tiểu đường, quản lý cân nặng, thiếu máu, huyết áp cao, … Người dùng có thể lưu các công thức nấu ăn yêu thích và đặt chúng trực tiếp vào lịch ăn uống theo tuần thậm chí theo tháng Với từng danh sách món ăn, người dùng sẽ được cung cấp hình ảnh, thông tin dinh dưỡng của từng thành phần món ăn tương ứng và thậm chí là nhãn cảnh báo
về món ăn Với các nhãn cảnh báo về món ăn, người dùng sẽ biết được liệu món
ăn đó có phù hợp với bản thân hay người thân họ hay không
Phần mềm “Ăn gì hôm nay - Món ngon mỗi ngày”
Ăn gì hôm nay – món ngon mỗi ngày là ứng dụng nấu ăn chuyên cung cấp gợi ý những thực đơn ngon lành và bổ dưỡng cho người dùng và gia đình họ Ứng
Trang 18dụng chứa sẵn hàng nghìn thực đơn từ đơn giản đến phức tạp, là nguồn ý tưởng siêu to khổng lồ cho mâm cơm gia đình
Không chỉ có vậy, "Ăn gì hôm nay – món ngon mỗi ngày" là ứng dụng ăn uống, là cuốn cẩm nang công thức nấu ăn chứa hàng nghìn công thức món ăn được chia theo các chủ đề ẩm thực đa dạng Từ món mặn, món ngọt, món thịt, món chay, món lẩu, món nướng, món ăn vặt, công thức nấu chè, công thức làm bánh, vân vân và mây mây, tất cả đều có trong ứng dụng Các công thức nấu ăn được hướng dẫn chi tiết giúp người dùng nâng cao tay nghề nấu nướng của mình Những món ăn tưởng như quá đỗi phức tạp, cầu kỳ đều trở thành món ngon dễ làm, vô cùng đơn giản dưới sự hướng dẫn của ứng dụng
Có thể nói ứng dụng Ăn gì hôm nay – món ngon mỗi ngày là cuốn sách nấu
ăn ngon vô cùng bổ ích Đây là 1 phần không thể thiếu giúp người dùng chế biến những thực đơn dinh dưỡng, những món ăn ngon mà bổ dành cho những người thân yêu trong gia đình
Một số tính năng của ứng dụng Ăn gì hôm nay- món ngon mỗi ngày không thể bỏ qua như:
- Gợi ý thực đơn cơm tối cho bữa cơm hàng ngày bằng những thực đơn phong phú, khoa học và đầy đủ chất dinh dưỡng Giúp người dùng không mất quá nhiều thời gian và công sức, mà vẫn “thiết kế” được những bữa ăn dinh dưỡng cho cả nhà
- 30000 công thức nấu ăn được phân chia theo nhiều chủ đề ẩm thực rõ ràng, khoa học Đều là những món ngon dễ làm, người dùng có thể dễ dàng thực hiện theo
- Là cuốn sổ tay nấu ăn cá nhân, giúp người dùng lưu trữ công thức những
món ăn yêu thích
- Tìm kiếm món ăn ngon siêu đơn giản và tiết kiệm thời gian
- Dữ liệu tải siêu nhanh, không cần chờ đợi lâu để nhận được điều mong muốn
Trang 19Website Lugagi.com
Website Lugagi.com giải quyết một nhu cầu bức thiết của nhiều người dùng thích nấu ăn hoặc thường đảm nhận công việc nấu ăn: hôm nay nên nấu món gì? Trang web có 2 chế độ gợi ý: gợi ý theo những nguyên liệu mà người dùng đang
có trong tủ lạnh hoặc vừa mua về được, và gợi ý thực đơn cho 7 ngày trong một tuần Mục tiêu là giảm thời gian suy nghĩ của chị em nội trợ, các bạn sinh viên xa nhà về việc chọn lựa món cho gia đình
Trong mỗi món ăn, người dùng cũng có thể chia sẻ công thức, hình ảnh hoặc những mẹo vặt nhỏ nhỏ để giúp nấu món đó một cách dễ dàng hơn Website Lugagi.com có thể chạy tốt cả trên máy tính và trên smartphone, tablet
1.2.2 Điểm hạn chế của các hệ thống gợi ý ở nước ngoài và Việt Nam
Các hệ thống hỗ trợ gợi ý thực đơn bữa ăn ở Việt Nam và nước ngoài hiện nay đều phát huy tốt khả năng của mình trong việc tìm kiếm các món ăn và thực đơn cơ bản của người dùng Tuy nhiên trong quá trình nghiên cứu, tôi nhận thấy các hệ thống này có những mặt hạn chế sau:
- Các thông tin về các món ăn vẫn chỉ ở mức xuất hiện đơn lẻ, còn các thực đơn bữa ăn thì không đa dạng hoặc gần như không có (thiếu thông tin về thực đơn tạo sẵn)
- Các ứng dụng thường gợi ý các thực đơn, món ăn dựa trên giá trị tìm kiếm
mà người dùng nhập vào Người dùng thường bị bó buộc trong việc tìm kiếm kết quả theo từ khóa và so khớp từ ngữ
- Hệ thống chưa tự động đưa ra được gợi ý thực đơn dựa trên việc tổng hợp giữa thông tin người dùng với yêu cầu của họ
1.3 Yêu cầu, chức năng, cấu trúc hệ thống
Yêu cầu của hệ thống
Hệ thống gợi ý thực đơn bữa ăn hàng ngày cần đảm bảo các yêu cầu sau:
- Đáp ứng nhu cầu tìm kiếm bằng văn bản của người dùng
Trang 20- Hiển thị kết quả cho người dùng
Yêu cầu nâng cao của hệ thống:
- Cung cấp, hỗ trợ người dùng các thông tin về thực đơn cũng như các món
ăn trong thực đơn để giúp người dùng có quyết định tốt hơn khi lựa chọn thực đơn
Các chức năng chính
Hệ thống gợi ý thực đơn bữa ăn hàng ngày được xây dựng nhằm thực hiện các chức năng sau:
- Chức năng đăng nhập, tạo mới, sửa và lưu thông tin cá nhân người dùng
- Chức năng tìm kiếm thực đơn từ đầu vào nhập từ người dùng Đầu vào có thể ở dạng văn bản
- Chức năng gửi phản hồi, đánh giá của người dùng về kết quả thực đơn sau khi được gợi ý
- Chức năng hiển thị thông tin chi tiết thực đơn, bao gồm:
Tiêu đề, mô tả, hình ảnh thực đơn
Tên các món ăn thuộc thực đơn, thành phần và cách chế biến của từng món
Cấu trúc của hệ thống
Tổng quan hệ thống
Hệ thống được nghiên cứ xây dựng được tổ chức theo sơ đồ sau:
Trang 21Hình 1.2 Các thành phần hệ thống
Hệ thống gồm 3 thành phần chính:
- Phân hệ thu thập, xử lý và lưu trữ dữ liệu
- Phân hệ các phương pháp gợi ý, tư vấn người dùng
- Phân hệ giao diện người dùng
Phân hệ thu thập, xử lý và lưu trữ dữ liệu
Phân hệ này có chức năng:
1 Thu thập dữ liệu thực đơn bữa ăn trên các trang website về ẩm thực Dữ liệu này bao gồm:
- ID thực đơn: 5cbf3c79a29e122e4c79a96d
- Danh mục: 365 Mâm cơm gia đình hết sức đơn giản
- Tiêu đề: 365 Mâm cơm - Mâm 1
+ Thành phần: Tôm tươi 3 lạng (chú ý chọn những con tôm còn tươi)
+ Cách nấu: Bước 1, Bước 2, …
Dữ liệu thu thập trên 2 trang website ẩm thực chính là “365 mâm cơm”, “thực đơn theo tuần” và 1 số trang website ẩm thực khác Do thời gian và phạm vi thực
Trang 22hiện đồ án hạn chế, tôi sẽ tiến hành thu thập bộ dữ liệu với khoảng 1000 thực đơn kèm theo thông tin chi tiết của khoảng 2000 món ăn
Do thiết kế của mỗi trang web khác nhau, nên việc thu thập dữ liệu yêu cầu phải thiết kế chương trình tùy theo cấu trúc của trang web về ẩm thực đó
2 Thu thập dữ liệu thông tin cá nhân người dùng cũng như các tương tác của người dùng với nhiều thực đơn Dữ liệu này bao gồm:
3 Tổ chức dữ liệu đã thu thập thành CSDL CSDL cần đáp ứng được các chức năng của hệ thống CSDL này sẽ được mở rộng để lưu trữ thêm thông tin được
xử lý bởi các thuật toán, mô hình học sâu
Phân hệ các phương pháp hỗ trợ, tư vấn người dùng
Đây là phân hệ quan trọng nhất, các chức năng được thực hiện bởi phân hệ này sẽ quyết định đến cấu trúc của CSDL và giao diện hiển thị cho người dùng Trong phân hệ này, tôi áp dụng các thuật toán, mô hình học sâu trên dữ liệu đã được thu thập và tổ chức trong CSDL:
- Thuật toán tìm kiếm thực đơn phổ biến nhất để tìm kiếm thực đơn Người dùng gõ đầu vào tên món ăn dưới dạng văn bản, hệ thống sẽ lấy đầu vào này và
áp dụng thuật toán tìm kiếm thực đơn phổ biến nhất để tìm ra các thực đơn khớp
Trang 23cao nhất
- Thuật toán tìm kiếm thực đơn chứa món ăn tương đồng để hỗ trợ tìm kiếm thực đơn Người dùng gõ đầu vào tên món ăn dưới dạng văn bản, hệ thống sẽ lấy đầu vào này và áp dụng thuật toán tìm kiếm thực đơn phổ biến nhất để tìm ra món
ăn có giá trị tương đồng nhất với yêu cầu đầu vào (trong trường hợp không tìm thấy món ăn người dùng yêu cầu trong CSDL), sau đó tiến hành áp dụng mô hình học sâu để tìm kiếm và đưa ra các thực đơn tương ứng phù hợp cho người dùng
- Áp dụng các mô hình học sâu cho dữ liệu đánh giá của người dùng để phân loại, đưa kết quả thực đơn phù hợp nhất cho người dùng Mô hình áp dụng cho bài toán ở đây là: Wide&Deep model
Phân hệ giao diện người dùng
Phân hệ tương tác với người dùng, có chức năng:
1 Cho phép người dùng đăng nhập, đăng kí hoặc sửa đổi thông tin cá nhân
2 Nhận đầu vào từ người dùng và chuyển đầu vào cho các thuật toán xử lý
dữ liệu, tìm kiếm thực đơn Sau đó lại nhận danh sách kết quả chứa top 3 thực đơn phù hợp nhất và hiển thị ra cho người dùng
3 Hiển thị các kết quả từ các thuật toán và cho phép người dùng xem chi tiết thông tin từng thực đơn, gửi đánh giá phản hồi về kết quả các thực đơn
Trang 24Hình 1.3 Giao diện trang chủ của hệ thống
Hình 1.4 Giao diện nội dung thực đơn
Chương 1 đã nêu lên được mục đích và ý nghĩa của bài toán, đồng thời khảo sát các hệ thống gợi ý đã có ở Việt Nam cũng như nước ngoài, từ đó đưa ra các yêu cầu, chức năng và cấu trúc chung của hệ thống gợi ý thực đơn bữa ăn hàng ngày
Trang 25
Các dạng gợi ý thường được chia thành ba nhóm chính bao gồm:
Content-based systems: hệ thống gợi ý sản phẩm dựa trên các đặc trưng của chính các sản phẩm đó Ví dụ: một người dùng xem rất nhiều các
bộ phim thể loại hành động, vậy thì gợi ý một bộ phim trong cơ sở dữ liệu có chung đặc tính hình sự tới người dùng này, ví dụ phim Người Sắt (Iron Man) Cách tiếp cận này yêu cầu việc sắp xếp các sản phẩm
vào từng nhóm hoặc đi tìm các đặc trưng của từng item Tuy nhiên, có những sản phẩm không có nhóm cụ thể và việc xác định nhóm hoặc đặc trưng của từng sản phẩm đôi khi là bất khả thi
Collaborative filtering: hệ thống gợi ý sản phẩm dựa trên sự tương quan (similarity) giữa các người dùng và/hoặc sản phẩm Có thể hiểu rằng ở nhóm này một item được gợi ý tới một người dùng dựa trên những người dùng có hành vi tương tự Ví dụ: người dùng A, B, C đều thích
Trang 26ăn món gà rán Ngoài ra, hệ thống biết rằng người dùng B, C cũng thích món hambuger nhưng chưa có thông tin về việc liệu người dùng A có thích hambuger hay không Dựa trên thông tin của những người dùng tương tự là B và C, hệ thống có thể dự đoán rằng A cũng thích
hambuger và gợi ý món ăn này tới A
Knowledge-based system: hệ thống gợi ý các sản phẩm dựa trên các suy luận về nhu cầu và thông tin cá nhân của người dùng như sở thích, nhóm tuổi, … Phương pháp tiếp cận này được phân biệt ở chỗ: chúng
có kiến thức làm thế nào một item cụ thể đáp ứng nhu cầu một người dùng cụ thể, và do đó có thể lập luận về mối quan hệ giữa nhu cầu và các gợi ý cụ thể Ví dụ: một người dùng có các thông tin cơ bản gồm giới tính: nam, độ tuổi: người lớn, sở thích: thể thao Khi người dùng
đó có nhu cầu tìm kiếm mua xe đạp, hệ thống sẽ dựa trên các tri thức nhận được từ nhu cầu và thông tin của người dùng đó và đưa ra gợi ý các dòng xe phù hợp như: xe đạp thể thao RX-660, xe đạp gấp địa hình X6-T30, …
2.2 Nền tảng học sâu cho hệ thống gợi ý
2.2.1 Kiến thức cơ bản về học sâu
Tổng quan về mạng nơ-ron nhân tạo
Mạng nơ-ron nhân tạo (Artificial Neural Network- ANN) là mô hình xử lý thông tin được mô phỏng dựa trên hoạt động của hệ thống thần kinh của sinh vật, bao gồm số lượng lớn các nơ-ron được gắn kết để xử lý thông tin ANN giống như bộ não con người, được học bởi kinh nghiệm (thông qua huấn luyện), có khả năng lưu giữ những kinh nghiệm hiểu biết (tri thức) và sử dụng những tri thức đó trong việc dự đoán các dữ liệu chưa biết (unseen data) Kiến trúc chung của một
nơ-ron nhân tạo gồm 3 thành phần đó là đầu vào, hàm kích hoạt và đầu ra Đầu vào của nơ-ron có thể đến từ các nơ-ron khác hoặc đến từ nguồn bên ngoài, mỗi giá trị đầu vào này được gắn liền với một trọng số thể hiện sự quan trọng của
Trang 27hoạt với tổng các trọng số của đầu vào Ví dụ, với đầu vào x với n chiều, đầu ra
sẽ được tính toán bởi hàm số sau:
𝑦 = 𝑓(𝑊𝑇 𝑥 + 𝑏) (2.1)
Trong hình 2.1 nơ-ron nhận hai giá trị đầu vào là x1 và x2, cùng với trọng số lần lượt là w1 và w2 Cùng với đó, còn có đầu vào khác là 1 với trọng số b được gọi là bias Vai trò của giá trị bias này giúp dịch chuyển hàm số sang trái hoặc
phải
Hình 2.1 Kiến trúc một nơ-ron cơ bản
Hàm kích hoạt f được sử dụng để biến đầu vào thành đầu ra phi tuyến tính
Có một vài hàm kích hoạt được sử dụng phổ biến trong thực tế Các hàm kích hoạt
Khả vi liên tục Thuật toán phổ biến nhất để huấn luyện mạng nơ-ron là thuật
toán Gradient Descent Thuật toán Gradient Descent tìm điểm cực tiểu của hàm
số bằng cách đi ngược lại với dấu của đạo hàm của hàm số tại điểm đó Vì vậy
Trang 28tính chất khả vi liên tục là rất cần thiết để áp dụng các phương pháp tối ưu dựa trên tính toán đạo hàm Một số hàm kích hoạt không khả vi tại một số điểm nhất
định Trong trường hợp này, các phương pháp tối ưu dựa trên tính toán đạo hàm
sẽ không thể thực hiện được trên các điểm này
Đơn điệu Tính chất này đảm bảo rằng mặt lỗi gắn với mô hình đơn lớp là mặt
lồi
Một số hàm kích hoạt phổ biến bao gồm: sigmoid, tanh và ReLU Biểu thức
của chúng được trình bày dưới đây:
sigmoid: trả về kết quả có giá trị trong khoảng [0,1]
Hình 2.2 Đồ thị các hàm kích hoạt sigmoid, tanh, ReLU
ANN là mạng bao gồm các lớp nơ-ron, mỗi lớp nơ-ron bao gồm các nơ-ron
được sắp xếp, trong đó đầu ra của một nơ-ron có thể là đầu vào của một nơ-ron
khác Các nơ-ron giữa 2 lớp kết nối với nhau và mỗi kết nối này được gắn liền với
một giá trị trọng số ANN nhận đầu vào từ bên ngoài tại lớp đầu tiên, thực hiện các tính toán, và đưa đầu ra đến lớp cuối cùng của mạng Giá trị kích hoạt a của nơ-ron i là hàm kích hoạt được áp dụng với giá trị tổng của các tích giữa đầu vào
và trọng số, cộng với giá trị bias: a i = f(W i x + b i ) Giả sử các lớp nơ-ron là loại
Trang 29toán giá trị kích hoạt của các nơ-ron trong cùng một lớp theo công thức tính toán
ma trận sau:
𝑧 = 𝑊 𝑥 + 𝑏 (2.5)
𝑎 = 𝑓(𝑧) (2.6) Với x ∈ 𝑅𝑛, 𝑊 ∈ 𝑅𝑚𝑥𝑛, 𝑏 ∈ 𝑅𝑚 và f được áp dụng cho từng thành phần
trong z
f (z) = f ([z1, z2, …, zm]) = [f (z1), f (z2), …, f (zm)] (2.7)
Mạng nơ-ron truyền thẳng (feedforward neural network)
Trong mạng nơ-ron truyền thẳng, dữ liệu được tính toán và truyền theo một chiều từ lớp đầu vào (input layer), qua các lớp ẩn (hidden layer), và đến các lớp đầu ra (output layer) Hình sau mô tả cấu trúc của một mạng nơ-ron truyền thẳng (feedforward)
Hình 2.3 Kiến trúc của một mạng nơ-ron
Lớp đầu vào chịu trách nhiệm nhận dữ liệu đầu vào từ bên ngoài và chuyển chúng đến lớp ẩn mà không thực hiện bất kỳ một tính toán nào Lớp ẩn thực hiện
các tính toán, áp dụng các hàm kích hoạt, và chuyển dữ liệu lần lượt qua các lớp
Trang 30ẩn tiếp theo và đến lớp đầu ra Quá trình tính toán của mạng nơ-ron trong hình trên có thể được tính dựa trên công thức sau:
Huấn luyện mạng nơ-ron
Mục tiêu của huấn luyện một mạng nơ-ron là tìm ra bộ các tham số và bias trong đó với mỗi véc-tơ đầu vào mô hình sẽ tính toán và đưa ra véc-tơ đầu ra mong muốn Để làm được điều đó, chúng ta cần phải định nghĩa một hàm lỗi
(Loss function, đôi khi có thể được gọi là cost function hay error function) để tính
toán mỗi véc-tơ đầu ra thành một giá trị số thực Trong quá trình huấn luyện,
người huấn luyện sẽ cố gắng để giảm thiểu giá trị lỗi để thu được mô hình tối ưu Xét trường hợp của học có giám sát, mỗi mẫu dữ liệu được gắn với một nhãn Giá
trị lỗi của mỗi mẫu dữ liệu có thể được tính bằng độ chênh lệch giữa đầu ra và nhãn thực tế của mẫu đó Có nhiều loại hàm lỗi được sử dụng để đánh giá lỗi mô hình Lựa chọn hàm lỗi hợp lý cũng là một vấn đề quan trọng trong việc huấn luyện mô hình Một hàm lỗi khá phổ biến là hàm Mean Square Error (MSE) tính toán khoảng cách giữa đầu ra và nhãn thực tế bằng khoảng cách Euclidean.Công
thức MSE cho n mẫu dữ liệu được tính toán như sau:
𝑀𝑆𝐸𝑖 = 1
2(𝑦̂ − 𝑦𝑖 𝑖)
2 (2.14)
Trang 31𝑀𝑆𝐸 =
2𝑛∑(𝑦̂ − 𝑦𝑖 𝑖) (2.15)
𝑖=1
Trong đó 𝑦̂ là véc-tơ đầu ra dự đoán bởi mạng, 𝑦𝑖 𝑖 là nhãn thực tế
Một thuật toán rất hiệu quả để tối ưu mạng nơ-ron là thuật toán Lan truyền ngược (Backpropation) kết hợp với Gradient Descent Phương pháp thực hiện
lặp lại để điều chỉnh các tham số mô hình để hàm lỗi hội tụ đến giá trị cực tiểu
(minimum) Với mỗi bước, ta xác định đạo hàm của hàm số tại điểm hiện tại theo công thức:
Trang 32Sau đó, trọng số sẽ được điều chỉnh thêm một lượng ngược với dấu của đạo hàm hàm lỗi tại điểm đó
∆𝑤𝑖 = −𝛾 𝜕𝐸
𝜕𝑤𝑖 𝑣ớ𝑖 𝑖 = 1, … , 𝑙 (2.17)
Với l là số trọng số, 𝛾 là tốc độ học (learning rate) để điều chỉnh tốc độ hội tụ đến giá trị cực tiểu của hàm lỗi
Do việc tính toán từ đầu vào đến đầu ra phải trải qua nhiều bước tính toán,
và qua nhiều hàm số, nên việc tính đạo hàm theo trọng số không thể thực hiện
trực tiếp Trong trường hợp này, giải thuật lan truyền ngược được áp dụng theo
chiều ngược lại với chiều suy luận tiến để tính toán đạo hàm theo các trọng số
Để tính toán đạo hàm theo trọng số, phương pháp này dựa theo quy tắc chuỗi đạo hàm của hàm hợp
Giải thuật lan truyền ngược được thực hiện như sau:
Giả sử ta có mạng nơ-ron có L lớp
Bước 1: Suy luận tiến
Lần lượt tính các 𝑎𝑙 từ 𝑙 = 2 → L theo công thức:
𝑧(𝑙) = 𝑊(𝑙) 𝑎(𝑙−1) (2.18)
𝑎(𝑙) = 𝑓(𝑧(𝑙)) (2.19) Trong đó, lớp 𝑎(1) chính là giá trị đầu vào
Bước 2: Tính đạo hàm theo z ở lớp đầu ra
Bước 3: Lan truyền ngược
Tính đạo hàm theo z ngược lại từ 𝑙 = (L – 1) → 2 theo công thức:
Trang 33Phương pháp đánh giá mô hình học sâu
Để so sánh hiệu quả của các mô hình máy học, có nhiều phương pháp đánh giá được áp dụng như Accuracy, Precision, F1-Score Dựa trên tính chất đặc biệt của bài toán này, tôi đề xuất đánh giá chất lượng mô hình theo 2 chỉ số là Accuracy@Top K (Acc@K) và Mean Average Precision@Top K (mAP@K)
Accuracy@Top K là độ chính xác của mô hình trong trường hợp K sản phẩm
được gợi ý
𝐴𝑐𝑐@𝐾 = 1
𝑛𝐾
Trước khi đến với công thức tính mAP@K, ta xét công thức Average Precision@Top K (AP@K) cho từng bản ghi AP@K là trung bình tỉ lệ các sản
phẩm được gợi ý là có phù hợp trong trường hợp xét K sản phẩm gợi ý Giả sử gợi ý K sản phẩm, số lượng các nhãn sản phẩm trên 1 bản ghi là n, ta có công
Với P(i) là Precision được tính bằng cách chỉ xem xét các tập con các gợi ý
từ cấp 1 đến cấp thứ i, rel(i) là chỉ số cho biết liệu mục thứ i có là phù hợp (rel(i)
= 1) hay không (rel(i) = 0) Giả sử tại một trường hợp, số sản phẩm được gợi ý là
Trang 343 (K=3), số lượng nhãn sản phẩm là n=3, ta có cách tính AP@3 theo công thức
trên như sau:
Hình 2.5 Ví dụ tính AP@3
Sau khi có giá trị AP@K trên từng bản ghi, ta sẽ tính mAP@K bằng việc tính
trung bình tổng toàn bộ AP@K trên toàn tập dữ liệu m bản ghi Mean Average
Precision@Top K là trung bình của trung bình tỉ lệ các sản phẩm được gợi ý là
có phù hợp trong trường hợp xét K sản phẩm gợi ý
Phân loại văn bản (Text classification)
Phân loại văn bản là một trong số vấn đề cốt lõi, được ứng dụng nhiều trong các ứng dụng như: phát hiện tin rác, phân tích cảm xúc câu, …
Mục tiêu của việc phân loại văn bản là gán nhãn các tài liệu như email, tin nhắn văn bản, tên món ăn, …vào một hoặc nhiều nhóm danh mục khác nhau Các danh mục này sau đó được sử dụng trong việc đánh giá nội dung, kiểm tra thư rác, hay nhận biết ngôn ngữ mà tài liệu sử dụng Hiện nay, một trong số cách tiếp cận hiệu quả là xây dựng một mô hình phân lớp dựa trên lí thuyết học máy, tức là học các quy tắc phân lớp từ các ví dụ có sẵn
Huấn luyện mô hình
Trang 35được gán nhãn bao gồm các văn bản và danh mục tương ứng (hoặc thẻ, nhãn) của chúng Mỗi dòng trong bộ dữ liệu chứa một danh sách các nhãn, theo sau là văn bản tương ứng Để giúp thư viền FastText nhận biết đâu là nhãn, đâu là văn bản,
tất cả các nhãn bắt đầu bằng tiền tố label Mô hình sau đó sẽ được huấn luyện bằng việc sử dụng hàm train_supervised để có thể dự đoán các nhãn trong từng
văn bản Trong thực tế, mô hình thu được bằng cách sử dụng tham số huấn luyện mặc định thường cho kết quả phân loại khá tệ Vì vậy, để tăng tính hiệu quả của
mô hình, người ta thường thay đổi một vài tham số như epochs, hệ số học (learning rate)
Đánh giá mô hình
Sau khi huấn luyện mô hình, chúng ta có thể sử dụng hàm save_model để lưu trữ kết quả huấn luyện và hàm load_model để sử dụng kết quả đã lưu Tiếp theo,
sử dụng hàm predict để dự đoán nhãn của văn bản mới truyền vào Kết quả sau
khi dự đoán bao gồm một tập gồm nhãn dự đoán và độ chính xác của việc phân lớp đối với văn bản này.[4]
Biểu diễn từ ngữ (Word representation)
Trong lĩnh vực xử lý ngôn ngữ tự nhiên, một trong các ý tưởng phổ biến là biểu diễn từ ngữ bằng vector tương ứng Các vector này mang ý nghĩa của thông tin ẩn về một ngôn ngữ như từ có ý nghĩa tương đồng hay ngữ nghĩa Việc biểu diễn từ ngữ cũng mang lại hiệu quả trong việc tăng hiệu suất của phân lớp văn
bản
Huấn luyện mô hình
Để tính toán các vector từ, chúng ta cần một số lượng văn bản lớn Tùy thuộc vào nội dung từng bộ dữ liệu văn bản mà các vector từ sẽ nắm bắt các thông tin khác nhau Nội dung của dữ liệu có thể rất đa dạng như các bản tin về thể thao, văn hóa, ẩm thực, … Đối với ngôn ngữ Tiếng Việt, bộ dữ liệu gồm tập hợp các từ
Trang 36có nghĩa được cấu tạo từ một hay nhiều âm tiết cách nhau bởi một khoảng trắng
Do đặc thù của Tiếng Việt, việc tách từ có nghĩa trong một đoạn văn bản trở nên
vô cùng quan trọng, liên quan trực tiếp đến kết quả mô hình huấn luyện tiếp theo
Mô hình sau đó được huấn luyện bằng việc sử dụng hàm train_unsupervised để
có thể biểu diễn từ ngữ
Thư viện FastText cung cấp hai mô hình huấn luyện biểu diễn từ là Skipgram
và CBOW Mô hình CBOW dự đoán từ ở giữa (center word) dựa trên các từ xung quanh (context words) Điểm lợi của mô hình này là thời gian huấn luyện nhanh Trong khi đó, mô hình Skipgram sử dùng từ mục tiêu (target word) để dự đoán các từ ngữ xung quanh Trong thực tế mô hình Skipgram thường cho kết quả tốt hơn với các từ ngữ phổ biến hay xuất hiện trong văn cảnh (frequence words) Hình sau mô tả cách hoạt động của hai mô hình Skipgram và CBOW
Hình 2.6 Mô hình CBOW và mô hình Skipgram
Đánh giá mô hình
Sau khi huấn luyện mô hình, chúng ta có thể sử dụng hàm save_model để lưu trữ kết quả huấn luyện và hàm load_model để sử dụng kết quả đã lưu Tiếp theo,
sử dụng hàm get_word_vector để lấy vector đặc trưng của từ tương ứng Một cách
đơn giản để kiểm tra chất lượng của mô hình vừa huấn luyện là tìm kiếm các từ
có nghĩa tương đồng với từ cho trước bằng việc sử dụng hàm
Trang 37thông tin mà các vector có thể biểu diễn được.[2]
2.2.3 Mô hình Wide, mô hình Deep
Mô hình Wide
Mô hình Wide thực chất là một mô hình tuyến tính tổng quát có dạng
𝑦 = 𝑊𝑇 𝑥 + 𝑏 (2.29) Với y là kết quả dự đoán, 𝑥 = [𝑥1, 𝑥2, … , 𝑥𝑑] là một vector của d đặc trưng,
𝑤 = [𝑤1, 𝑤2, … , 𝑤𝑑] là các trọng số của mô hình, và b là bias Mỗi một bộ đặc
trưng bao gồm những đặc trưng đầu vào ở dạng thô và những đặc trưng đã được chuyển đổi Một trong những biến đổi quan trọng nhất thường được sử dụng trong
mô hình Wide là biến đổi chéo (cross-product transformation) – được định nghĩa là:
Hình vẽ dưới đây thể hiện cấu trúc mô hình Wide:
Trang 38Hình 2.7 Kiến trúc mô hình Wide
Với mô hình Wide, hệ thống có khả năng ghi nhớ những sản phẩm nào thực
sự phù hợp với từng yêu cầu của người dùng Ví dụ, hệ thống học được rằng người dùng yêu cầu món gà rán cũng đồng thời thích món burger gà hơn món cơm gà rán, trong khi món cơm gà rán có chỉ số character match cao hơn.[3]
Mô hình Deep
Mô hình Deep bản chất là mô hình mạng nơ-ron truyền thẳng (feedfoward neural network) Đối với các đặc trưng kiểu phân lớp, các giá trị gốc đầu vào là kiểu chữ (ví dụ: “ngôn ngữ=việt nam”) Mỗi đặc trưng có tính chất thưa thớt, nhiều chiều (high-dimensional) đều được chuyển thành các vector ít chiều (low-dimensional) và có giá trị thực tế dày đặc (dense real-valued vector) Đây chính
là bước biểu diễn các vector nhúng (an embedding vector) Các vector nhúng này được khởi tạo một cách ngẫu nhiên, sau đó sẽ được cập nhật để giảm thiểu giá trị mất mát ở hàm lỗi (loss function) trong suốt quá trình huấn luyện mô hình Cụ thể, các vector nhúng ít chiều và dày đặc này (low-dimensional dense embedding vectors) được đưa qua các lớp ẩn của mạng nơ-ron để huấn luyện mô hình Trong quá trình huấn luyện, mỗi lớp ẩn sẽ thực hiện phép tính:
𝑎(𝑙+1) = 𝑓(𝑊(𝑙)𝑎(𝑙)+ 𝑏(𝑙)) (2.31)
Trong đó, l là số lớp và f là hàm kích hoạt (thường sử dụng hàm ReLU) Các
biến 𝑎(𝑙), 𝑏(𝑙) và 𝑊(𝑙) lần lượt là giá trị kích hoạt, bias và trọng số mô hình tại lớp
thứ l
Hình vẽ dưới đây thể hiện cấu trúc mô hình Deep: