- Tác giả: Cao Chánh Dương.
- Sinh viên năm 3 Khoa Khoa học và kĩ thuật Máy tính Đại học Bách khoa TPHCM.
- Nhóm Deep Research Atomic Group Of New-Age (DRAGON).
Word Embedding là thuật ngữ dùng để chỉ các mô hình và phương pháp trong Xử lý ngôn ngữ tự nhiên (NLP) để ánh xạ các từ hoặc cụm từ sang các vector số (thường là số thực). Đây là một công cụ quan trọng trong hầu hết các thuật toán và kiến trúc Machine Learning và Deep Learning để xử lý input dưới dạng văn bản, vì chúng chỉ có thể làm việc với input dưới dạng số. Công cụ này giúp thực hiện các tác vụ phân loại, hồi quy, vv…
Word Embedding chủ yếu được chia thành hai loại:
Bạn đang xem: SƠ LƯỢC WORD EMBEDDING
- Frequency-based Embedding (Từ căn cơ)
- Prediction-based Embedding (Từ dự đoán)
2.1 Từ căn cơ
Như đã đề cập trong tên gọi, Từ căn cơ (Frequency-based Embedding) dựa vào tần số xuất hiện của các từ để tạo ra các vector từ. Có ba loại phổ biến nhất:
- Count Vector.
- tf-idf Vector.
- Co-occurrence Matrix.
Count Vector là dạng đơn giản nhất của Từ căn cơ. Giả sử chúng ta có D tài liệu d1, d2,…dD và N là độ dài của từ điển, vector biểu diễn của một từ là một vector số nguyên với độ dài là D. Phần tử ở vị trí i trong vector chính là tần số của từ đó xuất hiện trong tài liệu di. Trong một số trường hợp, chúng ta có thể bỏ bớt các từ có tần số xuất hiện thấp hoặc thay đổi mục nhập của vector (thay vì tần số, có thể sử dụng giá trị nhị phân biểu thị sự xuất hiện của từ) tùy thuộc vào mục đích cụ thể.
Khác với Count Vector chỉ xét đến tần số xuất hiện của từ trong một tài liệu, tf-idf Vector quan tâm cả tần số xuất hiện của từ trong toàn bộ tập dữ liệu. Chính vì điều này, tf-idf Vector có tính phân loại cao hơn so với Count Vector. tf-idf (Term Frequency-Inverse Document Frequency) Vector là một vector số thực cũng có độ dài D với D là số tài liệu. Vector này được tính bằng cách tích của hai phần tử bao gồm tf và idf. Công thức cho mỗi phần tử của vector như sau:
Đối với tf-idf Vector, giá trị của nó bị điều chỉnh bởi trọng số idf. Từ công thức này, ta có thể hiểu rằng nếu từ xuất hiện trong nhiều tài liệu hơn (ít có ý nghĩa), giá trị của nó sẽ nhỏ hơn. Điều này ảnh hưởng đến kết quả cuối cùng.
Tuy nhiên, khuyết điểm của cả hai phương pháp trên chính là chúng chỉ chú trọng vào tần số xuất hiện của từ mà không mang ý nghĩa về ngữ cảnh. Co-occurrence Matrix giải quyết một phần vấn đề này. Co-occurrence Matrix bảo tồn mối quan hệ ngữ nghĩa giữa các từ, được xây dựng dựa trên số lần xuất hiện của các cặp từ trong Context Window. Một Context Window được xác định bởi kích thước và hướng. Dưới đây là một ví dụ của Context Window:
Thông thường, Co-occurrence Matrix là một ma trận vuông đối xứng, mỗi hàng hoặc cột biểu diễn vector của từ tương ứng. Áp dụng ví dụ trên, ta có ma trận Co-occurrence Matrix như sau:
Tuy nhiên, trong thực tế, do số lượng từ vựng lớn, chúng ta thường bỏ đi một số từ không cần thiết (như stopwords), hoặc sử dụng phân tách SVD (Singular Value Decomposition) để giảm kích thước vector từ và tiết kiệm bộ nhớ lưu trữ Co-occurrence Matrix (do ma trận này có kích thước lớn).
GloVe (Global Vector) là một trong những phương pháp mới để xây dựng vector từ (được giới thiệu vào năm 2014), và nó dựa trên Co-occurrence Matrix. GloVe trọng tâm vào tỉ lệ sau:
Xem thêm : FPGA là gì? FPGA được sử dụng để làm gì?
Trong đó:
P(k|i) là xác suất xuất hiện của từ k trong ngữ cảnh của từ i.
Công thức của P(k|i) như sau:
Xem thêm : FPGA là gì? FPGA được sử dụng để làm gì?
Trong đó:
Xik: số lần xuất hiện của từ k trong ngữ cảnh của từ i (hoặc ngược lại).
Xi: số lần xuất hiện của từ i trong ngữ cảnh của toàn bộ các từ khác ngoại trừ i.
(Các giá trị này chính là các phần tử trong Co-occurrence Matrix)
Ý tưởng chính của GloVe là xác định mức độ tương tự về ngữ nghĩa giữa hai từ i và j thông qua mức độ tương tự về ngữ nghĩa giữa từ k với mỗi từ i và j. Các từ k có mức độ xác định ngữ nghĩa tốt là những từ có giá trị của (1) xấp xỉ từ 1 hoặc lớn hơn 1. Ví dụ, nếu i là “table”, j là “cat” và k là “chair”, giá trị của (1) sẽ là lớn do “chair” có ngữ nghĩa gần với “table” hơn là “cat”. Trong trường hợp khác, nếu ta thay k bằng “ice cream”, giá trị của (1) sẽ gần bằng 1 vì “ice cream” có ít quan hệ với “table” và “cat”.
Trong GloVe, chúng ta cần tìm một hàm F để ánh xạ từ các vector từ trong không gian V sang giá trị tỉ lệ với (1). Tuy việc tìm ra F không đơn giản, nhưng sau các bước đơn giản hóa và tối ưu, chúng ta có thể đưa nó về bài toán tối thiểu hóa hàm chi phí sau:
Xem thêm : FPGA là gì? FPGA được sử dụng để làm gì?
Trong đó:
wi,wj là các vector từ.
bi,bj là các bias tương ứng (được thêm vào trong các bước đơn giản hóa và tối ưu).
Xij: giá trị tương ứng với cặp từ i, j trong Co-occurrence Matrix.
Xem thêm : ‘Tam sinh tam thế: Chẩm thượng thư’: Chân thân của A Ly và Bạch Cổn Cổn là gì?
F được gọi là hàm weighting function, được thêm vào để giảm thiểu ảnh hưởng của các cặp từ xuất hiện quá thường xuyên. Hàm này có ba tính chất:
- Giới hạn tại 0.
- Không giảm.
- Giảm khi giá trị đầu vào rất lớn.
Thực tế, có nhiều hàm thỏa các tính chất này, và chúng ta có thể chọn hàm sau:
Với α=3/4
Việc tìm hiểu về GloVe và tối thiểu hóa hàm chi phí J để tìm các vector từ wi, wj có thể được thực hiện bằng nhiều cách, trong đó, cách tiêu chuẩn nhất là sử dụng phương pháp Gradient Descent.
2.2 Từ dự đoán
Từ dự đoán (Prediction-based Embedding) tạo ra các vector từ dựa trên các mô hình dự đoán. Mô hình tiêu biểu nhất là Word2vec, một kết hợp của hai mô hình là CBOW (Continous Bag Of Words) và Skip-gram. Cả hai mô hình này đều được xây dựng dựa trên một mạng neuron với 3 lớp: 1 lớp Input, 1 lớp Hidden và 1 lớp Output. Mục tiêu của mạng neuron này là học các trọng số để biểu diễn các vector từ.
CBOW hoạt động bằng cách dự đoán xác suất của một từ dựa trên ngữ cảnh (một ngữ cảnh có thể bao gồm một hoặc nhiều từ). Input là một hoặc nhiều vector nhị phân đại diện cho các từ trong ngữ cảnh có độ dài V (với V là độ lớn của từ điển), Output là một vector xác suất chứa V thành phần tương ứng với các từ liên quan hoặc bị thiếu trong ngữ cảnh. Hidden Layer có kích thước N, cũng chính là kích thước của vector biểu diễn từ. Dưới đây là mô hình CBOW với ngữ cảnh có 1 từ duy nhất:
Đối với dữ liệu huấn luyện, Input bao gồm các bộ mã hóa ngữ cảnh và các bộ mã hóa các từ mong muốn. Cách hoạt động của mô hình là ban đầu, hai ma trận trọng số Input-Hidden và Hidden-Output được khởi tạo ngẫu nhiên. Input sau khi nhân với ma trận trọng số Input-Hidden sẽ tạo ra kết quả gọi là Hidden Activation, kết quả này sau đó sẽ được nhân với ma trận trọng số Hidden-Output và cuối cùng được đưa vào một hàm softmax để tạo ra Output là một vector xác suất. Output này sẽ được so sánh với Output mong muốn và tính toán lỗi. Dựa trên lỗi này, mạng neuron sẽ lan truyền ngược để cập nhật giá trị của các ma trận trọng số. Với mô hình CBOW nhiều Input, cách hoạt động tương tự, chỉ khác ở chỗ các kết quả thu được từ việc nhân các Input với ma trận trọng số sẽ được lấy trung bình để tạo ra kết quả cuối cùng của Hidden Activation. Các trọng số của ma trận Hidden-Output sau khi hoàn thành việc học sẽ được dùng làm biểu diễn của các vector từ.
Mô hình Skip-gram có cấu trúc tương tự như CBOW, nhưng mục tiêu của nó là dự đoán ngữ cảnh đưa vào. Dưới đây là hình ảnh của mô hình Skip-gram:
Đối với dữ liệu huấn luyện và cách hoạt động của mô hình Skip-gram cũng tương tự như mô hình CBOW với một Input duy nhất, chỉ khác ở chỗ thay vì chỉ có một lỗi, ta sẽ có nhiều lỗi tùy thuộc vào số lượng vector Output. Các lỗi này sẽ được tổng hợp thành một lỗi duy nhất để lan truyền ngược và cập nhật các trọng số. Các trọng số của ma trận Input-Hidden sau khi hoàn thành việc học sẽ được dùng làm biểu diễn của các vector từ.
Ưu điểm của CBOW là không tốn nhiều bộ nhớ lưu trữ các ma trận lớn và việc hiện thực được đánh giá cao hơn các phương pháp khác. Tuy nhiên, nó vẫn có một khuyết điểm là các từ giống nhau nhưng có nghĩa khác nhau được biểu diễn bằng một vector từ duy nhất.
Về bản chất, Word2vec và GloVe khác nhau, thuộc hai loại Embedding khác nhau, nhưng đều xuất phát từ ý tưởng Cửa sổ ngữ cảnh. Word2vec sử dụng Cửa sổ ngữ cảnh để tạo ra các tập huấn luyện cho mạng neuron, trong khi GloVe sử dụng nó để tạo ra ma trận Co-occurrence Matrix. Nhìn kỹ hơn, chúng ta nhận thấy rằng GloVe tập trung vào xác suất từ dựa trên toàn bộ tập dữ liệu, trong khi Word2vec học dựa trên các ngữ cảnh độc lập. Do đó, GloVe có hiệu quả hơn trong một số nhiệm vụ về ngữ nghĩa, nhận dạng và phân loại cảm xúc dựa trên ngôn ngữ. Ngoài ra, GloVe có tính ổn định trung bình tốt hơn Word2vec. Ở đây, độ ổn định chính là sự biến thiên của kết quả giữa hai lần huấn luyện với cùng một điều kiện cố định (cùng tập dữ liệu, cùng tham số, cùng điều kiện phần cứng, vv…).
Word Embedding tạo ra các vector từ cho phép chúng ta thực hiện các tác vụ liên quan đến ngữ nghĩa như tìm từ đồng nghĩa, trái nghĩa, vv… Ngoài ra, chúng cũng là nguồn tài nguyên cho các hệ thống Machine Learning và Deep Learning trong các nhiệm vụ cao hơn như dịch máy, phân tích cảm xúc dựa trên ngôn ngữ, vv…
- https://www.analyticsvidhya.com/blog/2017/06/word-embeddings-count-word2veec/
- https://www.slideshare.net/mostafabenhenda/word-embeddings-and-applications-to-machine-translation-and-sentiment-analysis
- https://www.aclweb.org/anthology/D14-1162