1
Embedding trong máy học là gì?
1
62220 đã đăng:

thêm bình luận...
1
Thế Doanh20 đã đăng:

Khi huấn luyện mô hình máy học để xử lý ngôn ngữ tự nhiên, thì chắc chắn dữ liệu bạn có ở dạng chữ viết, sự thật là bạn không thể đem trực tiếp dữ liệu chữ viết thô vào để huấn luyện mô hình máy học ngay được, bởi vì các mô hình máy học chỉ làm việc được trên những con số, hay chính xác hơn là tính toán trên các ma trận, véc-tơ số.

Điều này dẫn đến việc bạn phải nghĩ cách làm thế nào đó để chuyển dữ liệu chữ viết thô thành dữ liệu số thực, sau đó mới có thể đưa dữ liệu số thực này vào các mô hình học được, có rất nhiều kĩ thuật để làm việc này và gọi chung chúng là kĩ thuật Embedding.

Embedding có thể hiểu là ẩn, gắn vào. Chính cái tên của nó cũng giúp bạn mường tượng được rằng bạn sẽ phải ẩn dữ liệu ban đầu dưới dạng một không gian vectơ số mới, cho nên huấn luyện mô hình trên không gian vectơ số này cũng chính là bạn đang gián tiếp học trên tập dữ liệu ban đầu.

Đó chỉ mới là ý tưởng của kĩ thuật Embedding, còn việc chuyển từ không gian này sang một không gian vec-tơ khác bạn không thể làm tùy tiện được mà phải đảm bảo:

  • Không gian véc-tơ mới (hay véc-tơ số thực) phải thể hiện được bản chất của tập dữ liệu ban đầu (dữ liệu chữ viết).
  • Cực tiểu hóa lượng mất mát thông tin xảy ra khi bạn chuyển sang không gian mới.

Một số kĩ thuật Embedding được sử dụng phổ biến như mạng Neural Network, PCA (Principal Component Analysis) gọi là kĩ thuật phân tích thành phần chính, TF-IDF, Bag of Word, Encoder-Decoder sử dụng trong RNN (Recurrent Neural Network) hoặc LSTM (Long-Short Term Memory), ...v.v.

Một số thư viện sử dụng kĩ thuật Embedding như sklearn, Word2vec, FastText, ...v.v.

Ví dụ về sử dụng thư viện sklearn để chuyển một đoạn chữ đơn giản sang một không gian vec-tơ số thực mới,

from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer()
text = ['I am doing my homework.',
        'This is question in my homework.',
        'And another question.',
        'I will finish my homework.']

text_embedding = vectorizer.fit_transform(text)
text_embedding.toarray()

Kết quả sau khi embedding đoạn text ở trên:

array([[1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0],
       [0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0],
       [0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0],
       [0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1]])

Hope it help...

đã bổ sung 5.9 năm trước bởi
Avatar: Thế Doanh Thế Doanh20
thêm bình luận...
Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)