Có thể không phải là câu trả lời bạn đang tìm kiếm, nhưng tôi vẫn sẽ đi:
Đầu tiên, đánh giá nhanh về word2Vec, giả sử chúng ta đang sử dụng bỏ qua gram.
Một mô hình có thể đào tạo Word2Vec điển hình bao gồm 1 lớp đầu vào (ví dụ: vectơ một nóng dài 10 000), một lớp ẩn (ví dụ 300 nơ ron), một đầu ra (vectơ một nóng dài 10 000)
- Đầu vào: 10 000
- Ẩn: 300
- Đầu ra: 10 000
Có một ma trận E giữa Input-Hidden, mô tả các trọng số để làm cho một điểm nóng của bạn thành một sự nhúng. Ma trận là đặc biệt bởi vì mỗi cột (hoặc hàng, tùy thuộc vào ký hiệu ưa thích của bạn) đại diện cho kích hoạt trước trong 300 nơ-ron đó - phản ứng với một vectơ 1 nóng tương ứng.
Bạn không cần thực hiện bất kỳ kích hoạt nào trên 300 nơ-ron này và có thể sử dụng ngay các giá trị của chúng như một sự nhúng trong bất kỳ nhiệm vụ nào trong tương lai.
Tuy nhiên, chỉ đơn giản là ép một nóng thành một đại diện 300 chiều là không đủ - nó phải có ý nghĩa. Và chúng tôi đảm bảo ý nghĩa này là chính xác khi sử dụng ma trận thứ hai bổ sung - kết nối Ẩn với Đầu ra
Chúng tôi không muốn kích hoạt một lớp ẩn vì chức năng kích hoạt sẽ không cần thiết trong thời gian chạy, tuy nhiên, trong trường hợp đó, chúng tôi sẽ cần một ma trận thứ hai, đi từ Ẩn sang Đầu ra.
Ma trận thứ hai này sẽ làm cho một điểm nóng hoàn toàn khác với việc nhúng của bạn. Một từ nóng như vậy sẽ đại diện cho một từ rất có thể ở gần (theo ngữ cảnh) của một từ nóng ban đầu của bạn. Nói cách khác, sản phẩm này sẽ không phải là sản phẩm gốc của bạn.
Đó là lý do tại sao một ma trận thứ hai là cần thiết. Ở đầu ra, chúng tôi thực hiện một softmax, giống như trong một vấn đề phân loại.
Điều này cho phép chúng tôi thể hiện mối quan hệ "từ" -> nhúng -> "bối cảnh-hàng xóm-từ"
Bây giờ, backpropagation có thể được thực hiện, để điều chỉnh các trọng số ẩn đầu vào (Ma trận đầu tiên của bạn E) - đây là các trọng số chúng tôi thực sự quan tâm. Đó là bởi vì Matrix E có thể được sử dụng trong Thời gian chạy (tôi nghĩ), có lẽ được cắm như một lớp được kết nối đầy đủ đầu tiên vào một số Mạng thần kinh tái phát.
Trong trường hợp đó, bạn sẽ không sử dụng điều này:
Bạn không cần thực hiện bất kỳ kích hoạt nào trên 300 nơ-ron này và có thể sử dụng ngay các giá trị của chúng để nhúng vào bất kỳ nhiệm vụ nào trong tương lai
nhưng thay vào đó, bạn chỉ cần lấy cột thích hợp (hoặc hàng, tùy thuộc vào ký hiệu ưa thích của bạn) từ ma trận đó, trong Thời gian chạy. Lợi ích là theo cách này bạn có được một lớp được kết nối đầy đủ được đào tạo trước rất rẻ, được thiết kế để hoạt động với một điểm nóng. Thông thường, các lớp đầu tiên sẽ dài nhất để đào tạo, do vấn đề biến mất độ dốc.
Tại sao cần có ma trận thứ hai trong quá trình đào tạo:
Một lần nữa, nhớ lại, không có kích hoạt ở lớp ẩn.
Chúng tôi có thể ra lệnh cho mạng những gì "một nóng" phải được tạo ra để đáp ứng với "nóng một đầu vào" ban đầu của bạn và có thể trừng phạt mạng nếu không tạo được câu trả lời đúng.
Chúng ta không thể đặt softmax trực tiếp sau lớp ẩn, bởi vì chúng ta quan tâm đến việc triệu tập một cơ chế để chuyển đổi thành nhúng. Đó là trách nhiệm của một ma trận đầu tiên E. Vì vậy, chúng ta cần thêm một bước (một ma trận phụ) sẽ cho chúng ta đủ chỗ để tạo một kết luận ở lớp đầu ra về một từ hàng xóm khác nhưng tương tự (theo ngữ cảnh)
Trong thời gian chạy bạn vứt bỏ ma trận thứ hai. Nhưng đừng xóa nó vĩnh viễn trong trường hợp nếu bạn cần quay lại và tiếp tục đào tạo mô hình của mình.