Thứ Hai, 3 tháng 12, 2018

[Natural Language Processing] Word2Vec sử dụng Skip-Gram model

Trong Skip-Gram model, ta sử dụng một hidden layer cho mạng neuron, nhưng khác với các mô hình khác khi mà mục tiêu của ta là đầu ra của mạng neuron, trong Skip-Gram model, mục tiêu của ta là weights của hidden layer đó. Ta sẽ thấy rõ được mục tiêu của mô hình Skip-Gram dưới đây nhưng trước tiên ta cần nhắc lại một chút lý thuyết.

Trong mô hình Skip-Gram, input là một từ ở giữa 1 câu (input word), ta phải tìm kiếm những từ xung quanh từ này trong câu đó, giả sử câu là chưa biết, ta chỉ biết từ đó là ở giữa câu. Khi này, ta cần tính toán xác xuất cho tất cả các từ trong vocabulary để các từ đó nằm cùng trong câu với input word.

Lý thuyết thì nghe có vẻ lằng nhằng, hãy nhìn vào một ví dụ sau đây.
Input word là từ "Soviet", khi này, bằng trực giác, ta thấy rằng xác xuất cho từ "Union" hay "Russia" chắc chắn sẽ cao hơn những từ có vẻ không liên quan đến "Soviet" - input word như "watermelon" hay "kangaroo".

Để train mô hình Skip-Gram, ta đưa vào các cặp từ trong training documents. Ví dụ trong 1 document ta có câu sau: “The quick brown fox jumps over the lazy dog.” Khi này, và ta đang sử dụng cửa sổ có chiều dài là 2, với mỗi từ trong câu ta có các cặp như hình dưới đây để đưa vào mô hình cho việc training.

Ta thấy các cặp từ được trích xuất ra ở đây, và chúng sẽ là cơ sở cho việc lựa chọn đầu ra của Skip-Gram model. Ví dụ trong khi training, ta không có cặp (cat,boy), khi đó, xác suất để "boy" nằm xung quanh từ "cat" - input word sẽ là nhỏ.

Tiếp theo ta sẽ nói về weights, bản chất của Word2Vec là ta muốn biểu diễn một từ thành một vector với size cố định.

Ở hình dưới, input word là "ant" là một vector one-hot (ví dụ trong vocabulary có 10000 từ và từ ant nằm ở vị trí thứ 100), thì "ant" sẽ được biểu diễn là 1 vector 10000 phần tử và tất cả các phần tử đều là giá trị không ngoại trừ giá trị tại vị trí thứ 100 sẽ là 1. 

Như ta đã biết, đầu ra của mô hình này là các từ xung quanh từ "ant", và cá từ này cũng sẽ được biểu diễn bằng 1 vector one-hot với 1 xác suất đi kèm.

Ta lưu ý rằng ở đây ta sẽ có 2 ma trận trong số W1 (input - hidden layer) và W2 (hidden layer - output), và không có activation function cho hidden layer, nhưng output layer sẽ sử dụng softmax function.

Trong hình dưới, ta đang sử dụng 300 features (số features là không cố định và có thể tùy biến), do đó ma trận W1 sẽ có size là (1000x300), 10000 ứng với 10000 phần tử của input vector và 300 là số features. 300 features được Google sử dụng trong Google new dataset, số features này là một hyperparameter và chúng biến động với tập dữ liệu và ứng dụng khác nhau.


Đặc biệt, nếu ta nhìn vào 1 hàng của ma trận W1, đó sẽ là word vector ứng với 1 từ.


Do đó nếu "ant" ở vị trí thứ 100, thì hàng thứ 100 của vector màu xanh trên có size là 1x300 chính là biểu diễn dưới dạng vector của từ này trong vocabulary.

Không có nhận xét nào:

Đăng nhận xét