FastText Word Embedding: Biểu diễn từ bằng các mảnh ký tự
FastText là phương pháp biểu diễn nhúng từ mở rộng từ Word2Vec bằng cách không xem mỗi từ như một đơn vị hoàn toàn độc lập. Thay vào đó, mô hình còn học các đơn vị con của từ (subword), thường là các chuỗi n ký tự liên tiếp.
Cơ chế này đặc biệt hữu ích với từ hiếm, từ có biến thể hình thái và cả những từ chưa xuất hiện trong dữ liệu huấn luyện. Điểm cốt lõi cần hiểu là vector của một từ trong FastText không chỉ đến từ chính từ đó mà còn được tổng hợp từ các n-gram ký tự cấu thành nó.
1. FastText khác Word2Vec ở điểm nào?
Trong Word2Vec truyền thống, mỗi từ thường tương ứng với một vector độc lập. Nếu playing và played đều xuất hiện trong từ điển, mô hình học hai vector riêng và không trực tiếp tận dụng việc chúng có chung nhiều đoạn ký tự.
FastText bổ sung thông tin ở mức ký tự. Để minh họa nhất quán, giả sử ta chỉ xét n = 3. Trước hết thêm ký hiệu biên vào từ:
Sau đó trượt cửa sổ ba ký tự từ trái sang phải:
pla
lay
ayi
yin
ing
ng>
Đây là toàn bộ các 3-gram của <playing>. Ký hiệu < và > đánh dấu biên đầu và cuối từ, giúp mô hình phân biệt chuỗi ký tự nằm ở biên với chuỗi giống nhau nằm bên trong từ.
Trong FastText thực tế, mô hình thường không chỉ dùng n = 3. Ta có thể cấu hình một khoảng như n từ 3 đến 6; khi đó một từ sẽ đồng thời tạo ra 3-gram, 4-gram, 5-gram và 6-gram. Ví dụ n = 3 ở đây chỉ nhằm làm rõ cơ chế.
2. Vector của một từ trong FastText được tạo ra như thế nào?
Gọi G(w) là tập các n-gram ký tự của từ w. Mỗi n-gram g có một vector zg. Từ w cũng có một biểu diễn riêng. Có thể mô tả trực quan vector của từ bằng:
Với ví dụ n = 3 ở trên:
= z(playing)
+ z(<pl)
+ z(pla)
+ z(lay)
+ z(ayi)
+ z(yin)
+ z(ing)
+ z(ng>)
Nếu từ played xuất hiện trong dữ liệu, nó cũng có thể chứa các 3-gram như pla và lay. Hai từ vì thế chia sẻ một phần tham số thay vì được học hoàn toàn độc lập.
Điều cần lưu ý là ví dụ trên đang cố định n = 3 để dễ quan sát. Khi huấn luyện với khoảng n = 3 đến 6, tập G(w) sẽ lớn hơn vì chứa đồng thời nhiều độ dài n-gram.
3. FastText học embedding bằng cách nào?
FastText không thay thế hoàn toàn cơ chế học của Word2Vec. Nó vẫn có thể sử dụng CBOW hoặc Skip-gram. Điểm khác biệt chủ yếu nằm ở cách tạo biểu diễn cho từ trước khi thực hiện nhiệm vụ dự đoán.
Với Skip-gram, từ trung tâm được dùng để dự đoán các từ xung quanh. Nếu từ trung tâm là playing, FastText tổng hợp vector của từ với vector của các n-gram rồi dùng biểu diễn đó để tính điểm cho các từ ngữ cảnh.
Gọi c là một từ ngữ cảnh. Điểm số có thể được biểu diễn khái quát:
Trong đó vw là biểu diễn FastText của từ trung tâm và uc là vector phía đầu ra của từ ngữ cảnh. Sai số dự đoán được truyền ngược để cập nhật các thành phần tham gia tạo vw.
Ví dụ, n-gram ing có thể xuất hiện trong playing, walking và running. Khi những từ này tham gia huấn luyện, vector của ing nhận tín hiệu học từ nhiều ngữ cảnh khác nhau.
4. Vì sao FastText xử lý được từ chưa từng xuất hiện?
Với Word2Vec thông thường, một từ không có trong từ điển huấn luyện thường không có vector riêng để truy xuất. FastText có thể linh hoạt hơn vì vector của từ còn phụ thuộc vào các n-gram ký tự.
Giả sử mô hình chưa từng thấy từ playings. Khi xử lý từ này, hệ thống vẫn có thể tạo các n-gram ký tự và sử dụng những thành phần đã được học để tổng hợp một vector.
Khả năng này giúp FastText xử lý từ ngoài từ điển (out-of-vocabulary) tốt hơn mô hình chỉ lưu vector theo từ.
5. Huấn luyện FastText bằng Python
Thư viện gensim cung cấp một cách ngắn gọn để thử FastText. Trong ví dụ thực tế dưới đây, ta không còn giới hạn ở n = 3 mà dùng min_n=3 và max_n=6, nghĩa là mô hình khai thác các n-gram có độ dài từ 3 đến 6.
vector_size=50 quy định số chiều embedding. min_n=3 và max_n=6 cho biết mô hình dùng nhiều độ dài n-gram từ 3 đến 6, khác với ví dụ minh họa trước đó vốn cố định n = 3 để dễ quan sát.
Tham số sg=1 chọn Skip-gram; nếu đặt sg=0, gensim sử dụng CBOW.
FastText có thể tạo vector cho cats bằng các subword của chính chuỗi ký tự này. Các tham số subword đã được học trong quá trình huấn luyện được sử dụng để tổng hợp biểu diễn mới.
6. FastText phù hợp khi nào?
| Tiêu chí | Word2Vec | FastText |
|---|---|---|
| Đơn vị học | Từ | Từ + n-gram ký tự |
| Từ hiếm | Thường yếu hơn | Có thể tận dụng subword |
| Từ ngoài từ điển | Không có vector trực tiếp | Có thể tạo từ subword |
| Thông tin hình thái | Không khai thác trực tiếp | Khai thác ở mức ký tự |
| Chi phí | Đơn giản hơn | Cần thêm tham số subword |
FastText phù hợp khi dữ liệu có nhiều từ hiếm, biến thể chính tả hoặc cấu trúc từ phức tạp. Với tiếng Việt, lợi ích của n-gram ký tự vẫn tồn tại, nhưng cần chú ý cách tách từ vì một từ tiếng Việt có thể gồm nhiều tiếng.
Nếu tập từ ổn định và hầu như không gặp từ ngoài từ điển, Word2Vec có thể đã đủ. Nếu cần tăng khả năng tổng quát hóa sang từ hiếm hoặc từ mới, FastText thường là lựa chọn phù hợp hơn.
7. Hạn chế cần hiểu đúng
FastText mạnh ở việc chia sẻ thông tin hình thức giữa các từ, nhưng không tự giải quyết mọi vấn đề ngữ nghĩa. Hai từ có cấu trúc ký tự gần nhau vẫn có thể mang nghĩa rất khác.
FastText cũng vẫn tạo ra embedding tĩnh: một từ về cơ bản có cùng biểu diễn bất kể xuất hiện trong câu nào. Vì vậy nó không trực tiếp phân biệt các nghĩa phụ thuộc ngữ cảnh như các mô hình biểu diễn theo ngữ cảnh hiện đại.
Ngoài ra, số lượng n-gram có thể rất lớn. Trong triển khai thực tế, FastText sử dụng cơ chế băm để ánh xạ các subword vào một số lượng bucket hữu hạn, giúp kiểm soát bộ nhớ nhưng cũng có thể tạo va chạm băm.
Nội dung gốc thuộc tác giả. Vui lòng không đăng lại toàn văn khi chưa được phép, trừ trường hợp pháp luật hoặc giấy phép áp dụng cho phép. Nội dung của bên thứ ba tuân theo quyền và giấy phép tương ứng.
Nguồn gốc: FastText Word Embedding: Cách biểu diễn từ bằng subword
