Perlu memahami cara kerja lapisan 'Embedding' di perpustakaan Keras. Saya menjalankan kode berikut dengan Python
import numpy as np
from keras.models import Sequential
from keras.layers import Embedding
model = Sequential()
model.add(Embedding(5, 2, input_length=5))
input_array = np.random.randint(5, size=(1, 5))
model.compile('rmsprop', 'mse')
output_array = model.predict(input_array)
yang memberikan output berikut
input_array = [[4 1 3 3 3]]
output_array =
[[[ 0.03126476 0.00527241]
[-0.02369716 -0.02856163]
[ 0.0055749 0.01492429]
[ 0.0055749 0.01492429]
[ 0.0055749 0.01492429]]]
Saya mengerti bahwa setiap nilai dalam input_array dipetakan ke 2 elemen vektor dalam output_array, jadi 1 X 4 vektor memberikan 1 X 4 X 2 vektor. Tetapi bagaimana nilai yang dipetakan dihitung?
text-mining
word-embeddings
keras
prashanth
sumber
sumber
Jawaban:
Bahkan, vektor keluaran tidak dihitung dari input menggunakan operasi matematika apa pun. Sebagai gantinya, setiap integer input digunakan sebagai indeks untuk mengakses tabel yang berisi semua vektor yang memungkinkan. Itulah alasan mengapa Anda perlu menentukan ukuran kosa kata sebagai argumen pertama (sehingga tabel dapat diinisialisasi).
Aplikasi paling umum dari lapisan ini adalah untuk pemrosesan teks. Mari kita lihat contoh sederhana. Set pelatihan kami hanya terdiri dari dua frase:
Semoga bisa melihat Anda segera
Senang bertemu denganmu lagi
Jadi kita dapat menyandikan frasa-frasa ini dengan memberi setiap kata angka integer unik (misalnya dengan urutan penampilan dalam set data pelatihan kami). Maka frasa kami dapat ditulis ulang sebagai:
Sekarang bayangkan kita ingin melatih sebuah jaringan yang lapisan pertama adalah lapisan penyematan. Dalam hal ini, kita harus menginisialisasi sebagai berikut:
Argumen pertama (7) adalah jumlah kata yang berbeda dalam set pelatihan. Argumen kedua (2) menunjukkan ukuran vektor embedding. The input_length argumet, tentu saja, menentukan ukuran masing-masing urutan input.
Setelah jaringan telah dilatih, kita bisa mendapatkan bobot dari layer embedding, yang dalam hal ini akan berukuran (7, 2) dan dapat dianggap sebagai tabel yang digunakan untuk memetakan bilangan bulat untuk menanamkan vektor:
Jadi menurut embeddings ini, frasa pelatihan kedua kami akan direpresentasikan sebagai:
Pada awalnya mungkin tampak kontra intuitif, tetapi mesin diferensiasi otomatis yang mendasarinya (misalnya, Tensorflow atau Theano) berhasil mengoptimalkan vektor-vektor yang terkait dengan setiap bilangan bulat input seperti parameter lain dari model Anda. Menarik juga untuk menggunakan embedding yang dipelajari oleh metode / orang lain di domain yang berbeda (lihat https://blog.keras.io/using-pre-trained-word-embeddings-in-a-keras-model.html ) sebagai dilakukan di [1].
[1] López-Sánchez, D., Herrero, JR, Arrieta, AG, & Corchado, pembelajaran metrik JM Hibridisasi dan penalaran berbasis kasus untuk deteksi clickbait yang dapat disesuaikan. Kecerdasan Terapan, 1-16.
sumber
Saya juga memiliki pertanyaan yang sama dan setelah membaca beberapa posting dan materi, saya pikir saya sudah tahu apa peran layer embedding.
Saya pikir ini posting juga membantu untuk memahami, bagaimanapun, saya benar-benar menemukan jawabannya Daniel nyaman untuk mencerna. Tapi saya juga mendapat ide di baliknya terutama dengan memahami kata-kata yang tertanam .
Saya percaya itu tidak akurat untuk mengatakan lapisan embedding mengurangi input encoding satu panas ke input lebih sedikit. Setelah semua vektor satu-panas adalah data satu dimensi dan memang berubah menjadi 2 dimensi dalam kasus kami. Lebih baik dikatakan begitu
Baik itu dalam 2 dimensi atau bahkan lebih tinggi.
Saya juga menemukan kesamaan yang sangat menarik antara penyisipan kata dengan Analisis Komponen Utama. Meskipun namanya mungkin terlihat rumit, konsepnya sederhana. Apa yang dilakukan PCA adalah mendefinisikan seperangkat data berdasarkan beberapa aturan umum (disebut komponen prinsip). Jadi itu seperti memiliki data dan Anda ingin menggambarkannya tetapi hanya menggunakan 2 komponen. Yang dalam pengertian ini sangat mirip dengan kata embeddings. Mereka berdua melakukan pekerjaan yang sama dalam konteks yang berbeda. Anda dapat mengetahui lebih lanjut di sini . Saya harap mungkin memahami PCA membantu memahami lapisan yang ditanamkan melalui analogi.
Untuk menyelesaikannya, jawaban pertanyaan awal dari postingan itu adalah " bagaimana cara menghitung nilainya? " Adalah:
sumber