Làm thế nào để sử dụng Lớp nhúng của Keras đúng cách?


7

Tôi hơi bối rối về cách sử dụng đúng cách của lớp Nhúng trong Keras cho mục đích seq2seq (Tôi muốn xây dựng lại hướng dẫn dịch máy Se2seq của TensorFlow trong Keras). Câu hỏi của tôi là như sau:

Tôi hiểu rằng các lớp Nhúng biến các giá trị từ trong câu thành biểu diễn có chiều dài cố định. Nhưng tôi quan sát hai cách sử dụng khác nhau của các lớp Nhúng: một mặt (như hướng dẫn này trên Blog của Keras ) sử dụng các vectơ word2vec được đào tạo bên ngoài thông qua weightstham số:

from keras.layers import Embedding

embedding_layer = Embedding(len(word_index) + 1,
  EMBEDDING_DIM,
  weights=[embedding_matrix],
  input_length=MAX_SEQUENCE_LENGTH,
  trainable=False)`

trong khi trong các trường hợp khác không có đầu ra bên ngoài như vậy nhưng người dùng chỉ cần rời khỏi lớp Nhúng để quyết định các vectơ đại diện. Tôi không hiểu sự khác biệt thực sự giữa các phương pháp này liên quan đến kết quả mong muốn là gì? Có lẽ giải pháp chỉ nội bộ không phải là một đại diện ngữ nghĩa? Điểm áp dụng lớp nhúng vào một ma trận bên ngoài mà các hàng đã có chiều dài cố định là gì?

Hơn nữa, mục đích / tác dụng của trainabletham số của lớp Nhúng là gì? Tôi có đoán đúng rằng tập hợp này thành True cho phép lớp Nhúng tinh chỉnh trọng số word2vec đã nhập để xem xét các ví dụ đào tạo thực tế không?

Hơn nữa, làm thế nào để hướng dẫn lớp Nhúng để mã hóa đúng "siêu ký tự"? Đặt mask_zerotham số Đúng, nó có thể kết hợp các số 0 đệm nhưng còn UNK (chưa biết), EOS (Kết thúc câu) thì sao? (Nhân tiện, tôi không thể hiểu đâu là điểm cần ký rõ ràng kết thúc câu trong đầu vào dựa trên câu ...)

Và cuối cùng: làm thế nào một người mẫu có thể dự đoán bản dịch của một từ không được trình bày trong tập huấn luyện? Có phải nó đang cố gắng xấp xỉ nó với từ "gần nhất" trong từ vựng không?

Câu trả lời:


4

Bạn đã đưa ra một số điểm rất tốt. Chúng ta hãy đi qua tất cả những điều này:

Một từ nhúng là một đại diện toán học của một từ. Điều này là cần thiết vì chúng tôi không thể làm việc với văn bản như đầu vào đơn giản.

Để có được các từ nhúng này, có một cách, phương pháp và cài đặt khác nhau về cách tính toán chúng. cbow, Skip-gram và như vậy.

Có những từ nhúng khác nhau ngoài kia, vd

Đây chỉ là một trích đoạn của những người nổi tiếng nhất. Như bạn có thể thấy, họ đã sử dụng các bộ dữ liệu khác nhau - do đó từ vựng và từ nhúng tương ứng khác nhau.

Tôi không hiểu sự khác biệt thực sự giữa các phương pháp này liên quan đến kết quả mong muốn là gì? Có lẽ giải pháp chỉ nội bộ không phải là một đại diện ngữ nghĩa? Điểm áp dụng lớp nhúng vào một ma trận bên ngoài mà các hàng đã có chiều dài cố định là gì?

Keras là một hộp công cụ tuyệt vời và lớp nhúng là một khả năng rất tốt để có được mọi thứ và chạy khá nhanh. Chuyển đổi văn bản thành ma trận một nóng / đếm, sử dụng nó làm đầu vào thành lớp nhúng từ và bạn đã được đặt.

Mặt khác, nếu bạn sử dụng các vectơ từ được đào tạo trước thì bạn chuyển đổi từng từ thành một vectơ và sử dụng đó làm đầu vào cho mạng thần kinh của bạn. Cách tiếp cận này sẽ giúp bạn linh hoạt hơn khi nói đến kỹ thuật tính năng.

Như đã đề cập ở trên, các vectơ từ được đào tạo trước được đưa ra hầu hết các tập dữ liệu văn bản chung. Bạn có thể gặp phải vấn đề bạn có một số loại dữ liệu đặc biệt (ví dụ Tweets) nơi mọi người viết hoặc cư xử khác nhau. Vì vậy, bạn có thể xem xét việc đào tạo các nhúng của riêng mình, trên bộ dữ liệu của riêng bạn - vào cuối ngày, nó phụ thuộc vào nhiệm vụ / vấn đề của bạn và các số liệu mà bạn đang điều chỉnh.

Hơn nữa, mục đích / tác dụng của tham số có thể huấn luyện của lớp Nhúng là gì?

Như bạn đã nói một cách chính xác, đó là để giữ lại trọng số của các nhúng với tập dữ liệu bạn sử dụng.

Tôi không thể hiểu điểm nào để ký rõ ràng kết thúc câu trong đầu vào dựa trên câu

Một trong những điều quan trọng nhất trong NLP là kỹ thuật tính năng. Nó giống như bạn ngồi trong trường và học một ngôn ngữ, những gì cần được xem xét, từ vựng, đó là ngữ pháp và quy tắc. Những điều giúp bạn dễ dàng hơn trong việc hiểu ngôn ngữ. Điều tương tự được áp dụng ở đây. Bạn có thể thấy nó là một phần của kỹ thuật tính năng, tất cả tổng hợp cho đến bức tranh lớn hơn.

Và cuối cùng: làm thế nào một người mẫu có thể dự đoán bản dịch của một từ không được trình bày trong tập huấn luyện?

Hoặc bạn chuyển đổi từ không thể tìm thấy thành <UNK>mã thông báo (từ chưa biết) mà sau đó đại diện cho nhóm của nó. Tuy nhiên, nó đòi hỏi phải có <UNK>mã thông báo trong các từ nhúng được đào tạo. Hoặc bạn có thể sử dụng tệp nhị phân fasttext, tính toán các vectơ từ một cách nhanh chóng cho các từ chưa biết.


1
Về đề xuất cuối cùng của bạn, một tùy chọn khác là tìm hiểu các từ nhúng bằng cách sử dụng RNN lấy chuỗi n-gram làm đầu vào. Loại mô hình này học một cách hiệu quả các biểu diễn từ nguyên (gốc, phụ tố) và chịu được các từ vựng. Kiểm tra bài viết này: cc.gatech.edu/~ypinter3/ con / từ
David Marx
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.