Tôi đang đọc bài báo dưới đây và tôi gặp một số rắc rối khi hiểu khái niệm về lấy mẫu âm tính.
http://arxiv.org/pdf/1402.3722v1.pdf
Ai có thể giúp tôi không?
Tôi đang đọc bài báo dưới đây và tôi gặp một số rắc rối khi hiểu khái niệm về lấy mẫu âm tính.
http://arxiv.org/pdf/1402.3722v1.pdf
Ai có thể giúp tôi không?
Câu trả lời:
Ý tưởng word2vec
là tối đa hóa sự giống nhau (sản phẩm dấu chấm) giữa các vectơ cho các từ xuất hiện gần nhau (trong ngữ cảnh của nhau) trong văn bản và giảm thiểu sự tương tự của các từ không giống nhau. Trong phương trình (3) của bài báo mà bạn liên kết, hãy bỏ qua lũy thừa trong giây lát. Bạn có
v_c * v_w
-------------------
sum(v_c1 * v_w)
Tử số về cơ bản là sự giống nhau giữa các từ c
(ngữ cảnh) và w
(mục tiêu) từ. Mẫu số tính mức độ giống nhau của tất cả các ngữ cảnh khác c1
và từ đích w
. Việc tối đa hóa tỷ lệ này đảm bảo các từ xuất hiện gần nhau hơn trong văn bản có nhiều vectơ tương tự hơn các từ không xuất hiện. Tuy nhiên, việc tính toán điều này có thể rất chậm, vì có nhiều bối cảnh c1
. Lấy mẫu phủ định là một trong những cách giải quyết vấn đề này - chỉ cần chọn c1
ngẫu nhiên một vài bối cảnh . Kết quả cuối cùng là nếu cat
xuất hiện trong ngữ cảnh của food
, thì vectơ của food
giống với vectơ của cat
(được đo bằng tích dấu chấm của chúng) hơn là vectơ của một số từ được chọn ngẫu nhiên khác(ví dụ democracy
, greed
, Freddy
), thay vì tất cả các từ khác trong ngôn ngữ . Điều này làm cho word2vec
việc đào tạo nhanh hơn nhiều.
word2vec
bất kỳ từ nào đã cho, bạn có một danh sách các từ cần tương tự với nó (lớp dương) nhưng lớp phủ định (các từ không tương tự với từ targer) được biên dịch bằng cách lấy mẫu.
Tính toán Softmax (Chức năng xác định những từ nào giống với từ đích hiện tại) là tốn kém vì yêu cầu tính tổng tất cả các từ trong V (mẫu số), nói chung là rất lớn.
Những gì có thể được thực hiện?
Các chiến lược khác nhau đã được đề xuất để tính gần đúng softmax. Những cách tiếp cận có thể được chia thành các nhóm softmax dựa trên và lấy mẫu dựa trên cách tiếp cận. Các phương pháp tiếp cận dựa trên softmax là các phương pháp giữ nguyên lớp softmax, nhưng sửa đổi kiến trúc của nó để cải thiện hiệu quả của nó (ví dụ: softmax phân cấp). Mặt khác, các phương pháp tiếp cận dựa trên lấy mẫu loại bỏ hoàn toàn lớp softmax và thay vào đó là tối ưu hóa một số hàm suy hao khác gần đúng với softmax (Họ làm điều này bằng cách xấp xỉ mức chuẩn hóa ở mẫu số của softmax với một số suy hao khác rẻ tiền để tính toán như lấy mẫu âm tính).
Hàm mất mát trong Word2vec giống như sau:
Lôgarit nào có thể phân hủy thành:
Với một số công thức toán học và gradient (Xem thêm chi tiết tại 6 ), nó được chuyển đổi thành:
Như bạn thấy, nó được chuyển đổi thành nhiệm vụ phân loại nhị phân (y = 1 lớp dương, y = 0 lớp âm). Khi chúng ta cần nhãn để thực hiện nhiệm vụ phân loại nhị phân của mình, chúng tôi chỉ định tất cả các từ ngữ cảnh c là nhãn đúng (y = 1, mẫu dương) và k được chọn ngẫu nhiên từ kho ngữ cảnh làm nhãn sai (y = 0, mẫu âm).
Nhìn vào đoạn văn sau. Giả sử từ mục tiêu của chúng ta là " Word2vec ". Với cửa sổ của 3, từ bối cảnh của chúng tôi là: The
, widely
, popular
, algorithm
, was
, developed
. Những từ ngữ cảnh này được coi là nhãn tích cực. Chúng tôi cũng cần một số nhãn tiêu cực. Chúng tôi chọn ngẫu nhiên một số từ từ corpus ( produce
, software
, Collobert
, margin-based
, probabilistic
) và xem xét chúng như mẫu tiêu cực. Kỹ thuật mà chúng tôi chọn một số ví dụ ngẫu nhiên từ kho dữ liệu này được gọi là lấy mẫu âm tính.
Tham khảo :
Tôi đã viết một bài viết hướng dẫn về lấy mẫu âm ở đây .
Tại sao chúng tôi sử dụng lấy mẫu âm tính? -> để giảm chi phí tính toán
Hàm chi phí cho lấy mẫu vani Skip-Gram (SG) và Skip-Gram âm (SGNS) có dạng như sau:
Lưu ý rằng đó T
là số lượng của tất cả các từ vựng. Nó tương đương với V
. Nói cách khác, T
= V
.
Phân bố xác suất p(w_t+j|w_t)
trong SG được tính cho tất cả các từ V
vựng trong kho ngữ liệu với:
V
có thể dễ dàng vượt quá hàng chục nghìn khi đào tạo mô hình Skip-Gram. Xác suất cần được tính toán V
thời gian, làm cho nó tốn kém về mặt tính toán. Hơn nữa, hệ số chuẩn hóa trong mẫu số yêu cầu V
tính toán thêm .
Mặt khác, phân phối xác suất trong SGNS được tính bằng:
c_pos
là một vectơ từ cho từ dương và W_neg
là vectơ từ cho tất cả K
các mẫu âm trong ma trận trọng lượng đầu ra. Với SGNS, xác suất chỉ cần được tính theo K + 1
lần, K
thường là từ 5 ~ 20. Hơn nữa, không cần lặp lại thêm để tính hệ số chuẩn hóa trong mẫu số.
Với SGNS, chỉ một phần trọng lượng được cập nhật cho mỗi mẫu huấn luyện, trong khi SG cập nhật tất cả hàng triệu trọng lượng cho mỗi mẫu huấn luyện.
Làm thế nào để SGNS đạt được điều này? -> bằng cách chuyển đổi nhiệm vụ đa phân loại thành nhiệm vụ phân loại nhị phân.
Với SGNS, vectơ từ không còn được học bằng cách dự đoán các từ ngữ cảnh của một từ trung tâm. Nó học cách phân biệt các từ ngữ cảnh thực tế (tích cực) với các từ được rút ra ngẫu nhiên (tiêu cực) từ sự phân bố tiếng ồn.
Trong cuộc sống thực, bạn thường không quan sát regression
bằng những từ ngẫu nhiên như Gangnam-Style
, hoặc pimples
. Ý tưởng là nếu mô hình có thể phân biệt giữa các cặp có khả năng xảy ra (tích cực) và các cặp không chắc chắn (tiêu cực), các vectơ từ tốt sẽ được học.
Trong hình trên, cặp ngữ cảnh-từ khẳng định hiện tại là ( drilling
, engineer
). K=5
mẫu tiêu cực được rút ra một cách ngẫu nhiên từ phân phối tiếng ồn : minimized
, primary
, concerns
, led
, page
. Khi mô hình lặp lại qua các mẫu huấn luyện, các trọng số được tối ưu hóa để xác suất cho cặp dương tính sẽ xuất ra p(D=1|w,c_pos)≈1
và xác suất cho cặp âm sẽ xuất ra p(D=1|w,c_neg)≈0
.
K
là V -1
, thì lấy mẫu âm cũng giống như mô hình bỏ qua vani. Tôi hiểu có đúng không?