Bagaimana layer embedding dilatih pada layer Keras Embedding

14

Bagaimana layer embedding dilatih pada layer Keras Embedding? (katakanlah menggunakan tensorflow backend, artinya mirip dengan word2vec, glove atau fasttext)

Anggaplah kita tidak menggunakan penyematan pretrained.

william007
sumber
colah.github.io/posts/2014-07-NLP-RNNs-Representations -> posting blog ini menjelaskan dengan jelas tentang Bagaimana layer embedding dilatih dalam lapisan Keras Embedding . Semoga ini membantu.
Akshay U Prabhu

Jawaban:

24

Menanamkan lapisan dalam Keras dilatih sama seperti lapisan lain dalam arsitektur jaringan Anda: mereka disetel untuk meminimalkan fungsi kerugian dengan menggunakan metode optimasi yang dipilih. Perbedaan utama dengan lapisan lain, adalah bahwa output mereka bukan fungsi matematis dari input. Sebaliknya input ke layer digunakan untuk mengindeks tabel dengan vektor embedding [1]. Namun, mesin diferensiasi otomatis yang mendasarinya tidak memiliki masalah untuk mengoptimalkan vektor-vektor ini untuk meminimalkan ...

Jadi, Anda tidak bisa mengatakan bahwa layer Embedding di Keras melakukan hal yang sama dengan word2vec [2]. Ingat bahwa word2vec merujuk pada pengaturan jaringan yang sangat spesifik yang mencoba mempelajari penyematan yang menangkap semantik kata-kata. Dengan lapisan embedding Keras, Anda hanya mencoba untuk meminimalkan fungsi kerugian, jadi jika misalnya Anda bekerja dengan masalah klasifikasi sentimen, embedding yang dipelajari mungkin tidak akan menangkap semantik kata lengkap tetapi hanya polaritas emosional ...

Sebagai contoh, gambar berikut diambil dari [3] menunjukkan penyematan tiga kalimat dengan lapisan Keras Embedding dilatih dari awal sebagai bagian dari jaringan yang diawasi yang dirancang untuk mendeteksi tajuk clickbait (kiri) dan embeddings word2vec yang telah dilatih sebelumnya (kanan). Seperti yang Anda lihat, emblem word2vec mencerminkan kesamaan semantik antara frasa b) dan c). Sebaliknya, embeddings yang dihasilkan oleh lapisan Embedding Keras mungkin berguna untuk klasifikasi, tetapi jangan menangkap kesamaan semantik dari b) dan c).

masukkan deskripsi gambar di sini

Ini menjelaskan mengapa ketika Anda memiliki jumlah sampel pelatihan yang terbatas, mungkin ide yang baik untuk menginisialisasi layer Embedding Anda dengan bobot word2vec , jadi setidaknya model Anda mengakui bahwa "Alps" dan "Himalaya" adalah hal yang serupa, bahkan jika mereka tidak Keduanya muncul dalam kalimat dataset pelatihan Anda.

[1] Bagaimana cara kerja lapisan Keras 'Embedding'?

[2] https://www.tensorflow.org/tutorials/word2vec

[3] https://link.springer.com/article/10.1007/s10489-017-1109-7

CATATAN: Sebenarnya, gambar menunjukkan aktivasi lapisan setelah lapisan Penanaman, tetapi untuk tujuan contoh ini tidak masalah ... Lihat rincian lebih lanjut di [3]

Daniel López
sumber
2
Inilah penjelasan yang saya cari! Saya pikir kalimat ini harus dicetak tebal: "Ingat bahwa word2vec mengacu pada pengaturan jaringan yang sangat spesifik yang mencoba mempelajari embedding yang menangkap semantik kata-kata."
Kevin
0

Lapisan embedding hanyalah proyeksi dari diskrit dan jarang vektor 1-panas ke dalam ruang laten yang kontinu dan padat. Ini adalah matriks dari (n, m) di mana n adalah ukuran kosakata Anda dan n adalah dimensi ruang laten yang Anda inginkan. Hanya dalam prakteknya, tidak perlu benar-benar melakukan perkalian matriks, dan sebagai gantinya Anda dapat menghemat perhitungan dengan menggunakan indeks. Jadi dalam praktiknya, itu adalah lapisan yang memetakan bilangan bulat positif (indeks yang sesuai dengan kata-kata) menjadi vektor padat ukuran tetap (vektor embedding).

Anda bisa melatihnya untuk membuat embedding Word2Vec dengan menggunakan Skip-Gram atau CBOW. Atau Anda bisa melatihnya pada masalah spesifik Anda untuk mendapatkan embedding yang cocok untuk tugas spesifik Anda. Anda juga dapat memuat embeddings yang sudah dilatih sebelumnya (seperti Word2Vec, GloVe dll.) Dan kemudian melanjutkan pelatihan tentang masalah spesifik Anda (suatu bentuk pembelajaran transfer).

David Refaeli
sumber