Hãy tưởng tượng bạn đang phát triển một đơn đăng ký đề xuất về thực phẩm, trong đó người dùng nhập bữa ăn yêu thích của họ, đồng thời ứng dụng đề xuất các bữa ăn tương tự mà họ có thể thích. Bạn muốn phát triển một mô hình học máy (ML) có thể dự đoán sự tương đồng về thực phẩm, nhờ đó, ứng dụng của bạn có thể giúp nâng cao chất lượng đề xuất ("Vì bạn thích bánh kếp, chúng tôi đề xuất bánh kếp").
Để huấn luyện mô hình của mình, bạn chọn một tập dữ liệu gồm 5.000 món ăn chính, bao gồm borscht, bánh mì kẹp xúc xích, món rau trộn, pizza, và shawarma.
![Hình 1. Hình minh hoạ về 5 món ăn. Theo chiều kim đồng hồ từ
trên cùng bên trái: borscht, xúc xích, rau trộn, pizza, shawarma.](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/food_images.png?authuser=4&hl=vi)
Bạn tạo một đối tượng meal
chứa
được mã hoá một lần
đại diện cho từng món ăn trong tập dữ liệu.
![Hình 2. Trên cùng: hình ảnh trực quan về phương thức mã hóa một lần cho borscht.
Vectơ [1, 0, 0, 0, ..., 0] được hiển thị phía trên sáu hộp,
từng nhãn được căn chỉnh từ bên trái
sang phải bằng một trong các số vectơ. Các hộp, từ trái sang phải
chứa các hình ảnh sau: borscht, xúc xích, rau trộn, pizza, [trống],
shawarma. Giữa: hình ảnh trực quan về phương thức mã hóa một điểm nóng cho bánh mì kẹp xúc xích.
Vectơ [0, 1, 0, 0, ..., 0] được hiển thị phía trên sáu hộp, mỗi hộp
căn từ trái sang phải bằng một trong các số vectơ. Các hộp có
các hình ảnh tương tự từ trái sang phải như đối với hình ảnh borscht
ở trên. Dưới cùng: hình ảnh về phương thức mã hoá một điểm cho shawarma. Chiến lược phát hành đĩa đơn
vectơ [0, 0, 0, 0, ..., 1] được hiển thị phía trên sáu hộp, mỗi ô được căn chỉnh
từ trái sang phải bằng một trong các số vectơ. Các hộp có
cùng một hình ảnh từ trái sang phải như bánh mì kẹp xúc xích và bánh mì kẹp xúc xích
trực quan.](https://developers.google.cn/static/machine-learning/crash-course/embeddings/images/food_images_one_hot_encodings.png?authuser=4&hl=vi)
Sự cố biểu diễn dữ liệu thưa thớt
Xem lại các kiểu mã hoá nóng bỏng này, bạn nhận thấy hai vấn đề chính với biểu diễn dữ liệu.
- Số lượng trọng số. Vectơ đầu vào lớn có nghĩa là số lượng lớn
trọng số
cho mạng nơron.
Với các mục nhập M trong chế độ mã hoá một điểm, và N
các nút trong lớp đầu tiên của mạng sau đầu vào, mô hình phải huấn luyện
Trọng số MxN cho lớp đó. Một số lượng lớn trọng số gây ra thêm nhiều vấn đề:
- Số điểm dữ liệu. Mô hình của bạn càng có nhiều trọng số, thì bạn càng có nhiều dữ liệu cần huấn luyện một cách hiệu quả.
- Số lượng phép tính. Càng nhiều trọng số, càng cần nhiều phép tính để huấn luyện và sử dụng mô hình. Bạn có thể dễ dàng vượt quá khả năng của phần cứng.
- Dung lượng bộ nhớ. Mô hình của bạn càng có nhiều trọng số thì càng có nhiều bộ nhớ là cần thiết cho các trình tăng tốc huấn luyện và phân phát quảng cáo đó. Mở rộng quy mô hiệu quả là công việc rất khó khăn.
- Khó hỗ trợ công nghệ học máy trên thiết bị (ODML). Nếu bạn muốn chạy mô hình học máy trên các thiết bị cục bộ (thay vì phân phát chúng), bạn sẽ cần tập trung vào việc làm cho mô hình của mình nhỏ hơn và sẽ muốn để giảm số lượng trọng số.
- Thiếu mối quan hệ có ý nghĩa giữa các vectơ. Các giá trị vectơ trong cho thực phẩm không cung cấp bất kỳ thông tin có ý nghĩa nào về điểm tương đồng của các mặt hàng thực phẩm. Về mặt toán học, chỉ mục 1 ("bánh mì kẹp xúc xích") là gần với chỉ số 2 ("salad") hơn so với chỉ số 4999 ("shawarma"), mặc dù món chó giống với món shawarma (cả thịt và bánh mì) hơn là rau trộn.
Trong học phần này, bạn sẽ tìm hiểu cách tạo video nhúng, nội dung có chiều rộng thấp hơn để biểu diễn dữ liệu thưa thớt nhằm giải quyết cả hai vấn đề này.