Bagaimana layer embedding dilatih pada layer Keras Embedding

8

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

Jawaban:

6

Kedua jawabannya salah.

Lapisan penyertaan adalah lapisan yang dapat dilatih yang berisi 1 matriks penyertaan, yang merupakan dua dimensi, dalam satu sumbu jumlah nilai unik yang dapat diambil oleh input kategoris (misalnya 26 dalam kasus alfabet huruf kecil) dan pada sumbu lainnya dimensi ruang embedding Anda. Peran lapisan embedding adalah untuk memetakan kategori ke dalam ruang padat dengan cara yang berguna untuk tugas yang dihadapi, setidaknya dalam tugas yang diawasi. Ini biasanya berarti ada beberapa nilai semantik dalam vektor embedding dan kategori yang dekat di ruang ini akan dekat artinya untuk tugas tersebut.

Ini terkait dengan pengkodean satu-panas dalam arti memetakan kategori diskrit ke dalam representasi fitur vektor. Anda masih bisa melakukan ini untuk jaringan saraf tetapi jika Anda menggunakan ini dalam lapisan padat Anda akan membuat sejumlah besar bobot yang sebagian besar dari mereka tidak digunakan secara teratur. Menempatkan lapisan embedding di antara mengurangi jumlah bobot yang bisa dipelajari sebelum memberi mereka untuk berinteraksi dengan bagian lain dari input Anda. Keuntungan lain adalah bahwa matriks embedding pada dasarnya berfungsi sebagai tabel pencarian, sehingga Anda benar-benar dapat menggunakan sparsity dari indeks kategori Anda untuk mencari tahu apa nilai saat ini dari embedding dan ketika menerapkan backpropagating hanya mengadaptasi entri matriks bobot itu. .

http://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.

Jan van der Vegt
sumber
Akhirnya jawaban yang bagus, terima kasih. Kami dapat menambahkan bahwa Word2Vec dilatih sebagai tujuan pemodelan bahasa yang membuatnya berbeda dari embeddings yang dilatih untuk tugas tertentu seperti yang Anda katakan.
Elliot
0

Sejauh yang saya mengerti, ini adalah autoencoder sederhana, artinya semua yang dilakukannya adalah mencoba memetakan input ke ruang lain, jadi tidak ada pelatihan mewah, hanya beberapa umpan maju dan backprop. Inilah sebabnya mengapa ini agak cepat untuk dilatih.

Jika Anda ingin menggunakan embeddings yang sudah terlatih, Anda bisa melakukannya dengan cara itu

Valentin Calomme
sumber
Autoencoder adalah model yang memprediksi dirinya sendiri. Apakah itu yang kamu maksud?
kbrose
Memang, sehingga Anda dapat melihatnya sebagai jaring saraf dengan satu lapisan tersembunyi, dan di mana input dan output identik, saya tidak yakin itu adalah apa yang digunakan Keras, tetapi mengingat kecepatan dan dokumentasi, saya cenderung berpikir bahwa cara
Valentin Calomme
Lapisan embedding itu sendiri tidak melakukan itu. Ini hanya memberikan vektor untuk setiap input integer unik. Anda bisa membuat model penyandian otomatis untuk melatih embeddings, tetapi itu bukan bagian dari embedding layer.
kbrose
Saya bingung karena jawaban Anda sesuai dengan pemahaman saya tentang apa yang dilakukan layer Embedding selain menyebutnya "autoencoder".
kbrose
0

Lapisan embedding menggunakan matriks embedding untuk memetakan data dan tidak pernah diperbarui selama pelatihan . Tidak ada parameter trainable di lapisan Keras Embedding. Anda dapat merujuk dokumen layer embedding Keras untuk pemahaman rinci.

thanatoz
sumber