Giới thiệu về Word vectơ


Đỗ Lan Hà
2 năm trước
Hữu ích 4 Chia sẻ Viết bình luận 0
Đã xem 8581

Từ vectơ

Các vectơ từ thể hiện một bước tiến đáng kể trong việc thúc đẩy khả năng phân tích các mối quan hệ của chúng tôi qua các từ, câu và tài liệu. Khi làm như vậy, họ thúc đẩy công nghệ bằng cách cung cấp cho máy móc nhiều thông tin hơn về từ ngữ so với trước đây có thể sử dụng các cách diễn đạt truyền thống. Đó là các vectơ từ làm cho các công nghệ như nhận dạng giọng nói và dịch máy có thể. Có nhiều cách giải thích tuyệt vời về vectơ từ, nhưng trong phần này, tôi muốn làm cho khái niệm có thể truy cập được vào dữ liệu và nghiên cứu những người không quen thuộc với xử lý ngôn ngữ tự nhiên (NLP).

Word vectơ là gì?

Các vectơ từ chỉ đơn giản là vectơ của các số đại diện cho nghĩa của một từ. Hiện tại, điều đó không rõ ràng lắm, nhưng chúng ta sẽ quay lại với nó một chút. Trước hết, nó rất hữu ích để xem xét lý do tại sao các vectơ từ được coi là một bước nhảy vọt như vậy từ các cách biểu đạt truyền thống của các từ.

Các cách tiếp cận truyền thống đối với NLP, chẳng hạn như mô hình mã hóa và túi từ nóng (nghĩa là sử dụng các biến giả để biểu thị sự hiện diện hoặc vắng mặt của một từ trong quan sát, tức là một câu), trong khi hữu ích cho một số máy học (ML) nhiệm vụ, không nắm bắt thông tin về ý nghĩa hoặc bối cảnh của một từ. Điều này có nghĩa là các mối quan hệ tiềm năng, chẳng hạn như sự gần gũi theo ngữ cảnh, không được nắm bắt trong các bộ sưu tập các từ. Ví dụ, mã hóa một nóng không thể nắm bắt các mối quan hệ đơn giản, chẳng hạn như xác định rằng cả hai từ "chó" và "mèo" đều đề cập đến động vật thường được thảo luận trong bối cảnh vật nuôi trong gia đình. Các bảng mã như vậy thường cung cấp đủ các đường cơ sở cho các tác vụ NLP đơn giản (ví dụ: phân loại thư rác email), nhưng thiếu sự tinh tế cho các tác vụ phức tạp hơn như dịch thuật và nhận dạng giọng nói.

Ngược lại, vectơ từ đại diện cho các từ dưới dạng số dấu phẩy động liên tục đa chiều trong đó các từ tương tự về mặt ngữ nghĩa được ánh xạ tới các điểm gần trong không gian hình học. Nói một cách đơn giản hơn, một vectơ từ là một dãy các số có giá trị thực (trái ngược với các số giả) trong đó mỗi điểm nắm bắt một chiều của nghĩa của từ và trong đó các từ tương tự về mặt ngữ nghĩa có các vectơ tương tự nhau. Điều này có nghĩa là các từ như bánh xeđộng cơ nên có các vectơ từ tương tự như từ xe hơi (vì sự giống nhau về nghĩa của chúng), trong khi từ chuốinên khá xa. Đặt một cách khác nhau, các từ được sử dụng trong một ngữ cảnh tương tự sẽ được ánh xạ tới một không gian vectơ gần (chúng ta sẽ tìm hiểu cách các vectơ từ này được tạo ra bên dưới). Vẻ đẹp của việc biểu diễn các từ như vectơ là chúng cho vay các toán tử toán học. Ví dụ: chúng ta có thể cộng và trừ các vectơ - ví dụ chính tắc ở đây cho thấy rằng bằng cách sử dụng vectơ từ, chúng ta có thể xác định rằng:

  • vua - đàn ông + đàn bà = nữ hoàng

Nói cách khác, chúng ta có thể trừ một nghĩa từ vectơ từ cho vua (nghĩa là nam tính), thêm một nghĩa khác (nữ tính) và chỉ ra rằng vectơ từ mới này (vua - đàn ông + phụ nữ) ánh xạ gần nhất với vectơ từ cho nữ hoàng .

Các số trong vectơ từ biểu thị trọng lượng phân phối của từ trên các kích thước . Theo nghĩa đơn giản, mỗi chiều đại diện cho một ý nghĩa và trọng số của từ trên chiều đó nắm bắt sự gần gũi của mối liên hệ với và với ý nghĩa đó. Do đó, ngữ nghĩa của từ được nhúng trên các kích thước của vectơ.

Một đại diện đơn giản của vectơ từ

Trong hình, chúng tôi đang tưởng tượng rằng mỗi chiều thu được một ý nghĩa được xác định rõ ràng. Ví dụ: nếu bạn tưởng tượng rằng chiều thứ nhất đại diện cho ý nghĩa hoặc khái niệm của "động vật", thì trọng lượng của mỗi từ trên kích thước đó thể hiện mức độ liên quan của nó với khái niệm đó.

Đây là một sự đơn giản hóa khá lớn của vectơ từ vì kích thước không có ý nghĩa được xác định rõ ràng như vậy, nhưng nó là một cách hữu ích và trực quan để quấn đầu bạn xung quanh khái niệm kích thước vectơ từ.

Chúng tôi tạo một danh sách các từ, áp dụng trình phân tích cú pháp của spa, trích xuất vectơ cho mỗi từ, xếp chúng lại với nhau và sau đó trích xuất các thành phần chính cho mục đích trực quan hóa.

import numpy as np
import spacy
from sklearn.decomposition import PCA
nlp = spacy.load("en")
animals = "dog cat hamster lion tiger elephant cheetah monkey gorilla antelope rabbit mouse rat zoo home pet fluffy wild domesticated"
animal_tokens = nlp(animals)
animal_vectors = np.vstack([word.vector for word in animal_tokens if word.has_vector])
pca = PCA(n_components=2)
animal_vecs_transformed = pca.fit_transform(animal_vectors)
animal_vecs_transformed = np.c_[animals.split(), animal_vecs_transformed]

Ở đây, chúng tôi chỉ cần trích xuất các vectơ cho các động vật và từ khác nhau có thể được sử dụng để mô tả một số trong số chúng. Như đã đề cập ở phần đầu, vectơ từ có sức mạnh đáng kinh ngạc vì chúng cho phép chúng ta (và máy móc) xác định sự tương đồng giữa các từ khác nhau bằng cách thể hiện chúng trong một không gian vectơ liên tục. Bạn có thể thấy ở đây các vectơ cho động vật như "sư tử", "hổ", "cheetah" và "voi" rất gần nhau. Điều này có thể là bởi vì chúng thường được thảo luận trong bối cảnh tương tự; ví dụ, những con vật này to lớn, hoang dã và có khả năng nguy hiểm - thực sự, từ mô tả "bản đồ" hoang dã khá gần với nhóm động vật này.

Các từ tương tự được ánh xạ với nhau trong không gian vectơ. Chú ý "mèo" và "chó" gần với "thú cưng" như thế nào, cụm "voi", "sư tử" và "hổ" là như thế nào và các từ mô tả cũng tụ lại với nhau như thế nào.

Điều thú vị ở đây là cách các từ "hoang dã", "sở thú" và bản đồ "thuần hóa" với nhau. Thật ý nghĩa khi chúng là những từ thường được sử dụng để mô tả động vật, nhưng làm nổi bật sức mạnh đáng kinh ngạc của vectơ từ!

Từ vectơ đến từ đâu?

Một câu hỏi xuất sắc vào thời điểm này là, những kích thước và trọng lượng này đến từ đâu?! Có hai cách phổ biến thông qua đó các vectơ từ được tạo ra:

  1. Đếm số lần xuất hiện từ / ngữ cảnh
  2. Dự đoán ngữ cảnh cho từ (mô hình mạng nơ-ron bỏ qua, tức là word2vec)

Lưu ý : Dưới đây, tôi mô tả cách tiếp cận word2vec cấp cao để tạo vectơ từ, nhưng có thể tìm thấy tổng quan tốt về phương pháp đếm / đồng xảy ra ở đây .

Cả hai cách tiếp cận để tạo ra các vectơ từ đều dựa trên giả thuyết phân phối của Firth (1957) , trong đó nêu rõ:

"Bạn sẽ biết một từ của công ty mà nó giữ."

Đặt khác nhau, các từ chia sẻ bối cảnh tương tự có xu hướng có ý nghĩa tương tự . Bối cảnh của một từ theo nghĩa thực tế đề cập đến (các) từ xung quanh và vectơ từ được tạo ra (thông thường) bằng cách dự đoán xác suất của một bối cảnh cho một từ. Đặt khác nhau, các trọng số bao gồm một vectơ từ được học bằng cách đưa ra dự đoán về xác suất các từ khác gần với ngữ cảnh của một từ nhất định. Điều này giống như cố gắng điền vào chỗ trống xung quanh một số từ đầu vào đã cho. Ví dụ, được đưa ra chuỗi đầu vào, "Con chó lông xù sủa khi nó đuổi theo một con mèo", hai cửa sổ (hai từ trước và tiến hành từ tiêu điểm) cho các từ "chó" và "sủa" sẽ giống như:

Tôi không muốn đi sâu vào các chi tiết toán học về cách các mạng nơ-ron học các từ nhúng quá nhiều, vì mọi người đủ điều kiện hơn để làm như vậy đã giải thích điều này rồi. Đặc biệt, những bài đăng này rất hữu ích cho tôi khi cố gắng hiểu cách các vectơ từ được học:

  1. Học sâu, NLP và đại diện
  2. Sức mạnh đáng kinh ngạc của vectơ từ
  3. Hướng dẫn Word2Vec: Mô hình Skip-Gram

Tuy nhiên, rất hữu ích khi chạm vào hoạt động của mô hình word2vec vì tính phổ biến và hữu ích của nó. Một mô hình word2vec chỉ đơn giản là một mạng lưới thần kinh với một lớp ẩn duy nhất được thiết kế để tái cấu trúc ngữ cảnh của các từ bằng cách ước tính xác suất một từ "gần" với một từ khác được đưa vào làm đầu vào.

Mô hình được đào tạo về từ, ghép ngữ cảnh cho mỗi từ trong kho văn bản, nghĩa là:

  • (DOG, THE) (DOG), FLUFFY (DOG, BARKED) (DOG, NHƯ)

Lưu ý rằng về mặt kỹ thuật đây là một quá trình học có giám sát, nhưng bạn không cần dữ liệu được gắn nhãn - nhãn (các mục tiêu / biến phụ thuộc) được tạo từ các từ tạo thành ngữ cảnh của một từ tiêu điểm. Do đó, bằng cách sử dụng chức năng cửa sổ, mô hình học được ngữ cảnh trong đó các từ được sử dụng. Trong ví dụ đơn giản này, mô hình sẽ học được rằng "fluffy" và "sủa" được sử dụng trong ngữ cảnh (như được xác định bởi chiều dài cửa sổ) của từ "dog".

Một trong những điều hấp dẫn về vectơ từ được tạo bởi các mô hình word2vec là chúng là tác dụng phụ của một nhiệm vụ dự đoán, không phảiđầu ra của nó. Nói cách khác, một vectơ từ không được dự đoán, (đó là xác suất bối cảnh được dự đoán), vectơ từ là một đại diện đã học của đầu vào được sử dụng cho nhiệm vụ dự đoán - tức là dự đoán một từ được cung cấp theo ngữ cảnh. Vectơ từ là nỗ lực của mô hình để tìm hiểu cách biểu diễn số tốt của từ này để giảm thiểu tổn thất (lỗi) cho các dự đoán của nó. Khi mô hình lặp đi lặp lại, nó điều chỉnh trọng lượng tế bào thần kinh của nó trong nỗ lực giảm thiểu lỗi dự đoán của nó và khi làm như vậy, nó dần dần tinh chỉnh đại diện của từ. Khi làm như vậy, "nghĩa" của từ trở nên được nhúng vào trọng lượng mà mỗi nơ-ron học được trong lớp ẩn của mạng.

Do đó, một mô hình word2vec chấp nhận nhập một từ duy nhất (được biểu thị dưới dạng mã hóa một nóng trong số tất cả các từ trong kho) và mô hình cố gắng dự đoán xác suất một từ được chọn ngẫu nhiên trong kho văn bản ở vị trí gần đó với từ đầu vào. Điều này có nghĩa là với mỗi từ đầu vào có n xác suất đầu ra, trong đó nbằng tổng kích thước của kho văn bản. Điều kỳ diệu ở đây là quá trình đào tạo chỉ bao gồm bối cảnh của từ chứ không phải tất cả các từ trong kho văn bản. Điều này có nghĩa trong ví dụ đơn giản của chúng tôi ở trên, với từ "dog" là đầu vào, "sủa" sẽ có ước tính xác suất cao hơn "cat" vì nó gần hơn trong ngữ cảnh, nghĩa là nó được học trong quá trình huấn luyện. Đặt khác nhau, mô hình cố gắng dự đoán xác suất các từ khác trong kho văn bản thuộc về ngữ cảnh của từ đầu vào. Do đó, đưa ra câu trên ("Con chó lông xù sủa khi nó đuổi theo một con mèo") khi đầu vào của một mô hình sẽ như thế này:

Lưu ý: NN khái niệm này là một người bạn thân của sơ đồ trong bài đăng trên blog của Chris McCormick được liên kết ở trên.

Giá trị của việc trải qua quá trình này là trích xuất các trọng số đã được học bởi các nơ-ron của lớp ẩn của mô hình. Chính các trọng số này tạo thành vectơ từ, tức là nếu bạn có một lớp ẩn 300 nơ-ron, bạn sẽ tạo ra một vectơ từ 300 chiều cho mỗi từ trong kho văn bản. Do đó, đầu ra của quá trình này là ánh xạ vectơ từ có kích thước n- từ đầu vào * nơ-ron lớp n .

Tiếp theo

Word vectơ là một khái niệm mạnh mẽ đáng kinh ngạc và một công nghệ sẽ cho phép những bước đột phá đáng kể trong các ứng dụng và nghiên cứu NLP. Họ cũng làm nổi bật vẻ đẹp của việc học sâu mạng thần kinh và đặc biệt là sức mạnh của các biểu diễn đã học của dữ liệu đầu vào trong các lớp ẩn. Trong bài đăng tiếp theo của tôi, tôi sẽ sử dụng các vectơ từ trong mạng nơ ron tích chập cho một nhiệm vụ phân loại. Điều này sẽ làm nổi bật các vectơ từ trong thực tế, cũng như làm thế nào để đưa vectơ từ được đào tạo trước vào mô hình Keras.

Hữu ích 4 Chia sẻ Viết bình luận 0
Đã xem 8581