Tôi đang cố gắng hiểu tại sao mô hình skipgram của word2vec có 2 biểu diễn cho mỗi từ (biểu diễn ẩn là từ nhúng) và biểu diễn đầu ra (còn được gọi là nhúng từ ngữ cảnh). Đây có phải chỉ là sự tổng quát, nơi mà bối cảnh có thể là bất cứ điều gì (không chỉ từ) hoặc có lý do cơ bản hơn làTại sao word2vec sử dụng 2 biểu diễn cho mỗi từ?
Trả lời
Mô hình word2vec có thể được coi là mô hình mạng nơron đơn giản với một lớp ẩn và không kích hoạt phi tuyến tính . Mô hình đưa ra một từ cố gắng dự đoán các từ ngữ cảnh mà nó xuất hiện.
Vì đó là mạng nơron cần đầu vào, đầu ra và chức năng khách quan. Đầu vào và đầu ra chỉ là một mã hóa nóng của các từ và hàm mục tiêu là mất entropy chéo với kích hoạt softmax ở đầu ra.
Nội dung nhập vào ma trận trọng số ẩn nhân với đầu vào mã hóa một lần nóng, chọn cột duy nhất cho mỗi từ. Tương tự như vậy, ma trận đầu ra được ẩn ra chỉ ra rằng nó có thể được hiểu là các hàng tương ứng với mỗi từ ngữ cảnh (cùng một đầu ra mã hóa một nóng đóng một phần ở đây).
tôi khuyên bạn nên đọc bài viết này về Word2Vec: http://arxiv.org/pdf/1402.3722v1.pdf
Họ đưa ra một trực giác về việc tại sao hai đại diện trong một chú thích: đó là không có khả năng rằng một từ xuất hiện trong bối cảnh riêng của mình, vì vậy bạn sẽ muốn giảm thiểu xác suất p (w | w). Nhưng nếu bạn sử dụng cùng vectơ cho w dưới dạng ngữ cảnh cho w là từ trung tâm, bạn không thể thu nhỏ p (w | w) (được tính qua sản phẩm dấu chấm) nếu bạn muốn giữ các từ nhúng trong vòng tròn đơn vị.
Nhưng nó chỉ là một trực giác, tôi không biết nếu có bất kỳ biện minh rõ ràng cho điều này ...
IMHO, lý do thực sự tại sao bạn sử dụng cơ quan đại diện khác nhau là bởi vì bạn thao tác các đối tượng của thiên nhiên khác nhau. "con chó" như một bối cảnh không được coi là giống như "con chó" như một từ trung tâm bởi vì chúng không. Bạn xử lý cơ bản các ma trận lớn của các lần xuất hiện (từ ngữ, ngữ cảnh), cố gắng tối đa hóa xác suất của các cặp thực sự xảy ra. Theoreticaly bạn có thể sử dụng như bối cảnh bigrams, cố gắng để tối đa hóa ví dụ xác suất của (word = "for", context = "để tối đa hóa"), và bạn sẽ chỉ định một vector đại diện để "để tối đa hóa". Chúng tôi không làm điều này bởi vì sẽ có quá nhiều biểu diễn để tính toán, và chúng tôi sẽ có ma trận thưa thớt reeeeeally, nhưng tôi nghĩ ý tưởng là ở đây: thực tế là chúng tôi sử dụng "1 gram" như ngữ cảnh chỉ là một trường hợp cụ thể của tất cả các loại ngữ cảnh chúng ta có thể sử dụng.
Đó là cách tôi xem và nếu sai, vui lòng sửa!
Kiểm tra các chú thích trên trang 2 của điều này: http://arxiv.org/pdf/1402.3722v1.pdf
này cho một trực giác khá rõ ràng cho vấn đề này.
Nhưng bạn cũng có thể chỉ sử dụng một vectơ để đại diện cho một từ. Kiểm tra điều này (Stanford CS 224n) https://youtu.be/ERibwqs9p38?t=2064
Tôi không chắc chắn cách thực hiện (video cũng không giải thích được).
- 1. Làm thế nào để sử dụng biểu diễn vector của các từ (như thu được từ Word2Vec, v.v) làm các tính năng cho một trình phân loại?
- 2. xóa từ dừng khi sử dụng word2vec
- 3. Sử dụng word2vec để phân loại từ loại
- 4. Tại sao có một JVM cho mỗi ứng dụng?
- 5. Akka Socket cho mỗi diễn viên
- 6. Tại sao sử dụng tên dirname trong lệnh tìm cho dấu chấm cho mỗi trận đấu?
- 7. Gensim word2vec trên dữ liệu từ điển và từ chỉ định được xác định trước
- 8. Cách nhận số từ vựng từ gensim word2vec?
- 9. Tại sao Angular 2 sử dụng trang trí?
- 10. Sử dụng biểu diễn __str__ cho các đối tượng in trong các thùng chứa trong Python
- 11. Tại sao loggers khuyên bạn nên sử dụng một logger cho mỗi lớp?
- 12. Tại sao sử dụng từ khóa void?
- 13. Cách tìm từ gần nhất với vector bằng cách sử dụng word2vec
- 14. Tại sao màn trình diễn của 2 truy vấn này lại khác biệt?
- 15. word2vec, tổng hợp hoặc từ khóa trung bình?
- 16. Clojure: Tại sao if-let chỉ cho phép 2 biểu mẫu trong vector ràng buộc?
- 17. Chuẩn mực biểu diễn biểu đồ
- 18. Word2Vec: Số kích thước
- 19. ElasticSearch biểu diễn mong đợi
- 20. Scala: Tại sao diễn viên lại nhẹ?
- 21. Tại sao chỉ có một lớp cho mỗi tập tin
- 22. Biểu diễn phần cứng cho mảng trong VHDL
- 23. Tại sao Android sử dụng Java?
- 24. Tại sao nên sử dụng một cửa hàng cho mỗi thực thể trong cấu trúc ứng dụng thông lượng?
- 25. Tại sao chúng ta không sử dụng 2-3 hoặc 2-3-4-5 cây?
- 26. Sử dụng tính năng nhúng từ được đào tạo (word2vec hoặc Glove) trong TensorFlow
- 27. trong JSON, Tại sao mỗi tên được trích dẫn?
- 28. Cách tải xuống word2vec?
- 29. gensim word2vec: Tìm số từ trong từ vựng
- 30. biểu diễn byte trong BINARY_CHECKSUM()?