TROISINH
FoundationsSequence & Language Modeling

Word2Vec & GloVe — Khi từ ngữ trở thành vector

Word embedding biến từ ngữ thành vector số thực, nơi 'king - man + woman ≈ queen'. Hiểu bản chất của Word2Vec và GloVe — nền tảng cho mọi model ngôn ngữ hiện đại.

Máy tính không biết đọc. Đối với chúng, "apple" và "banana" chỉ là chuỗi ký tự ASCII khác nhau, cũng như "apple" và "xyz123". Trước năm 2013, chúng ta dùng one-hot encoding — biến mỗi từ thành vector khổng lồ toàn số 0 và một số 1 cô đơn. Word embeddings đã thay đổi mọi thứ bằng cách đặt từng từ vào một "bản đồ" toán học, nơi "vua" và "hoàng hậu" là hàng xóm, còn "vua" và "chuối" thì cách xa tít tắp.

Vấn đề

One-hot encoding là thảm họa cho ngữ nghĩa.

Giả sử bạn có từ điển 50.000 từ. One-hot encoding biến mỗi từ thành vector dài 50.000 chiều, gần như toàn số 0, chỉ một vị trí là 1. "Mèo" là [1,0,0,0...], "chó" là [0,1,0,0...].

Vấn đề? Máy tính tính khoảng cách giữa "mèo" và "chó" ra kết quả giống hệt khoảng cách giữa "mèo" và "lò vi sóng" — toàn bằng nhau và rất lớn. Không có mối quan hệ ngữ nghĩa nào được bảo toàn. Hơn nữa, vector thưa thớt (sparse) này tốn bộ nhớ khủng khiếp: 50.000 chiều × 4 bytes = 200KB cho một từ. Nếu bạn có 1 triệu từ vựng, bạn cần 4GB RAM chỉ để lưu bảng tra cứu.

Chúng ta cần một cách biểu diễn: (1) gọn nhẹ, (2) biết được "mèo" gần với "chó" hơn là "lò vi sóng".

Ý tưởng cốt lõi

"Bạn sẽ hiểu một từ qua bạn bè của nó" — đây là giả thuyết phân phối (distributional hypothesis) nổi tiếng của nhà ngôn ngữ học Firth. Word embeddings dựa trên ý tưởng đơn giản này: đặt các từ xuất hiện trong cùng ngữ cảnh gần nhau trong không gian vector.

Thay vì vector 50.000 chiều toàn 0, mỗi từ giờ là một vector dày đặc (dense) 300–768 chiều. Con số nhỏ hơn 100 lần, nhưng thông tin dày đặc hơn gấp bội. Quan trọng hơn, các vector này được học sao cho từ đồng nghĩa nằm gần nhau, và quan hệ ngữ nghĩa trở thành phép toán vector.

Word2Vec (2013): Dự đoán là tất cả

Tomas Mikolov và nhóm nghiên cứu tại Google đưa ra hai cách tiếp cận đơn giản đến mức ngỡ ngàng:

  • Skip-gram: Cho model một từ (ví dụ "vua"), bắt nó dự đoán các từ xung quanh ("hoàng gia", "cai trị", "nước").
  • CBOW (Continuous Bag of Words): Cho model các từ xung quanh ("hoàng gia", "cai trị"), bắt nó dự đoán từ ở giữa ("vua").

Cả hai đều dùng một neural network nông cực kỳ đơn giản: input → hidden layer (chính là vector embedding) → output. Khi training, network buộc phải nén ý nghĩa ngữ cảnh vào lớp ẩn trung gian. Sau khi train xong, bạn bỏ lớp output đi, chỉ giữ lại ma trận trọng số giữa input và hidden layer — đó chính là embedding matrix. Mỗi hàng trong ma trận này là "tọa độ" của một từ trong không gian ngữ nghĩa.

GloVe (2014): Khi thống kê gặp học máy

GloVe (Global Vectors) của Stanford nhận ra Word2Vec bỏ phí thông tin. Thay vì chỉ dự đoán ngữ cảnh, GloVe nhìn vào toàn bộ thống kê xuất hiện chung (co-occurrence matrix): "vua" xuất hiện bao nhiêu lần cùng "hoàng hậu"? Bao nhiêu lần cùng "nam"?

Insight then chốt: Tỷ lệ xác suất xuất hiện chung chứa thông tin ngữ nghĩa. Ví dụ, tỷ lệ P("đá"|"hoàng gia") / P("đá"|"địa chất") rất lớn, nhưng P("đá"|"hoàng gia") / P("đá"|"nước") thì gần bằng 1. GloVe học vector sao cho tích vô hướng (dot product) giữa hai từ tỷ lệ thuận với log của tần suất xuất hiện chung.

Phép toán vector kỳ diệu

Đây là khoảnh khắc "aha": Nếu bạn lấy vector "king", trừ đi "man", cộng thêm "woman", vector kết quả gần như trùng khớp với vector "queen". Tương tự: "Paris" - "Pháp" + "Italy" ≈ "Rome".

Điều này xảy ra vì embeddings không chỉ ghi nhớ từ — chúng nén quan hệ logic. Vector "man → woman" là một hướng trong không gian biểu thị giới tính. Vector "Paris → France" là hướng biểu thị "thủ đô của". Model học được những quy luật này hoàn toàn tự động từ dữ liệu văn bản thô, không cần ai dạy ngữ pháp hay tri thức thế giới.

That's it. Không cần rule-based, không cần ontology. Chỉ cần đặt từ vào không gian vector và để toán học làm phần còn lại.

Tại sao nó hoạt động

Tại sao việc dự đoán ngữ cảnh lại tạo ra ý nghĩa?

Khi neural network buộc phải dự đoán "chó" từ ngữ cảnh "con ___ đang sủa", nó phải nén thông tin về "chó" vào vector sao cho đủ gần với vector của "mèo" (vì "con mèo đang kêu" có cấu trúc tương tự) nhưng xa với "bàn" (vì "con bàn đang sủa" vô nghĩa). Qua hàng tỷ ví dụ huấn luyện, gradient descent tự động sắp xếp các vector sao cho cấu trúc ngữ nghĩa của thế giới được bảo toàn.

Công thức cốt lõi:

Với Word2Vec Skip-gram, mục tiêu là tối đa hóa log-probability:

1Tt=1Tcjc,j0logP(wt+jwt)\frac{1}{T} \sum_{t=1}^{T} \sum_{-c \leq j \leq c, j \neq 0} \log P(w_{t+j} | w_t)

Trong đó P(wOwI)=exp(vwOvwI)w=1Wexp(vwvwI)P(w_O | w_I) = \frac{\exp(v_{w_O}'^\top v_{w_I})}{\sum_{w=1}^{W} \exp(v_w'^\top v_{w_I})} — softmax của tích vô hướng giữa vector input và output.

Với GloVe, mục tiêu là tối thiểu hóa:

i,j=1Vf(Xij)(wiw~j+bi+b~jlogXij)2\sum_{i,j=1}^{V} f(X_{ij})(w_i^\top \tilde{w}_j + b_i + \tilde{b}_j - \log X_{ij})^2

Trong đó XijX_{ij} là số lần từ jj xuất hiện trong ngữ cảnh của từ ii, và ff là hàm trọng số để giảm ảnh hưởng của các từ rất hiếm hoặc rất phổ biến (như "the", "is").

Tại sao cosine similarity hoạt động?

Chúng ta đo độ tương đồng bằng cosine của góc giữa hai vector: cos(θ)=ABAB\cos(\theta) = \frac{A \cdot B}{|A||B|}. Điều này bỏ qua độ lớn (magnitude) — tức là không quan tâm từ xuất hiện nhiều hay ít, chỉ quan tâm "hướng" ngữ nghĩa. "Chó" và "mèo" có thể xuất hiện với tần suất khác nhau, nhưng vector của chúng trỏ cùng hướng (động vật, thú cưng, bốn chân).

Ý nghĩa thực tế

Trước và sau Word Embeddings:

Đặc điểmOne-HotWord Embeddings
Kích thước50,000+ chiều300-768 chiều
Bộ nhớSparse, tốn RAMDense, nhỏ gọn
Quan hệ ngữ nghĩaKhông có (khoảng cách đều như nhau)Có (cosine similarity ~ tương đồng nghĩa)
Phép toán vectorVô nghĩaKing - Man + Woman ≈ Queen
Khả năng tổng quát hóaKhôngCó thể áp dụng cho unseen words

Ai đang dùng?

Mọi hệ thống AI hiện đại đều đứng trên vai của Word2Vec và GloVe:

  • Tìm kiếm ngữ nghĩa (Semantic Search): Google, Bing dùng embedding để tìm "automobile" khi bạn search "car".
  • Hệ thống gợi ý: Spotify biết bạn thích "The Beatles" nếu bạn thích "The Rolling Stones" nhờ khoảng cách vector gần nhau.
  • Transfer Learning: Embeddings pre-trained trở thành "khởi đầu" cho mọi model NLP, từ sentiment analysis đến named entity recognition.

Hạn chế — Từ tĩnh đến động (Contextual)

Word2Vec và GloVe sinh ra static embeddings — một từ = một vector, dù là "bank" (bờ sông) hay "bank" (ngân hàng). Đây là lý do chúng bị thay thế bởi TransformerBERT/GPT, nơi mỗi từ có embedding ngữ cảnh hóa (contextualized) thay đổi tùy câu.

Tuy nhiên, nguyên lý cốt lõi — biến text thành vector học được trong không gian liên tục — vẫn là nền tảng bất di bất dịch của AI ngôn ngữ.

Đào sâu hơn

Paper gốc:

Cùng cụm (Sequence Modeling):

Đọc tiếp (Level 1 & 2):

External Resources:

On this page