Nhúng: Dữ liệu đầu vào thuộc loại

Dữ liệu danh mục đề cập đến các tính năng đầu vào đại diện cho một hoặc nhiều mục riêng biệt từ một tập hợp lựa chọn hữu hạn. Ví dụ: đó có thể là tập hợp phim mà người dùng đã xem, tập hợp các từ trong tài liệu hoặc công việc của một người.

Dữ liệu danh mục được trình bày hiệu quả nhất thông qua tensor thưa thớt, là các tensor có rất ít phần tử khác 0. Ví dụ: Nếu chúng tôi xây dựng một mô hình đề xuất phim, chúng tôi có thể gán một mã nhận dạng duy nhất cho mỗi bộ phim có thể gửi, rồi đại diện cho từng người dùng bằng một tensor phim thưa thớt, như trong Hình 3.

Thông tin đầu vào mẫu cho vấn đề đề xuất phim của chúng tôi.

Hình 3. Dữ liệu về vấn đề đề xuất phim của chúng tôi.

Mỗi hàng của ma trận trong Hình 3 là một ví dụ chụp ảnh lịch sử xem phim của người dùng và được biểu thị dưới dạng tensor thưa vì người dùng chỉ xem một phần nhỏ của tất cả phim. Hàng cuối cùng tương ứng với tensor thưa thớt [1, 3, 999999], sử dụng chỉ mục từ vựng hiển thị phía trên các biểu tượng phim.

Tương tự như vậy, một từ có thể biểu thị các từ, câu và tài liệu dưới dạng vectơ thưa thớt, trong đó mỗi từ trong từ vựng đóng vai trò tương tự như các bộ phim trong ví dụ về đề xuất.

Để sử dụng các cách biểu diễn như vậy trong hệ thống máy học, chúng ta cần có một cách thể hiện vectơ thưa thớt như một vectơ số để các mục tương tự về mặt ngữ nghĩa (phim hoặc từ) có khoảng cách tương tự trong không gian vectơ. Nhưng làm cách nào để trình bày một từ dưới dạng vectơ số?

Cách đơn giản nhất là xác định một lớp đầu vào khổng lồ có một nút cho mỗi từ trong từ vựng hoặc ít nhất một nút cho mỗi từ xuất hiện trong dữ liệu của bạn. Nếu 500.000 từ duy nhất xuất hiện trong dữ liệu, bạn có thể biểu thị một từ có vectơ dài 500.000 và gán mỗi từ cho một vị trí trong vectơ.

Nếu bạn chỉ định "horse" cho chỉ mục 1247, thì để cung cấp "horse" vào mạng của mình bạn có thể sao chép số 1 vào nút đầu vào thứ 1247 và số 0 vào tất cả phần còn lại. Cách sắp xếp này được gọi là mã hoá một lần vì chỉ có một chỉ mục có giá trị lớn hơn 0.

Thông thường, vectơ của bạn có thể chứa số từ trong một đoạn văn bản lớn hơn. Đây được gọi là "túi từ" hình tượng trưng. Trong vectơ túi đựng từ, một vài trong số 500.000 nút sẽ có giá trị khác 0.

Tuy nhiên, bạn xác định các giá trị khác 0, các giá trị này có thể chứa vectơ đầu vào rất thưa thớt – các vectơ rất lớn có rất ít giá trị khác 0. Đại diện thưa thớt có một số vấn đề có thể khiến mô hình khó học hiệu quả.

Quy mô mạng

Vectơ đầu vào khổng lồ có nghĩa là số lượng trọng số rất lớn đối với mạng nơron. Nếu có từ M trong từ vựng và các nút N của bạn trong lớp đầu tiên của mạng ở trên đầu vào, bạn có trọng số MxN để huấn luyện cho lớp đó. Một lượng lớn trọng số sẽ gây ra các vấn đề khác:

  • Lượng dữ liệu. Mô hình của bạn càng có nhiều trọng số thì bạn càng cần phải huấn luyện nhiều dữ liệu một cách hiệu quả.

  • Lượng tính toán. Càng có nhiều trọng số, thì bạn càng cần phải tính toán để đào tạo và sử dụng mô hình. Vượt quá giới hạn của phần cứng.

Thiếu mối quan hệ có ý nghĩa giữa các vectơ

Nếu cung cấp giá trị pixel của kênh RGB vào một thuật toán phân loại hình ảnh, bạn nên nói về giá trị "đóng" Màu đỏ lam gần giống với màu xanh thuần tuý, cả về mặt ngữ nghĩa và xét về khoảng cách hình học giữa các vectơ. Nhưng một vectơ có 1 tại chỉ mục 1247 cho " horse" không gần hơn với một vectơ có 1 tại chỉ mục 50.430 cho "antelope" so với một vectơ có 1 tại chỉ mục 238 cho "truyền hình"

Giải pháp: Nhúng

Giải pháp cho các vấn đề này là sử dụng tính năng nhúng, công cụ này dịch các vectơ thưa thớt lớn vào một không gian chiều thấp hơn giúp bảo toàn mối quan hệ ngữ nghĩa. Chúng ta sẽ khám phá cách nhúng trực quan, khái niệm và theo phương thức lập trình trong các phần sau của mô-đun này.