Gömme (Embedding) katmanı

Keras ile Dil Modellemesi için Yinelenen Sinir Ağları (RNN)

David Cecchini

Data Scientist

Neden gömmeler?

Avantajlar:

  • Boyutu azaltır
    one_hot = np.array((N, 100000))
    embedd = np.array((N, 300))
    
  • Yoğun gösterim
    • king - man + woman = queen
  • Aktarım öğrenmesi

Dezavantajlar:

  • Eğitilecek çok parametre: eğitim daha uzun sürer
Keras ile Dil Modellemesi için Yinelenen Sinir Ağları (RNN)

Keras'ta nasıl kullanılır

Keras'ta:

from tensorflow.keras.layers import Embedding

model = Sequential() # İlk katman olarak kullanın model.add(Embedding(input_dim=100000,
output_dim=300,
trainable=True,
embeddings_initializer=None,
input_length=120))
Keras ile Dil Modellemesi için Yinelenen Sinir Ağları (RNN)

Aktarım öğrenmesi

Dil modelleri için aktarım öğrenmesi

  • GloVE
  • word2vec
  • BERT

Keras'ta:

from tensorflow.keras.initializers import Constant

model.add(Embedding(input_dim=vocabulary_size, output_dim=embedding_dim,
embeddings_initializer=Constant(pre_trained_vectors))
Keras ile Dil Modellemesi için Yinelenen Sinir Ağları (RNN)

GloVE ön-eğitimli vektörlerini kullanma

Resmi site: https://nlp.stanford.edu/projects/glove/

# GloVE vektörlerini alın
def get_glove_vectors(filename="glove.6B.300d.txt"):
    # Önceden eğitilmiş modelden tüm kelime vektörleri
    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
Keras ile Dil Modellemesi için Yinelenen Sinir Ağları (RNN)

GloVE'yi belirli bir görevde kullanma

# GloVE vektörlerini belirli bir göreve filtreleyin
def filter_glove(vocabulary_dict, glove_dict, wordvec_dim=300):

# Vektörleri saklamak için bir matris oluşturun 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: # glove_dict'te bulunamayan kelimeler sıfır vektör olur. embedding_matrix[i] = embedding_vector
return embedding_matrix
Keras ile Dil Modellemesi için Yinelenen Sinir Ağları (RNN)

Hadi pratik yapalım!

Keras ile Dil Modellemesi için Yinelenen Sinir Ağları (RNN)

Preparing Video For Download...