Lớp Embedding

Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

David Cecchini

Data Scientist

Vì sao dùng embeddings

Ưu điểm:

  • Giảm chiều
    one_hot = np.array((N, 100000))
    embedd = np.array((N, 300))
    
  • Biểu diễn dày đặc
    • king - man + woman = queen
  • Học chuyển giao

Nhược điểm:

  • Nhiều tham số cần huấn luyện: thời gian huấn luyện lâu hơn
Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Cách dùng trong keras

Trong keras:

from tensorflow.keras.layers import Embedding

model = Sequential() # Dùng làm lớp đầu tiên model.add(Embedding(input_dim=100000,
output_dim=300,
trainable=True,
embeddings_initializer=None,
input_length=120))
Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Học chuyển giao

Học chuyển giao cho mô hình ngôn ngữ

  • GloVE
  • word2vec
  • BERT

Trong keras:

from tensorflow.keras.initializers import Constant

model.add(Embedding(input_dim=vocabulary_size, output_dim=embedding_dim,
embeddings_initializer=Constant(pre_trained_vectors))
Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Dùng vector GloVE tiền huấn luyện

Trang chính: https://nlp.stanford.edu/projects/glove/

# Lấy các vector GloVE
def get_glove_vectors(filename="glove.6B.300d.txt"):
    # Lấy tất cả vector từ mô hình tiền huấn luyện
    glove_vector_dict = {}
    with open(filename) as f:
        for line in f:

values = line.split()
word = values[0] coefs = values[1:]
glove_vector_dict[word] = np.asarray(coefs, dtype='float32')
return glove_vector_dict
Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Dùng GloVE cho tác vụ cụ thể

# Lọc vector GloVE cho tác vụ cụ thể
def filter_glove(vocabulary_dict, glove_dict, wordvec_dim=300):

# Tạo ma trận lưu vector embedding_matrix = np.zeros((len(vocabulary_dict) + 1, wordvec_dim))
for word, i in vocabulary_dict.items(): embedding_vector = glove_dict.get(word)
if embedding_vector is not None: # từ không có trong glove_dict sẽ là vector 0 embedding_matrix[i] = embedding_vector
return embedding_matrix
Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Ayo berlatih!

Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras

Preparing Video For Download...