Sinh viên cho Skipgram word2vec


9

Tôi đang giải quyết các vấn đề trong bài tập viết sâu của lớp học NLP Stanford http://cs224d.stanford.edu/assocate1/assocate1_soln

Tôi đang cố gắng để hiểu câu trả lời cho 3a nơi họ đang tìm kiếm đạo hàm cho vectơ cho từ trung tâm.

Giả sử bạn được cung cấp một vectơ từ dự đoán tương ứng với từ trung tâm c cho Skipgram và dự đoán từ được thực hiện với hàm softmax được tìm thấy trong các mô hình word2vec.vc

y^o=p(o|c)=exp(uoTvc)w=1Wexp(uwTvc)

Trong đó w biểu thị từ w-th và (w = 1, .., W) là các vectơ từ đầu ra của cho tất cả các từ trong từ vựng. Giả sử chi phí entropy chéo được áp dụng cho dự đoán này và từ o là từ dự kiến.uw

Trong đó là ma trận của tất cả các vectơ đầu ra và hãy là vectơ cột của dự đoán softmax của các từ và y là nhãn một nóng cũng là một vector cột.yU=[u1,u2,···,uW]y^

Trong đó entropy chéo làCE(y,y^)=iyilog(y^i)

Vì vậy, câu trả lời cho độ dốc cho vectơ trung tâm làJvc=UT(y^y).

Ai đó có thể chỉ cho tôi các bước để có được điều này? Tôi đã sử dụng câu hỏi này làm Tài liệu tham khảo về mất entropy chéo trong word2vec nhưng tôi đặc biệt muốn biếtđại diện.UT(y^y).

Câu trả lời:


15

Đầu tiên, hãy trình bày những gì chúng ta có và các giả định của chúng ta về hình dạng của các vectơ khác nhau. Để cho,

  1. |W|là số lượng từ trong vocab
  2. y và là các vectơ cột có hình dạngx 1y | W |y^|W|
  3. ui và là các vectơ cột có hình dạng X 1 ( = kích thước của các nhúng)vjDD
  4. y là vectơ cột được mã hóa một hình nóngx 1|W|
  5. y^ là vectơ cột dự đoán softmax có hình dạngx 1|W|
  6. y^i=P(i|c)=exp(uiTvc)w=1Wexp(uwTvc)
  7. Mất entropy chéo:J=i=1Wyilog(yi^)
  8. U=[u1,u2,...,uk,...uW] là một ma trận gồm các vectơ cột .uk

Bây giờ, chúng ta có thể viết Đơn giản hóa, Bây giờ, chúng ta biết rằng là một mã hóa nóng, vì vậy tất cả các yếu tố của nó bằng không, ngoại trừ chỉ số tại, giả sử, chỉ số . Điều đó có nghĩa là, chỉ có một thuật ngữ khác không trong tổng kết ở trên tương ứng với và tất cả các thuật ngữ khác trong tổng kết là số không. Vì vậy, chi phí cũng có thể được viết là: Lưu ý: ở trên là 1.

J=i=1Wyilog(exp(uiTvc)w=1Wexp(uwTvc))
J=i=1Wyi[uiTvclog(w=1Wexp(uwTvc))]
ykthyk
J=yk[ukTvclog(w=1Wexp(uwTvc))]
yk

Giải quyết cho : Jvc

Jvc=[ukw=1Wexp(uwTvc)uwx=1Wexp(uxTvc)]

Có thể được sắp xếp lại dưới dạng: Sử dụng định nghĩa (6), chúng ta có thể viết lại phương trình trên dưới dạng:

Jvc=w=1W(exp(uwTvc)x=1Wexp(uxTvc)uw)uk
Jvc=w=1W(y^wuw)uk

Bây giờ hãy xem làm thế nào điều này có thể được viết trong ký hiệu Ma trận. Lưu ý rằng:

  1. uk U . y có thể được viết dưới dạng phép nhân vectơ ma trận:U.y
  2. Và là một phép biến đổi tuyến tính của vectơ trong được chia tỷ lệ tương ứng bởi . Điều này một lần nữa có thể được viết làw=1W(y^wuw)uwUyy^wU.y^

Vì vậy, toàn bộ điều có thể được viết ngắn gọn là:

U[y^y]

Cuối cùng, lưu ý rằng chúng ta giả sử s là một vectơ cột. Nếu chúng tôi đã bắt đầu với các vectơ hàng, chúng tôi sẽ nhận được , giống như những gì bạn đang tìm kiếm.uiUT[y^y]


1
Chỉ muốn nói rằng đây là một lời giải thích tuyệt vời cho phái sinh! Nó thực sự có ích cho những người nghiện toán học như tôi. Cảm ơn bạn!
Eric Kim

1
+1 cho lời giải thích tuyệt vời!
bragboy

Tôi không hiểu tại sao sự phát sinh này:
BATB=A
part
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.