Trong thực tế, các vectơ đầu ra không được tính toán từ đầu vào bằng bất kỳ phép toán nào. Thay vào đó, mỗi số nguyên đầu vào được sử dụng làm chỉ mục để truy cập vào một bảng có chứa tất cả các vectơ có thể nhìn thấy. Đó là lý do tại sao bạn cần xác định kích thước của từ vựng làm đối số đầu tiên (để bảng có thể được khởi tạo).
Ứng dụng phổ biến nhất của lớp này là để xử lý văn bản. Hãy xem một ví dụ đơn giản. Tập huấn luyện của chúng tôi chỉ bao gồm hai cụm từ:
Mong sớm được gặp lại bạn
Rất vui được gặp lại bạn
Vì vậy, chúng tôi có thể mã hóa các cụm từ này bằng cách gán cho mỗi từ một số nguyên duy nhất (theo thứ tự xuất hiện trong tập dữ liệu đào tạo của chúng tôi chẳng hạn). Sau đó, cụm từ của chúng tôi có thể được viết lại thành:
[0, 1, 2, 3, 4]
[5, 1, 2, 3, 6]
Bây giờ hãy tưởng tượng chúng ta muốn đào tạo một mạng có lớp đầu tiên là lớp nhúng. Trong trường hợp này, chúng ta nên khởi tạo nó như sau:
Embedding(7, 2, input_length=5)
Đối số đầu tiên (7) là số lượng từ riêng biệt trong tập huấn luyện. Đối số thứ hai (2) chỉ ra kích thước của các vectơ nhúng. Tất nhiên , argumet input_length xác định kích thước của từng chuỗi đầu vào.
Khi mạng đã được đào tạo, chúng ta có thể lấy trọng số của lớp nhúng, trong trường hợp này sẽ có kích thước (7, 2) và có thể được coi là bảng được sử dụng để ánh xạ các số nguyên để nhúng vectơ:
+------------+------------+
| index | Embedding |
+------------+------------+
| 0 | [1.2, 3.1] |
| 1 | [0.1, 4.2] |
| 2 | [1.0, 3.1] |
| 3 | [0.3, 2.1] |
| 4 | [2.2, 1.4] |
| 5 | [0.7, 1.7] |
| 6 | [4.1, 2.0] |
+------------+------------+
Vì vậy, theo các nhúng này, cụm từ đào tạo thứ hai của chúng tôi sẽ được trình bày dưới dạng:
[[0.7, 1.7], [0.1, 4.2], [1.0, 3.1], [0.3, 2.1], [4.1, 2.0]]
Thoạt nhìn có vẻ phản trực giác, nhưng các công cụ phân biệt tự động cơ bản (ví dụ: Tensorflow hoặc Theano) quản lý để tối ưu hóa các vectơ này liên quan đến từng số nguyên đầu vào giống như bất kỳ tham số nào khác trong mô hình của bạn. Cũng rất thú vị khi sử dụng các nhúng được học bởi các phương thức / người khác trong các miền khác nhau (xem https://blog.keras.io/USE-pre-trained-word-embeddings-in-a-keras-model.html ) như thực hiện trong [1].
[1] López-Sánchez, D., Herrero, JR, Arrieta, AG, & Corchado, JM Kết hợp học tập số liệu và lý luận dựa trên trường hợp để phát hiện clickbait thích ứng. Ứng dụng thông minh, 1-16.