Mục nhúng

Tưởng tượng rằng bạn đang phát triển một ứng dụng đề xuất món ăn cho phép người dùng nhập vào món ăn yêu thích của bản thân và ứng dụng sẽ gợi ý các món ăn tương tự mà họ có thể thích. Bạn muốn xây dựng một mô hình học máy (ML) có khả năng dự đoán mức độ tương đồng giữa các món ăn để ứng dụng có thể đưa ra các đề xuất chất lượng cao ("Vì bạn thích bánh kếp, chúng tôi xin đề xuất bánh crepe").

Để huấn luyện mô hình, bạn tuyển chọn một tập dữ liệu gồm 5.000 món ăn phổ biến, bao gồm borscht, bánh mì kẹp xúc xích, rau trộn, pizza, và shawarma.

Hình 1. Tập hình minh hoạ gồm năm món ăn. Theo chiều kim đồng hồ từ
       phần tư phía trên bên trái: borscht, bánh mì kẹp xúc xích, rau trộn, pizza, shawarma.
Hình 1. Một số mẫu món ăn có trong tập dữ liệu về thực phẩm.

Bạn tạo một tính năng meal sử dụng biểu diễn mã one-hot cho từng món ăn trong tập dữ liệu. Mã hoá là quá trình chọn ra dạng biểu diễn số ban đầu cho dữ liệu nhằm phục vụ việc huấn luyện mô hình.

Hình 2. Trên cùng: hình ảnh trực quan về mã one-hot cho borscht.
       Vectơ [1, 0, 0, 0, ..., 0] được hiển thị phía trên sáu ô.
       Từ trái sang phải, mỗi ô tương ứng với
       một phần tử trong vectơ. Các ô, theo thứ tự từ trái sang phải,
       chứa hình ảnh của các món ăn: borscht, bánh mì kẹp xúc xích, rau trộn, pizza, [trống],
       shawarma. Giữa: hình ảnh trực quan về mã one-hot 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 ô.
       Từ trái sang phải, mỗi ô tương ứng với một phần tử trong vectơ. Các ô chứa
       các hình ảnh từ trái sang phải giống như hình ảnh trực quan về borscht
       ở phía trên. Dưới cùng: hình ảnh trực quan về mã one-hot cho shawarma. Vectơ
       [0, 0, 0, 0, ..., 1] được hiển thị phía trên sáu ô. Từ trái sang phải, mỗi ô tương ứng với
       một phần tử trong vectơ. Các ô chứa
       các hình ảnh từ trái sang phải giống như hình ảnh trực quan
       về borscht và bánh mì kẹp xúc xích.
Hình 2. Mã one-hot cho borscht, bánh mì kẹp xúc xích và shawarma. Mỗi vectơ của mã one-hot dài 5.000 (mỗi phần tử tương ứng với một món ăn trong tập dữ liệu). Dấu ba chấm trong biểu đồ biểu thị 4.995 phần tử không được hiển thị.

Các lỗi khi biểu diễn dữ liệu thưa

Khi xem lại các mã one-hot, bạn sẽ nhận thấy một số vấn đề với cách biểu diễn dữ liệu này.

  • Số lượng trọng số. Các vectơ đầu vào có kích thước lớn đồng nghĩa với việc mạng nơron sẽ có một lượng lớn trọng số. Với M phần tử trong mã one-hot và N nút trong lớp đầu tiên của mạng sau lớp đầu vào, mô hình sẽ phải huấn luyện trọng số MxN chỉ riêng cho lớp đó.
  • Số lượng đ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ả.
  • Khối lượng tính toán. Mô hình của bạn càng có nhiều trọng số, thì bạn càng cần nhiều hoạt động tính toán để huấn luyện và sử dụng mô hình. Tác vụ này rất dễ vượt quá khả năng xử lý của phần cứng mà bạn có.
  • Dung lượng bộ nhớ. Mô hình của bạn càng có nhiều trọng số, thì các trình tăng tốc càng cần nhiều dung lượng bộ nhớ để huấn luyện và phân phát mô hình. Việc mở rộng mô hình một cách hiệu quả rất khó khăn.
  • Khó khăn khi hỗ trợ học máy trên thiết bị (ODML). Nếu bạn muốn chạy mô hình ML trực tiếp trên thiết bị cục bộ (thay vì phân phát từ máy chủ), bạn sẽ cần tập trung vào việc thu nhỏ mô hình và giảm số lượng trọng số.

Trong mô-đun này, bạn sẽ học cách tạo các mục nhúng – các biểu diễn ít chiều hơn của dữ liệu thưa – để giải quyết các vấn đề trên.