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.
deep-learning
keras
word-embeddings
william007
sumber
sumber
Jawaban:
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).
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]
sumber
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).
sumber