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:
Trong đó — 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:
Trong đó là số lần từ xuất hiện trong ngữ cảnh của từ , và 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: . Đ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ểm | One-Hot | Word Embeddings |
|---|---|---|
| Kích thước | 50,000+ chiều | 300-768 chiều |
| Bộ nhớ | Sparse, tốn RAM | Dense, nhỏ gọn |
| Quan hệ ngữ nghĩa | Không có (khoảng cách đều như nhau) | Có (cosine similarity ~ tương đồng nghĩa) |
| Phép toán vector | Vô nghĩa | King - Man + Woman ≈ Queen |
| Khả năng tổng quát hóa | Không | Có 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 Transformer và BERT/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:
- Efficient Estimation of Word Representations in Vector Space — Mikolov et al., 2013 (Word2Vec)
- GloVe: Global Vectors for Word Representation — Pennington et al., 2014
Cùng cụm (Sequence Modeling):
- Tokenization — BPE, WordPiece, SentencePiece: Hiểu cách text được cắt thành token trước khi thành vector
- Transformer — Bỏ hết recurrence, chỉ giữ Attention: Kiến trúc thay thế RNN, nền tảng của LLM hiện đại
- Self-Attention — Mỗi token tự hỏi "ai quan trọng với tôi?": Cơ chế tạo ra contextual embeddings động
Đọc tiếp (Level 1 & 2):
- Flash Attention — Cùng phép toán, nhanh 3x nhờ tiling trên SRAM: Tối ưu attention để xử lý context dài
- Dense Retrieval — Bi-encoder biến query và doc thành vector: Ứng dụng embedding vào tìm kiếm thông tin hiện đại
External Resources:
- The Illustrated Word2Vec — Jay Alammar, visual explanation tuyệt đẹp
- GloVe Explained — Towards Data Science, phân tích toán học chi tiết
Level 0: Foundations
30 bài nền tảng — neural network primitives, sequence modeling, training at scale, alignment basics.
BPE, WordPiece, SentencePiece — Cách AI 'đọc' text
Tokenization là gì? Giải thích BPE, WordPiece, SentencePiece — cách AI chuyển text thành số để xử lý, từ cơ chế nén dữ liệu đến ứng dụng trong ChatGPT và BERT.