Word2vec hoạt động trong hai mô hình CBOW và Skip-gram. Hãy lấy mô hình CBOW, vì câu hỏi của bạn diễn ra giống như cách dự đoán từ mục tiêu, đưa ra các từ xung quanh.
Về cơ bản, mô hình phát triển ma trận trọng số đầu vào và đầu ra, phụ thuộc vào các từ ngữ cảnh đầu vào và từ mục tiêu đầu ra với sự trợ giúp của một lớp ẩn. Do đó, lan truyền ngược được sử dụng để cập nhật các trọng số khi chênh lệch lỗi giữa vectơ đầu ra dự đoán và ma trận đầu ra hiện tại.
Về cơ bản, dự đoán từ mục tiêu từ các từ ngữ cảnh đã cho được sử dụng như một phương trình để thu được ma trận trọng số tối ưu cho dữ liệu đã cho.
Để trả lời phần thứ hai, có vẻ hơi phức tạp hơn chỉ là một tổng tuyến tính.
- Có được tất cả các vectơ từ của từ ngữ cảnh
- Trung bình họ để tìm ra vector lớp ẩn
h
của kích thướcNx1
- Lấy ma trận đầu ra
syn1
( word2vec.c
hoặc gensim
) có kích thướcVxN
- Nhân
syn1
với h
, vectơ kết quả sẽ z
có kích thướcVx1
- Tính toán vectơ xác suất
y = softmax(z)
với kích thước Vx1
, trong đó xác suất cao nhất biểu thị biểu diễn một nóng của từ mục tiêu trong từ vựng.
V
biểu thị kích thước của từ vựng và N
biểu thị kích thước của vectơ nhúng.
Nguồn: http://cs224d.stanford.edu/lecture_notes/LectureNotes1.pdf
Cập nhật: Các mô hình bộ nhớ ngắn hạn hiện đang làm rất tốt trong việc dự đoán các từ tiếp theo. Các mô hình seq2seq được giải thích trong hướng dẫn tenorflow . Ngoài ra còn có một bài viết blog về thế hệ văn bản.