AIToanHoc.comAI Toán Học
Toán đứng sau trí tuệ nhân tạo

Nhúng từ (word embedding) là gì: vì sao máy biểu diễn nghĩa của từ bằng vector

Nhúng từ biến mỗi từ thành một vector số sao cho từ gần nghĩa nằm gần nhau. Tính tay độ tương đồng cosine, cách vector được học và giới hạn của nó.

Hue old town alley in the evening, two elderly residents seen from behind chatting on low plastic stools beside a tea stall, lanterns softly glowing, eye-level shot

Nhúng từ là cách biểu diễn mỗi từ, hay chính xác hơn là mỗi đơn vị văn bản, bằng một vector gồm vài trăm đến vài nghìn số thực, sao cho những từ có nghĩa hoặc cách dùng gần nhau thì có vector nằm gần nhau. Máy tính không hiểu chữ, nó chỉ tính được với số. Nhúng từ là cây cầu đầu tiên đưa ngôn ngữ vào thế giới đại số tuyến tính, và mọi mô hình ngôn ngữ hiện nay đều bắt đầu bằng bước này.

Khi các từ đã là vector, “giống nghĩa” trở thành một phép tính: đo góc giữa hai vector. Bài này tính tay độ tương đồng cosine trên ví dụ nhỏ, giải thích vì sao vector lại mang được nghĩa dù không ai dạy nghĩa cho máy, phép tính nổi tiếng “vua trừ đàn ông cộng phụ nữ”, và những giới hạn cần biết khi dùng nhúng cho tìm kiếm hay phân loại văn bản.

Vì sao không đánh số từ một cách đơn giản

Cách dễ nhất để biến từ thành số là đánh số thứ tự trong từ điển: “ăn” là số 1, “uống” là số 2, “xe” là số 3. Nhưng con số thứ tự không mang nghĩa gì; mô hình sẽ hiểu nhầm rằng “uống” nằm giữa “ăn” và “xe”, hay rằng “xe” lớn gấp ba “ăn”.

Cách thứ hai là mã hoá một nóng: với từ vựng năm mươi nghìn từ, mỗi từ là một vector năm mươi nghìn thành phần, toàn số 0 trừ một số 1 ở vị trí của nó. Cách này không còn thứ tự giả, nhưng có hai vấn đề. Vector quá dài và gần như toàn số 0, tốn bộ nhớ. Và tích vô hướng giữa hai từ khác nhau bất kỳ luôn bằng 0, nên “mèo” cách “chó” đúng bằng “mèo” cách “máy cày”. Mọi từ đều xa lạ với nhau như nhau.

Nhúng từ giải quyết cả hai: vector ngắn hơn rất nhiều, thường vài trăm đến vài nghìn chiều, mọi thành phần đều là số thực khác 0, và khoảng cách giữa các vector phản ánh quan hệ giữa các từ. Từng chiều riêng lẻ thường không có nghĩa dễ gọi tên; nghĩa nằm ở vị trí tương đối của các vector với nhau.

Tính tay độ tương đồng cosine với vector ba chiều

Thước đo hay dùng nhất là độ tương đồng cosine: tích vô hướng của hai vector chia cho tích độ dài của chúng. Kết quả nằm trong khoảng từ −1 đến 1, càng gần 1 càng cùng hướng. Ví dụ giả định với ba từ, vector ba chiều cho dễ tính:

  1. Cho “mèo” = (2; 1; 0), “chó” = (2; 2; 0), “ô tô” = (0; 1; 3).
  2. Độ dài: |mèo| = căn của (4 + 1 + 0) = căn 5, xấp xỉ 2,236. |chó| = căn 8, xấp xỉ 2,828. |ô tô| = căn 10, xấp xỉ 3,162.
  3. Tích vô hướng mèo với chó: 2·2 + 1·2 + 0·0 = 6. Cosine = 6 chia (căn 5 · căn 8) = 6 chia căn 40, xấp xỉ 0,949.
  4. Tích vô hướng mèo với ô tô: 2·0 + 1·1 + 0·3 = 1. Cosine = 1 chia (căn 5 · căn 10) = 1 chia căn 50, xấp xỉ 0,141.
  5. Kết luận trong ví dụ: “mèo” gần “chó” hơn nhiều so với “ô tô”, đúng như trực giác.

Trong mô hình thật, các con số không do người đặt mà do quá trình huấn luyện tạo ra, và số chiều lớn hơn nhiều, nhưng phép tính giữ nguyên. Hệ thống tìm kiếm ngữ nghĩa làm đúng việc này với hàng triệu vector: biến câu hỏi thành vector, rồi tìm những đoạn văn có cosine cao nhất.

Cosine hay khoảng cách: đo hướng hay đo độ dài

Có thể thắc mắc vì sao không dùng khoảng cách Euclid quen thuộc. Xét hai vector (1; 1) và (3; 3). Chúng cùng hướng nên cosine bằng 1, nhưng khoảng cách giữa chúng là căn của (4 + 4) = căn 8, xấp xỉ 2,83. Với nhúng văn bản, độ dài vector thường bị ảnh hưởng bởi những yếu tố như tần suất xuất hiện của từ hay độ dài đoạn văn, ít liên quan tới nghĩa. Cosine bỏ qua độ dài, chỉ giữ hướng, nên ổn định hơn cho việc so nghĩa.

Trong thực tế, nhiều hệ thống chuẩn hoá mọi vector về độ dài bằng 1 trước khi lưu. Khi đó cosine chính là tích vô hướng, và tích vô hướng tính rất nhanh trên phần cứng. Khoảng cách Euclid giữa hai vector đơn vị cũng liên hệ trực tiếp với cosine: bình phương khoảng cách bằng 2 trừ 2 lần cosine. Vì vậy với vector đã chuẩn hoá, xếp hạng theo khoảng cách hay theo cosine cho cùng một kết quả.

Điều cần nhớ khi đọc kết quả: cosine cao nghĩa là hai đoạn văn được mô hình đặt gần nhau, không có nghĩa hai đoạn nói cùng một sự thật. Câu khẳng định và câu phủ định của cùng một ý thường có vector rất gần nhau, vì chúng dùng gần như cùng từ và cùng chủ đề.

Máy học nghĩa từ đâu: giả thuyết phân bố

Không ai gán nghĩa cho từng chiều của vector. Nghĩa được học gián tiếp từ một ý tưởng ngôn ngữ học có từ giữa thế kỷ hai mươi, gọi là giả thuyết phân bố: những từ xuất hiện trong ngữ cảnh giống nhau thì có nghĩa gần nhau. Nhà ngôn ngữ học Firth có câu nổi tiếng năm 1957, đại ý là ta biết một từ qua những từ đi cùng nó.

Áp vào tiếng Việt: “mèo” và “chó” cùng hay đi với “nuôi”, “cho ăn”, “con”, “sủa” hoặc “kêu”, “thú cưng”. Một mô hình được huấn luyện để đoán từ bị che dựa vào các từ xung quanh, hoặc đoán từ xung quanh dựa vào một từ, sẽ bị buộc phải đặt “mèo” và “chó” ở những vị trí cho ra dự đoán giống nhau, tức là gần nhau.

Phương pháp word2vec do nhóm của Mikolov công bố năm 2013 làm nhúng từ trở nên phổ biến nhờ huấn luyện nhanh trên kho văn bản lớn. Năm 2014, phương pháp GloVe của Pennington và cộng sự học vector từ bảng đếm số lần hai từ đi cùng nhau. Các mô hình ngôn ngữ hiện đại vẫn có một bảng nhúng ở lớp đầu, được học chung với toàn bộ mạng trong quá trình huấn luyện.

Phép tính “vua − đàn ông + phụ nữ” và giới hạn của nó

Một quan sát nổi tiếng từ thời word2vec: lấy vector “vua”, trừ vector “đàn ông”, cộng vector “phụ nữ”, thì vector gần kết quả nhất thường là “nữ hoàng”. Tương tự với cặp thủ đô và quốc gia. Điều này gợi ý rằng một số quan hệ như giới tính hay thủ đô của nước nào được mã hoá thành những hướng gần như cố định trong không gian vector.

Cần đọc đúng quan sát này. Nó đúng với một số quan hệ và một số mô hình, không phải luật chung. Khi kiểm tra kỹ, kết quả phụ thuộc vào việc có loại các từ đầu vào khỏi danh sách đáp án hay không, và nhiều phép tương tự khác cho kết quả kém. Đây là minh hoạ thú vị về cấu trúc hình học của nhúng, không phải bằng chứng rằng máy “hiểu” khái niệm vua hay nữ hoàng.

Nhúng tĩnh kiểu word2vec còn một giới hạn lớn: mỗi từ chỉ có một vector. Tiếng Việt có rất nhiều từ đa nghĩa. “Đường” trong “một thìa đường” và trong “con đường làng” là hai nghĩa khác hẳn nhưng chung một vector. Các mô hình Transformer giải quyết bằng nhúng theo ngữ cảnh: vector của một từ được tính lại dựa trên các từ xung quanh nó trong câu, nên “đường” ở hai câu trên cho ra hai vector khác nhau.

Nhúng được dùng vào những việc gì

Khi văn bản đã thành vector, rất nhiều việc quen thuộc quy về cùng một phép toán: tìm vector gần nhất. Bảng dưới liệt kê những ứng dụng phổ biến và điều cần lưu ý ở từng việc:

ViệcCách dùng vectorLưu ý khi làm
Tìm kiếm theo ý thay vì theo chữNhúng câu hỏi, trả về các đoạn có cosine cao nhấtNên kết hợp với tìm kiếm theo từ khoá cho tên riêng, mã số, con số
Cho chatbot trả lời dựa trên tài liệu nội bộTìm đoạn tài liệu gần câu hỏi nhất rồi đưa vào lời nhắc của mô hìnhChất lượng phụ thuộc cách cắt tài liệu thành đoạn; đoạn quá dài làm loãng nghĩa
Gom nhóm phản hồi của kháchNhúng từng phản hồi rồi chạy thuật toán phân cụmCần người đọc lại để đặt tên và kiểm từng cụm
Phát hiện câu hỏi trùng lặpHai câu có cosine vượt một ngưỡng thì coi là trùngNgưỡng phải chọn bằng thử nghiệm trên dữ liệu của chính bạn
Gợi ý bài viết liên quanLấy các bài có vector gần bài đang đọc nhấtDễ gợi ý toàn bài na ná nhau, nên thêm yếu tố đa dạng

Điểm chung của mọi dòng trong bảng: nhúng chỉ đo được sự gần nhau về cách dùng ngôn ngữ, không kiểm được đúng sai. Hệ thống nào dựa trên nhúng cũng cần một bước kiểm của người hoặc của quy tắc nghiệp vụ ở đầu ra.

Nhúng mang theo cả thiên lệch của dữ liệu

Vector học từ văn bản thật nên học cả định kiến trong văn bản. Nghiên cứu của Bolukbasi và cộng sự năm 2016 cho thấy nhúng từ huấn luyện trên tin tức tiếng Anh gắn một số nghề nghiệp với giới tính theo khuôn mẫu. Hiện tượng tương tự có thể xuất hiện với bất kỳ ngôn ngữ nào, kể cả tiếng Việt.

Hệ quả thực tế. Nếu một hệ thống lọc hồ sơ dùng độ tương đồng giữa mô tả công việc và hồ sơ ứng viên, thiên lệch trong nhúng có thể âm thầm đẩy kết quả theo hướng không công bằng mà không ai cố ý.

Kiểm bằng cặp đối chứng. Một cách kiểm đơn giản là tạo các cặp câu chỉ khác nhau ở một yếu tố nhạy cảm, ví dụ đổi giới tính hay quê quán, rồi so độ tương đồng với cùng một truy vấn. Chênh lệch lớn là dấu hiệu cần xem xét.

Che thông tin khi đưa dữ liệu vào dịch vụ nhúng bên ngoài. Văn bản gửi lên dịch vụ tạo vector của bên thứ ba vẫn là dữ liệu rời khỏi tổ chức của bạn. Hồ sơ nhân sự, hợp đồng, thông tin khách hàng cần được che tên, số giấy tờ, số tài khoản trước khi gửi, hoặc dùng mô hình chạy nội bộ.

Câu hỏi thường gặp

Nhúng từ có bao nhiêu chiều là đủ?

Không có con số chuẩn. Các nhúng từ tĩnh thời word2vec hay dùng vài trăm chiều. Mô hình ngôn ngữ lớn có bảng nhúng hàng nghìn chiều. Nhiều chiều hơn biểu diễn được nhiều sắc thái hơn nhưng tốn bộ nhớ và tính toán hơn, và cần nhiều dữ liệu hơn để học tốt.

Tiếng Việt có tách từ trước khi nhúng không?

Các mô hình hiện đại thường không tách theo từ mà theo đơn vị nhỏ hơn gọi là token, có thể là một âm tiết, một phần âm tiết hoặc một cụm ký tự hay gặp. Cách tách phụ thuộc bộ tách của từng mô hình. Vì vậy nói “nhúng từ” là cách gọi quen, chính xác hơn là nhúng token.

Nhúng câu khác nhúng từ thế nào?

Nhúng câu là một vector đại diện cho cả câu hoặc cả đoạn văn, thường tạo ra bằng một mô hình được huấn luyện riêng để các câu cùng ý có vector gần nhau. Tìm kiếm ngữ nghĩa và hệ thống hỏi đáp trên tài liệu thường dùng nhúng câu hoặc nhúng đoạn chứ không dùng nhúng từng từ rồi cộng lại.

Có thể xem các vector nhúng bằng mắt không?

Có thể chiếu chúng xuống hai hoặc ba chiều bằng các kỹ thuật giảm chiều như phân tích thành phần chính, rồi vẽ ra. Hình vẽ giúp thấy các cụm từ cùng chủ đề, nhưng phép chiếu làm mất nhiều thông tin, nên hai điểm gần nhau trên hình chưa chắc gần nhau trong không gian gốc.

Độ tương đồng cosine âm nghĩa là gì?

Nghĩa là hai vector hướng về phía gần như ngược nhau. Trong nhúng văn bản thực tế, cosine âm khá hiếm và không có nghĩa là hai từ trái nghĩa. Các cặp trái nghĩa như “nóng” và “lạnh” thường có cosine dương khá cao, vì chúng xuất hiện trong ngữ cảnh rất giống nhau.

Nhúng có dùng được cho dữ liệu không phải văn bản không?

Có. Ý tưởng biến một đối tượng thành vector sao cho đối tượng giống nhau nằm gần nhau được dùng cho ảnh, âm thanh, sản phẩm trong hệ gợi ý, thậm chí người dùng. Phép tính cosine và tìm láng giềng gần nhất giữ nguyên, chỉ có mô hình tạo vector là khác.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.

hoặc
Gọi ngay 0926 138 138