Đo lường mức độ tương đồng có giám sát

Thay vì so sánh dữ liệu tính năng của các tính năng kết hợp theo cách thủ công, bạn có thể giảm dữ liệu về tính năng đó thành biểu diễn có tên là nhúng, sau đó so sánh với nhiều nội dung nhúng. Việc nhúng được tạo bằng cách huấn luyện một mạng nơron sâu được giám sát (DNN) trên chính dữ liệu của tính năng đó. Các nội dung nhúng sẽ liên kết dữ liệu tính năng với một vectơ trong không gian nhúng. Thông thường, không gian nhúng có ít phương diện hơn dữ liệu tính năng theo cách nắm bắt một số cấu trúc ẩn của tập dữ liệu tính năng. Các vectơ nhúng cho các ví dụ tương tự, chẳng hạn như các video trên YouTube mà cùng người dùng xem, được đưa vào gần nhau trong không gian nhúng. Chúng ta sẽ xem cách tính tương đồng sử dụng "mức độ gần giống" này để xác định mức độ tương đồng cho các cặp ví dụ.

Hãy nhớ rằng, chúng ta sẽ chỉ thảo luận về việc học có giám sát để tạo ra biện pháp tương tự. Sau đó, thuật toán về độ tương đồng (dù là thủ công hay được giám sát) sẽ được sử dụng bằng một thuật toán để thực hiện việc phân nhóm không được giám sát.

So sánh các biện pháp thủ công và được giám sát

Bảng này mô tả thời điểm sử dụng một biện pháp tương tự theo cách thủ công hoặc được giám sát, tuỳ thuộc vào yêu cầu của bạn.

Yêu cầuThủ côngChịu sự giám sát
Loại bỏ thông tin thừa trong các tính năng tương quan. Không, bạn cần phân tích riêng mối tương quan giữa các tính năng. Có, DNN sẽ loại bỏ thông tin thừa.
Cung cấp thông tin chi tiết về các điểm tương đồng đã tính toán. Không, bạn không thể giải mã các video nhúng.
Phù hợp với các tập dữ liệu nhỏ có ít tính năng. Có, việc thiết kế một biện pháp thủ công bằng một vài tính năng rất dễ dàng. Không, tập dữ liệu nhỏ không cung cấp đủ dữ liệu huấn luyện cho một DNN.
Phù hợp với các tập dữ liệu lớn có nhiều tính năng. Không, việc loại bỏ thông tin thừa khỏi nhiều tính năng theo cách thủ công rồi kết hợp chúng là rất khó. Có, DNN tự động loại bỏ thông tin thừa và kết hợp các tính năng.

Quy trình đo lường mức độ tương đồng có giám sát

Hình ảnh sau đây hướng dẫn cách tạo một chỉ số tương tự có giám sát:

Nhập dữ liệu tính năng. Chọn DNN: trình mã hoá tự động hoặc trình dự đoán.
      Trích xuất các video nhúng. Chọn kết quả đo: Khoảng cách chấm sản phẩm, khoảng cách cosin hoặc khoảng cách Euclidean.
Hình 1: Các bước để tạo chỉ số tương tự được giám sát.

Bạn đã tìm hiểu bước đầu tiên. Trang này thảo luận về bước tiếp theo và các trang sau đây thảo luận về các bước còn lại.

Chọn DNN dựa trên nhãn đào tạo

Giảm dữ liệu tính năng xuống nhúng bằng cách đào tạo một DNN sử dụng cùng dữ liệu tính năng làm dữ liệu đầu vào và nhãn. Ví dụ: trong trường hợp là dữ liệu cho cùng một công ty, DNN sẽ sử dụng các tính năng – chẳng hạn như giá, kích thước và mã bưu chính – để tự dự đoán các tính năng đó. Để sử dụng dữ liệu tính năng nhằm dự đoán cùng một dữ liệu tính năng, DNN buộc phải giảm dữ liệu tính năng đầu vào xuống nhúng. Bạn sẽ sử dụng các yếu tố nhúng này để tính toán mức độ tương đồng.

Một DNN học cách nhúng dữ liệu đầu vào bằng cách dự đoán chính dữ liệu đầu vào đó được gọi là trình mã hoá tự động. Vì các lớp ẩn của bộ mã hoá tự động nhỏ hơn các lớp đầu vào và đầu ra, nên bộ mã hoá tự động buộc phải tìm hiểu nội dung biểu diễn nén về dữ liệu tính năng nhập. Sau khi DNN được đào tạo, bạn sẽ trích xuất các nội dung nhúng từ lớp ẩn cuối cùng để tính toán mức độ tương đồng.

So sánh giữa bộ mã hoá tự động và DNN dự đoán.
       Đầu vào và lớp ẩn ban đầu giống nhau nhưng đầu ra được lọc theo tính năng chính trong mô hình dự đoán.
Hình 2: So sánh giữa bộ mã hoá tự động và trình dự đoán.

Bộ mã hóa tự động là lựa chọn đơn giản nhất để tạo nội dung nhúng. Tuy nhiên, bộ mã hoá tự động không phải là lựa chọn tối ưu khi một số tính năng có thể quan trọng hơn so với các tính năng khác trong việc xác định tính tương đồng. Ví dụ: trong dữ liệu nội bộ, giả sử “giá” quan trọng hơn “mã bưu chính”. Trong những trường hợp như vậy, chỉ sử dụng tính năng quan trọng là nhãn đào tạo cho DNN. Vì DNN này dự đoán một tính năng nhập cụ thể thay vì dự đoán tất cả tính năng đầu vào, nên DNN được gọi là một DNN dự đoán. Hãy áp dụng các nguyên tắc sau để chọn một tính năng làm nhãn:

  • Ưu tiên các tính năng dạng số hơn là tính năng phân loại dưới dạng nhãn vì việc mất mát sẽ dễ tính toán và dễ hiểu hơn đối với các tính năng dạng số.

  • Không sử dụng các đặc điểm của danh mục có lượng số \(\lesssim\) 100 làm nhãn. Nếu làm như vậy, DNN sẽ không buộc phải giảm dữ liệu đầu vào của bạn vào các video nhúng vì DNN có thể dễ dàng dự đoán các nhãn danh mục có lượng số thấp.

  • Xoá tính năng mà bạn dùng làm nhãn khỏi dữ liệu đầu vào cho DNN; nếu không, DNN sẽ dự đoán hoàn hảo kết quả.

Tuỳ thuộc vào lựa chọn nhãn của bạn, DNN thu được là một DNN bộ mã hoá tự động hoặc một DNN dự đoán.

Hàm mất cho DNN

Để huấn luyện DNN, bạn cần tạo hàm mất bằng cách làm theo các bước sau:

  1. Tính toán tổn hao cho mọi đầu ra của DNN. Đối với kết quả là:
    • Số, sử dụng lỗi vuông vuông trung bình (MSE).
    • Phân loại một biến, hãy dùng tính năng mất nhật ký. Xin lưu ý rằng bạn không cần phải tự triển khai tính năng ghi nhật ký vì bạn có thể sử dụng hàm thư viện để tính toán hàm này.
    • Phân loại đa dạng, sử dụng tính năng giảm enmaxmax cross entropy. Xin lưu ý rằng bạn không cần phải tự triển khai mức giảm entropy của crossmax mềm, vì bạn có thể sử dụng hàm thư viện để tính toán.
  2. Tính tổng tổn thất bằng cách tính tổng tổn thất cho mỗi đầu ra.

Khi tính tổng các tổn thất, hãy đảm bảo rằng mỗi tính năng đều góp phần vào tỷ lệ mất mát. Ví dụ: nếu chuyển đổi dữ liệu màu sang giá trị RGB, bạn sẽ có 3 kết quả. Tuy nhiên, khi tính tổng sai số cho ba đầu ra, việc mất màu sẽ được tính trọng số gấp ba lần so với các tính năng khác. Thay vào đó, hãy nhân từng đầu ra với 1/3.

Sử dụng DNN trong hệ thống trực tuyến

Hệ thống máy học trực tuyến có luồng dữ liệu đầu vào mới liên tục. Bạn sẽ cần đào tạo DNN về dữ liệu mới. Tuy nhiên, nếu bạn đào tạo lại DNN từ đầu, thì tính năng nhúng của bạn sẽ khác vì các DNN được khởi chạy với trọng số ngẫu nhiên. Thay vào đó, hãy luôn khởi động DNN với các trọng số hiện có, sau đó cập nhật DNN bằng dữ liệu mới.