2.1. Giới thiệu Word2vec
Như chúng ta đã biết máy tính được cấu tạo từ những con số, do đĩ nĩ chỉ cĩ thể đọc được dữ liệu số mà thơi. Trong natural language processing thì để xử lý dữ liệu text chúng ta cũng phải chuyển dữ liệu từ text sang numeric, tức là đưa nĩ vào một khơng gian mới người ta thường gọi là embbding. Trước đây người ta mã hĩa theo kiểu one hot encoding tức là tạo một từ vựng cho dữ liệu và mã hĩa các từ trong document thành những vecto, nếu từ đĩ cĩ trong document thì mã hĩa là 1 cịn khơng cĩ sẽ là 0. Kết quả tạo ra một sparse matrix, tức là matrix hầu hết là 0. Các mã hĩa này cĩ nhiều nhược điểm đĩ là thứ nhất là số chiều của nĩ rất lớn (NxM, N là số document cịn M là số vocabulary), thứ 2 các word khơng cĩ quan hệ với nhau. Điều đĩ dẫn đến người ta nghĩ ra một model mới cĩ tên là Word embbding, ở đĩ các word sẽ cĩ quan hệ với nhau về ngữ nghĩa tức là ví dụ như paris-tokyo,man-women,boy-girl những cặp từ này sẽ cĩ khoảng cách gần nhau hơn trong Word embbding space. Ví dụ điển hình mà ta thây đĩ là phương trình king - queen = man - women . Cái ưu điểm thứ 2 là số chiều của nĩ sẽ giảm chỉ cịn NxD. Word embbding cĩ 2 model nổi tiếng là word2vec và Glove.
Word2vec được tạo ra năm 2013 bởi một kỹ sư ở google cĩ tên là Tomas Mikolov. Nĩ là một mơ hình học khơng giám sát (unsupervised learning model), được huấn luyện từ corpus lớn. Chiều của Word2vec nhỏ hơn nhiều so với one-hot- encoding, với số chiều là NxD với N là Number of document và D là số chiều word embedding. Word2vec cĩ 2 model là skip-gram và Cbow.
Skip-gram model là model predict word surrounding khi cho một từ cho trước, ví dụ như text = "I love you so much". Khi dùng 1 window search cĩ kic 3 ta thu được : {(i,you),love},{(love,so),you},{(you,much),so}. Nhiệm vụ của nĩ là khi cho 1 từ center ví dụ là love thì phải predict các từ xung quang là i, you.
Cbow là viết tắt của continous bag of word. Model này ngược với model skip- gram tức là cho những từ gần với từ dự đốn.
Trong thực tế người ta chỉ chọn một trong 2 model để training, Cbow thì training nhanh hơn nhưng độ chính xác khơng cao bằng skip-gram và ngược lại
ThS. Nguyễn Thị Thúy Hồi Trang 38 Glove cũng được tạo ra năm 2013 bởi một nhĩm nghiên cứu ở stanford. Nĩ dựa trên mơ hình dựa trên việc đếm từ (word-count base model). Nĩ dùng kỹ thuật matrix factorization để đưa matrix ban đầu về các matrix nhỏ. Trong bài này ta chỉ tìm hiểu model Skip-gram model. Cbow là model ngược lại.
2.2. Mơ hình Skip-gram
Skip-gram model cĩ cấu trúc như hình vẽ dưới đây.
Hình 2-1: Sơ đồ mơ hình Skip-gram
Đầu vào là one-hot-vector mỗi word sẽ cĩ dạng x1,x2,..xvx1,x2,..xv trong đĩ V là số vocabulary, là một vector trong đĩ mỗi word sẽ cĩ giá trị 1 tương đương với index trong vocabulary và cịn lại sẽ là 0.
Weight matrix giữa input và hidden layer là matrix W(cĩ dimention VxN) cĩ active function là linear, weight giữa hidden và đầu ra là W′W′ (cĩ dimention là NxV) active function của out put là soft max.
Mỗi hàng của W là vector N chiều đại diện cho vwvw là mỗi word trong input layer.Mỗi hàng của W là vTwvwT. Lưu ý là input là 1 one hot vector (sẽ cĩ dạng 000100) chỉ cĩ 1 phần tử bằng 1 nên.
ThS. Nguyễn Thị Thúy Hồi Trang 39 Từ hidden layer đến out put là matrix W′=w′i,jW′=wi,j′ . Ta tính score uiui cho mỗi word trong vocabulary.
uj=v′wjhuj=vwj′h
Trong đĩ vwjvwj là vector cột j trong W′W′. Tiếp đĩ ta sử dụng soft max funtion. P(wj|wI)=yi=exp(uj)∑Vj′=1exp(uj′)==exp(v′TwjvwI)∑Vj′=1exp(v′Twj′vwI)P(wj |wI)=yi=exp(uj)∑j′=1Vexp(uj′)==exp(vwj′TvwI)∑j′=1Vexp(vwj′′TvwI)
Trong đĩ vwvw và vw′vw′ là 2 vector đại diện cho word w đên từ matrix W và W′W′.
Người ta dùng maximum likehood với gradient descent để giải quyết bài tốn này nhưng vì vocabulary lớn nên tính tốn mẫu số nĩ tính trên tồn bộ vocabulary nên chi phí tính tốn lớn nên người ta dùng 2 phương pháp giải quyết là Hierarchical Softmax hoặc Negative Sampling chi tiết trong paper "word2vec Parameter Learning Explained" của Xin Rong
Build model from scratch.
2.3. Xây dựng mơ hình từ scratch
Việc xây dựng model skip-gram đơn giản như sau: Giả sử ta cĩ đoạn text: "He is the king. The king is royal. She is the royal queen" các bước sẽ là:
- Làm sạch dữ liệu, lower và bỏ dấu chấm
- Xây dựng vocabulary và 2 cái dictionary , 1 cái để tìm index theo word cái cịn lại thì ngược lại
- Tiếp theo xây dựng dữ liệu training, dùng 1 window search để stride trên text, dữ liệu sẽ cĩ dạng (he,is),(he,the)..
- Mã hĩa dữ liệu về numeric dựa vào 2 cái dictionary vừa tạo Traing model
- Tìm matrix word embbding vào vẽ đồ thị minh họa.
Đầu tiên chúng ta làm sạch dữ liệu và xây dựng vocabulary. {'queen', 'he', 'royal', 'is', 'king', 'the', 'she'}
Tiếp theo là 2 dictionary
ThS. Nguyễn Thị Thúy Hồi Trang 40 Index theo word thì ngược lại: {0: 'queen', 1: 'he', 2: 'royal', 3: 'is', 4: 'king', 5: 'the', 6: 'she'}
Tiếp theo xây dựng data training sẽ cĩ dạng :(he,is),(he,the)… trong đĩ cái đầu sẽ là input, cái sau sẽ là out put
mã hĩa nĩ về numeric : sẽ cĩ dạng sau :input : [ 0., 0., 0., 1., 0., 0., 0.] , ouput : [ 1., 0., 0., 0., 0., 0., 0.] lưu ý size vocabulary là 7
Ta sẽ training model: Vì vocabualary này nhỏ nên ta dùng gradient descent training loss softmax minimum luơn.
ThS. Nguyễn Thị Thúy Hồi Trang 41