Word2vec dalam gambar



Setiap hal menyembunyikan pola yang merupakan bagian dari alam semesta. Ini memiliki simetri, keanggunan dan keindahan - kualitas yang pertama-tama dipahami oleh setiap seniman sejati yang menangkap dunia. Pola ini dapat ditangkap dalam pergantian musim, dalam bagaimana pasir mengalir di sepanjang lereng, dalam cabang-cabang kusut semak kreosote, dalam pola daunnya.

Kami mencoba untuk meniru pola ini dalam kehidupan kami dan masyarakat kami dan oleh karena itu kami menyukai ritme, lagu, tarian, berbagai bentuk yang membuat kami bahagia dan menghibur kami. Namun, orang juga dapat melihat bahaya yang mengintai dalam mencari kesempurnaan absolut, karena jelas bahwa pola yang sempurna tidak berubah. Dan, mendekati kesempurnaan, semuanya akan mati ”- Dune (1965)

Saya percaya konsep embeddings adalah salah satu ide paling luar biasa dalam pembelajaran mesin. Jika Anda pernah menggunakan Siri, Google Assistant, Alexa, Google Translate atau bahkan keyboard ponsel cerdas dengan prediksi kata berikutnya, maka Anda telah bekerja dengan model pemrosesan bahasa alami berbasis lampiran. Selama beberapa dekade terakhir, konsep ini telah berevolusi secara signifikan untuk model saraf (perkembangan terakhir termasuk embeddings kata kontekstual dalam model-model canggih seperti BERT dan GPT2).

Word2vec adalah metode pembuatan investasi yang efektif yang dikembangkan pada 2013. Selain bekerja dengan kata-kata, beberapa konsepnya ternyata efektif dalam mengembangkan mekanisme rekomendasi dan memberikan makna pada data bahkan dalam tugas komersial, non-linguistik. Teknologi ini telah digunakan oleh perusahaan seperti Airbnb , Alibaba , Spotify, dan Anghami di mesin rekomendasinya.

Pada artikel ini, kita akan melihat konsep dan mekanisme menghasilkan lampiran menggunakan word2vec. Mari kita mulai dengan contoh untuk membiasakan diri dengan cara merepresentasikan objek dalam bentuk vektor. Apakah Anda tahu berapa banyak daftar lima angka (vektor) dapat katakan tentang kepribadian Anda?

Personalisasi: apa kamu?


"Aku memberimu Desert Chameleon; kemampuannya untuk bergabung dengan pasir akan memberi tahu Anda segala yang perlu Anda ketahui tentang akar ekologi dan alasan untuk menjaga kepribadian Anda. " - Anak - anak Dune

Pada skala 0 hingga 100, apakah Anda memiliki tipe kepribadian introvert atau ekstrovert (di mana 0 adalah tipe paling introvert, dan 100 adalah tipe paling ekstrovert)? Pernahkah Anda lulus tes kepribadian: misalnya, MBTI, atau lebih baik , Lima Besar ? Anda diberikan daftar pertanyaan dan kemudian dievaluasi pada beberapa sumbu, termasuk introversi / ekstroversi.


Contoh hasil tes Lima Besar. Dia benar-benar mengatakan banyak tentang kepribadian dan mampu memprediksi keberhasilan akademik , pribadi dan profesional . Misalnya, di sini Anda dapat melewatinya.

Misalkan saya mendapat nilai 38 dari 100 untuk mengevaluasi introversi / extraversion. Ini dapat direpresentasikan sebagai berikut:



Atau pada skala −1 hingga +1:



Seberapa baik kita mengenali seseorang hanya dari penilaian ini? Tidak juga. Manusia adalah makhluk yang kompleks. Oleh karena itu, kami menambahkan satu dimensi lagi: satu lagi karakteristik dari tes.


Anda dapat membayangkan dua dimensi ini sebagai titik pada grafik, atau, bahkan lebih baik, sebagai vektor dari titik asal ke titik ini. Ada alat vektor hebat yang berguna segera.

Saya tidak menunjukkan sifat kepribadian apa yang kami tempatkan pada bagan sehingga Anda tidak menjadi terikat pada sifat-sifat tertentu, tetapi segera memahami representasi vektor kepribadian orang tersebut secara keseluruhan.

Sekarang kita dapat mengatakan bahwa vektor ini sebagian mencerminkan kepribadian saya. Ini adalah deskripsi yang berguna ketika membandingkan orang yang berbeda. Misalkan saya ditabrak bus merah, dan Anda perlu mengganti saya dengan orang yang sama. Manakah dari dua orang di tabel berikut yang lebih mirip dengan saya?



Ketika bekerja dengan vektor, kesamaan biasanya dihitung dengan koefisien Otiai (koefisien geometris):


Orang No. 1 lebih seperti karakter saya. Vektor dalam satu arah (panjang juga penting) memberikan koefisien Otiai yang lebih besar

Sekali lagi, dua dimensi tidak cukup untuk mengevaluasi orang. Dekade perkembangan ilmu psikologi telah mengarah pada penciptaan tes untuk lima karakteristik kepribadian dasar (dengan banyak yang tambahan). Jadi, mari kita gunakan semua lima dimensi:



Masalah dengan lima dimensi adalah bahwa tidak mungkin lagi menggambar panah yang rapi dalam 2D. Ini adalah masalah umum dalam pembelajaran mesin, di mana Anda sering harus bekerja dalam ruang multidimensi. Baik bahwa koefisien geometrik bekerja dengan sejumlah pengukuran:


Koefisien geometrik bekerja untuk sejumlah pengukuran. Dalam lima dimensi, hasilnya jauh lebih akurat.

Di akhir bab ini saya ingin mengulangi dua ide utama:

  1. Orang (dan objek lain) dapat direpresentasikan sebagai vektor numerik (yang bagus untuk mobil!).
  2. Kita dapat dengan mudah menghitung seberapa mirip vektor-vektor itu.



Penyisipan kata


"Karunia kata-kata adalah karunia penipuan dan ilusi." - Anak - anak Dune

Dengan pemahaman ini, kita akan beralih ke representasi vektor dari kata-kata yang diperoleh sebagai hasil pelatihan (mereka juga disebut lampiran) dan melihat sifat-sifatnya yang menarik.

Berikut adalah lampiran untuk kata "raja" (vektor GloVe, dilatih di Wikipedia):

[ 0.50451 , 0.68607 , -0.59517 , -0.022801, 0.60046 , -0.13498 , -0.08813 , 0.47377 , -0.61798 , -0.31012 , -0.076666, 1.493 , -0.034189, -0.98173 , 0.68229 , 0.81722 , -0.51874 , -0.31503 , -0.55809 , 0.66421 , 0.1961 , -0.13495 , -0.11476 , -0.30344 , 0.41177 , -2.223 , -1.0756 , -1.0783 , -0.34354 , 0.33505 , 1.9927 , -0.04234 , -0.64319 , 0.71125 , 0.49159 , 0.16754 , 0.34344 , -0.25663 , -0.8523 , 0.1661 , 0.40102 , 1.1685 , -1.0137 , -0.21585 , -0.15155 , 0.78321 , -0.91241 , -1.6106 , -0.64426 , -0.51042 ]

Kami melihat daftar 50 angka, tetapi sulit untuk mengatakan sesuatu. Mari kita visualisasikan untuk dibandingkan dengan vektor lain. Masukkan angka dalam satu baris:



Warnai sel dengan nilainya (merah untuk mendekati 2, putih untuk dekat dengan 0, biru untuk dekat dengan −2):



Sekarang lupakan angkanya, dan hanya dengan warna kita kontraskan "raja" dengan kata lain:



Anda lihat bahwa "pria" dan "wanita" lebih dekat satu sama lain daripada dengan "raja"? Itu mengatakan sesuatu. Representasi vektor menangkap banyak informasi / makna / asosiasi kata-kata ini.

Berikut daftar contoh lainnya (bandingkan kolom dengan warna yang sama):



Ada beberapa hal yang perlu diperhatikan:

  1. Melalui semua kata berjalan satu kolom merah. Artinya, kata-kata ini serupa dalam dimensi khusus ini (dan kita tidak tahu apa yang dikodekan di dalamnya).
  2. Anda dapat melihat bahwa "wanita" dan "gadis" sangat mirip. Hal yang sama dengan "pria" dan "anak laki-laki".
  3. "Anak laki-laki" dan "anak perempuan" juga serupa dalam beberapa dimensi, tetapi berbeda dari "wanita" dan "pria". Mungkinkah ini gagasan samar kode pemuda? Mungkin
  4. Semuanya kecuali kata terakhir adalah ide orang. Saya menambahkan objek (air) untuk menunjukkan perbedaan antara kategori. Misalnya, Anda dapat melihat bagaimana kolom biru turun dan berhenti di depan vektor air.
  5. Ada dimensi yang jelas di mana "raja" dan "ratu" mirip satu sama lain dan berbeda dari orang lain. Mungkin konsep royalti yang samar dikodekan di sana?

Analogi


“Kata-kata menanggung beban apa pun yang kita inginkan. Yang diperlukan hanyalah kesepakatan tentang tradisi, yang dengannya kami membangun konsep. ” - Dewa Kaisar Dune

Contoh terkenal yang menunjukkan sifat luar biasa dari investasi adalah konsep analogi. Kita dapat menambah dan mengurangi vektor kata, mendapatkan hasil yang menarik. Contoh paling terkenal adalah formula "raja - laki-laki + perempuan":


Menggunakan pustaka Gensim dalam python, kita dapat menambah dan mengurangi vektor kata, dan pustaka akan menemukan kata-kata yang paling dekat dengan vektor yang dihasilkan. Gambar menunjukkan daftar kata-kata yang paling mirip, masing-masing dengan koefisien kesamaan geometris

Kami memvisualisasikan analogi ini seperti sebelumnya:


Vektor yang dihasilkan dari perhitungan "raja - laki-laki + perempuan" tidak cukup sama dengan "ratu", tetapi ini adalah hasil terdekat dari 400.000 lampiran kata dalam kumpulan data

Setelah mempertimbangkan keterikatan kata-kata, mari kita belajar bagaimana pembelajaran terjadi. Tetapi sebelum beralih ke word2vec, Anda perlu melihat leluhur konseptual kata embedding: model bahasa saraf.

Model bahasa


“Nabi tidak tunduk pada ilusi masa lalu, sekarang atau masa depan. Fixity bentuk linguistik menentukan perbedaan linear tersebut. Para nabi memegang kunci untuk mengunci lidah. Bagi mereka, citra fisik tetap hanya citra fisik dan tidak lebih.

Alam semesta mereka tidak memiliki sifat-sifat alam semesta mekanis. Urutan linear kejadian diasumsikan oleh pengamat. Penyebab dan akibat? Ini masalah yang sangat berbeda. Nabi mengucapkan kata-kata yang menentukan. Anda melihat sekilas peristiwa yang seharusnya terjadi "sesuai dengan logika segala sesuatu." Tetapi sang nabi secara instan melepaskan energi dari kekuatan ajaib yang tak terbatas. Alam semesta sedang mengalami perubahan spiritual. ” - Dewa Kaisar Dune

Salah satu contoh NLP (Natural Language Processing) adalah fungsi prediksi kata berikutnya pada keyboard smartphone. Miliaran orang menggunakannya ratusan kali sehari.



Memprediksi kata berikutnya adalah tugas yang cocok untuk model bahasa . Dia dapat mengambil daftar kata-kata (katakanlah, dua kata) dan mencoba memprediksi yang berikut ini.

Pada tangkapan layar di atas, model mengambil dua kata hijau ini ( thou shalt ) dan mengembalikan daftar opsi (kemungkinan besar untuk kata not ):



Kita bisa membayangkan model sebagai kotak hitam:



Namun dalam praktiknya, model tersebut menghasilkan lebih dari satu kata. Ini memperoleh perkiraan probabilitas untuk hampir semua kata yang dikenal ("kamus" model bervariasi dari beberapa ribu hingga lebih dari satu juta kata). Aplikasi keyboard kemudian menemukan kata-kata dengan skor tertinggi dan menunjukkannya kepada pengguna.


Model bahasa saraf memberikan kemungkinan semua kata diketahui. Kami menunjukkan probabilitas sebagai persentase, tetapi dalam vektor yang dihasilkan 40% akan direpresentasikan sebagai 0,4

Setelah pelatihan, model saraf pertama ( Bengio 2003 ) menghitung prognosis dalam tiga tahap:



Langkah pertama bagi kami adalah yang paling relevan, karena kami membahas investasi. Sebagai hasil dari pelatihan, sebuah matriks dibuat dengan lampiran dari semua kata dalam kamus kami. Untuk mendapatkan hasilnya, kita cukup mencari embeddings dari kata-kata input dan menjalankan prediksi:



Sekarang mari kita lihat proses pembelajaran dan cari tahu bagaimana matriks investasi ini dibuat.

Pelatihan model bahasa


“Prosesnya tidak bisa dipahami dengan mengakhirinya. Pemahaman harus bergerak seiring dengan proses, bergabung dengan alirannya dan mengalir bersamanya ”- Dune

Model bahasa memiliki keunggulan besar dibandingkan sebagian besar model pembelajaran mesin lainnya: mereka dapat dilatih tentang teks-teks yang kita miliki dengan berlimpah. Pikirkan semua buku, artikel, bahan Wikipedia, dan bentuk data tekstual lain yang kita miliki. Bandingkan dengan model pembelajaran mesin lainnya yang membutuhkan kerja manual dan data yang dikumpulkan secara khusus.

"Anda harus belajar kata dari perusahaannya" - J. R. Furs

Lampiran untuk kata-kata dihitung berdasarkan kata-kata di sekitarnya, yang lebih sering muncul di dekatnya. Mekaniknya adalah sebagai berikut:

  1. Kami mendapatkan banyak data teks (katakanlah, semua artikel Wikipedia)
  2. Atur jendela (misalnya, dari tiga kata) yang meluncur di seluruh teks.
  3. Jendela geser menghasilkan pola untuk melatih model kita.




Ketika jendela ini melayang di atas teks, kita (sebenarnya) menghasilkan kumpulan data, yang kemudian kita gunakan untuk melatih model. Untuk memahami, mari kita lihat bagaimana jendela geser menangani frasa ini:

"Semoga kamu tidak membangun mesin yang memiliki kesamaan pikiran manusia" - Dune

Ketika kita mulai, jendela terletak pada tiga kata pertama dari kalimat:



Kami mengambil dua kata pertama untuk tanda, dan kata ketiga untuk label:


Kami menghasilkan sampel pertama dalam dataset yang kemudian dapat digunakan untuk mengajarkan model bahasa

Kemudian kami memindahkan jendela ke posisi berikutnya dan membuat sampel kedua:



Dan segera, kami mengumpulkan kumpulan data yang lebih besar:



Dalam praktiknya, model biasanya dilatih langsung dalam proses memindahkan jendela geser. Namun secara logis, fase “pembuatan kumpulan data” terpisah dari fase pelatihan. Selain pendekatan jaringan saraf, metode N-gram sering digunakan sebelumnya untuk model pengajaran bahasa (lihat bab ketiga buku "Pidato dan Pemrosesan Bahasa" ). Untuk melihat perbedaan ketika beralih dari N-gram ke model neural dalam produk nyata, inilah posting 2015 di blog Swiftkey , pengembang keyboard Android favorit saya, yang menyajikan model bahasa neuralnya dan membandingkannya dengan model N-gram sebelumnya. Saya suka contoh ini karena ini menunjukkan bagaimana properti algoritmik investasi dapat dijelaskan dalam bahasa pemasaran.

Kami melihat dua arah


“Paradoks adalah tanda bahwa kita harus mencoba mempertimbangkan apa yang ada di baliknya. Jika paradoks itu membuat Anda prihatin, itu berarti Anda berjuang untuk yang absolut. Relativis memandang paradoks hanya sebagai pemikiran yang menarik, mungkin lucu, terkadang menakutkan, tetapi pemikiran yang sangat instruktif. ” Kaisar Dewa Dune

Berdasarkan hal tersebut di atas, isi celah:



Sebagai konteks, ada lima kata sebelumnya (dan referensi sebelumnya untuk "bus"). Saya yakin sebagian besar dari Anda menduga bahwa seharusnya ada "bus". Tetapi jika saya memberi Anda kata lain setelah ruang, apakah ini akan mengubah jawaban Anda?



Ini sepenuhnya mengubah situasi: sekarang kata yang hilang kemungkinan besar "merah". Jelas, kata-kata memiliki nilai informasi sebelum dan sesudah spasi. Ternyata akuntansi di kedua arah (kiri dan kanan) memungkinkan Anda untuk menghitung investasi yang lebih baik. Mari kita lihat bagaimana mengkonfigurasi pelatihan model dalam situasi seperti itu.

Lewati gram


“Ketika pilihan yang benar-benar tidak salah tidak diketahui, intelijen mendapat kesempatan untuk bekerja dengan data yang terbatas di arena, di mana kesalahan tidak hanya mungkin terjadi, tetapi juga perlu. - Capitul Dunes

Selain dua kata sebelum target, Anda dapat memperhitungkan dua kata lagi setelahnya.



Kemudian kumpulan data untuk model pelatihan akan terlihat seperti ini:



Ini disebut arsitektur CBOW (Continuous Bag of Words) dan dijelaskan dalam salah satu dokumen word2vec [pdf]. Ada arsitektur lain, yang juga menunjukkan hasil yang sangat baik, tetapi disusun sedikit berbeda: ia mencoba menebak kata-kata tetangga dengan kata saat ini. Jendela geser terlihat seperti ini:


Di slot hijau adalah kata input, dan setiap bidang pink mewakili kemungkinan keluar

Persegi panjang merah muda memiliki nuansa yang berbeda karena jendela geser ini sebenarnya menciptakan empat pola terpisah dalam dataset pelatihan kami:



Metode ini disebut arsitektur skip-gram . Anda dapat memvisualisasikan jendela geser sebagai berikut:



Empat sampel berikut ditambahkan ke dataset pelatihan:



Kemudian kami memindahkan jendela ke posisi berikut:



Yang menghasilkan empat contoh lagi:



Kami akan segera memiliki lebih banyak sampel:



Review Belajar


“Muad'Dib adalah pembelajar yang cepat karena dia terutama diajari cara belajar. Tetapi pelajaran pertama adalah asimilasi keyakinan bahwa ia dapat belajar, dan itu adalah dasar dari segalanya. Sungguh menakjubkan betapa banyak orang tidak percaya bahwa mereka dapat belajar dan belajar, dan berapa banyak lagi orang yang berpikir bahwa belajar itu sangat sulit. " - Dune

Sekarang setelah kita memiliki set lompat-gram, kita menggunakannya untuk melatih model saraf dasar bahasa yang memprediksi kata tetangga.



Mari kita mulai dengan sampel pertama dalam kumpulan data kami. Kami mengambil tanda dan mengirimkannya ke model yang tidak terlatih dengan permintaan untuk memprediksi kata berikutnya.



Model melewati tiga langkah dan menampilkan vektor prediksi (dengan probabilitas untuk setiap kata dalam kamus). Karena model ini tidak terlatih, pada tahap ini perkiraannya mungkin salah. Tapi itu bukan apa-apa. Kami tahu kata yang diprediksinya - ini adalah sel yang dihasilkan di baris yang saat ini kami gunakan untuk melatih model:


“Vektor target” adalah kata di mana kata target memiliki probabilitas 1, dan semua kata lain memiliki probabilitas 0

Bagaimana model yang salah? Kurangi vektor perkiraan dari target dan dapatkan vektor kesalahan:



Vektor kesalahan ini sekarang dapat digunakan untuk memperbarui model, jadi lain kali kemungkinan besar akan memberikan hasil yang akurat pada data input yang sama.



Di sini tahap pertama pelatihan berakhir. Kami terus melakukan hal yang sama dengan sampel berikutnya dalam kumpulan data, dan kemudian dengan yang berikutnya, sampai kami memeriksa semua sampel. Ini adalah akhir dari era pembelajaran pertama. Kami mengulang semuanya berulang-ulang untuk beberapa era, dan sebagai hasilnya kami mendapatkan model yang terlatih: dari sana Anda dapat mengekstrak matriks investasi dan menggunakannya dalam aplikasi apa pun.

Meskipun kami belajar banyak, tetapi untuk sepenuhnya memahami bagaimana word2vec benar-benar belajar, beberapa ide kunci hilang.

Seleksi negatif


"Berusaha memahami Muad'Dib tanpa memahami musuh bebuyutannya - Harkonnenov - sama dengan mencoba memahami Kebenaran tanpa memahami apa itu Kepalsuan. Ini adalah upaya untuk mengetahui Cahaya tanpa mengetahui Kegelapan. Ini tidak mungkin. " - Dune

Ingat tiga langkah bagaimana model saraf menghitung perkiraan:



Langkah ketiga sangat mahal dari sudut pandang komputasi, terutama jika Anda melakukannya untuk setiap sampel dalam kumpulan data (puluhan juta kali). Penting untuk meningkatkan produktivitas.

Salah satu caranya adalah dengan membagi tujuan menjadi dua tahap:

  1. Buat lampiran kata berkualitas tinggi (tanpa memprediksi kata berikutnya).
  2. Gunakan investasi berkualitas tinggi ini untuk mengajar model bahasa (untuk perkiraan).

Artikel ini akan fokus pada langkah pertama. Untuk meningkatkan produktivitas, Anda dapat beralih dari memprediksi kata tetangga ...



... dan beralih ke model yang mengambil input dan output kata-kata dan menghitung probabilitas kedekatannya (dari 0 ke 1).



Transisi sederhana seperti itu menggantikan jaringan saraf dengan model regresi logistik - dengan demikian, perhitungan menjadi lebih sederhana dan lebih cepat.

Pada saat yang sama, kita perlu memperbaiki struktur set data kami: label sekarang menjadi kolom baru dengan nilai 0 atau 1. Dalam tabel kami, unit ada di mana-mana, karena kami menambahkan tetangga di sana.



Model seperti itu dihitung dengan kecepatan luar biasa: jutaan sampel dalam hitungan menit. Tetapi Anda perlu menutup satu celah. Jika semua contoh kami positif (sasaran: 1), maka model rumit dapat membentuk yang selalu menghasilkan 1, menunjukkan akurasi 100%, tetapi tidak mempelajari apa pun dan menghasilkan investasi sampah.



Untuk mengatasi masalah ini, Anda harus memasukkan pola negatif ke dalam kumpulan data - kata-kata yang jelas bukan tetangga. Bagi mereka, model harus kembali 0. Sekarang model harus bekerja keras, tetapi perhitungan tetap berjalan dengan sangat cepat.


Untuk setiap sampel dalam dataset, tambahkan contoh negatif berlabel 0

Tapi apa yang harus diperkenalkan sebagai kata-kata keluaran? Pilih kata-kata secara sewenang-wenang:



Ide ini lahir di bawah pengaruh metode perbandingan kebisingan [pdf]. Kami mencocokkan sinyal aktual (contoh positif dari kata-kata tetangga) dengan noise (kata-kata yang dipilih secara acak yang bukan tetangga). Ini memberikan kompromi yang sangat baik antara kinerja dan kinerja statistik.

Sampel Negatif Lewati-gram (SGNS)


Kami melihat dua konsep utama dari word2vec: bersama-sama mereka disebut "melewatkan-gram dengan pengambilan sampel negatif".



Belajar word2vec


“Mesin tidak dapat melihat setiap masalah yang penting bagi orang yang hidup. Ada perbedaan besar antara ruang diskrit dan kontinum kontinu. Kami tinggal di satu ruang, dan mesin ada di ruang lain. ” - Dewa Kaisar Dune

Setelah memeriksa ide-ide dasar pengambilan sampel skip-gram dan negatif, kita dapat melanjutkan untuk melihat lebih dekat pada proses pembelajaran word2vec.

Pertama, kami melakukan pra-proses teks di mana kami melatih model. Tentukan ukuran kamus (kami akan menyebutnya vocab_size ), katakanlah, dalam 10.000 lampiran dan parameter dari kata-kata dalam kamus.

Di awal pelatihan, kami membuat dua matriks: Embedding dan Context . Lampiran untuk setiap kata disimpan dalam matriks ini dalam kamus kami (oleh karena itu vocab_size adalah salah satu parameternya). Parameter kedua adalah dimensi lampiran (biasanya embedding_size diatur ke 300, tetapi sebelumnya kita melihat contoh dengan 50 dimensi).



Pertama, kami menginisialisasi matriks ini dengan nilai acak. Kemudian kami memulai proses pembelajaran. Pada setiap tahap, kami mengambil satu contoh positif dan yang negatif yang terkait dengannya. Inilah grup pertama kami:



Kami sekarang memiliki empat kata: kata input not dan kata not kata output / kontekstual thou (tetangga sebenarnya), aaron dan taco (contoh negatif). Kami mulai mencari lampiran mereka dalam matriks Embedding (untuk kata input) dan Context (untuk kata konteks), meskipun kedua matriks berisi lampiran untuk semua kata dari kamus kami.



Kemudian kami menghitung produk skalar dari lampiran input dengan masing-masing lampiran kontekstual. Dalam setiap kasus, diperoleh angka yang menunjukkan kesamaan input data dan lampiran kontekstual.



Sekarang kita perlu cara untuk mengubah estimasi ini menjadi semacam kemungkinan: semuanya harus angka positif antara 0 dan 1. Ini adalah tugas yang sangat baik untuk persamaan logistik sigmoid .



Hasil perhitungan sigmoid dapat dianggap sebagai output dari model untuk sampel ini. Seperti yang Anda lihat, taco skor tertinggi, sementara aaron masih memiliki skor terendah, baik sebelum dan sesudah sigmoid.

Ketika model yang tidak terlatih membuat perkiraan dan memiliki tanda target nyata untuk perbandingan, mari kita hitung berapa banyak kesalahan dalam perkiraan model. Untuk melakukan ini, cukup kurangi skor sigmoid dari label target.


error = target - sigmoid_scores

Di sinilah fase "belajar" dari istilah "pembelajaran mesin" dimulai. Sekarang kita dapat menggunakan estimasi kesalahan ini untuk menyesuaikan investasi not , thou , aaron dan taco , sehingga hasilnya nanti lebih dekat dengan perkiraan target.



Ini menyelesaikan satu tahap pelatihan. Kami sedikit memperbaiki keterikatan beberapa kata ( not , aaron , dan taco ). Sekarang kita beralih ke tahap berikutnya (sampel positif berikutnya dan yang negatif yang terkait dengannya) dan ulangi prosesnya.



Lampiran terus meningkat saat kami menggilir seluruh set data beberapa kali. Anda kemudian dapat menghentikan proses, mengesampingkan matriks Context , dan menggunakan matriks Embeddings terlatih untuk tugas berikutnya.

Ukuran jendela dan jumlah sampel negatif


Dalam proses belajar word2vec, dua hiperparameter kunci adalah ukuran jendela dan jumlah sampel negatif.



Ukuran jendela yang berbeda cocok untuk tugas yang berbeda. Telah diperhatikan bahwa ukuran jendela yang lebih kecil (2–15) menghasilkan lampiran yang dapat dipertukarkan dengan indeks yang sama (perhatikan bahwa antonim seringkali dapat dipertukarkan ketika melihat kata-kata di sekitarnya: misalnya, kata "baik" dan "buruk" sering disebutkan dalam konteks yang sama). Ukuran jendela yang lebih besar (15-50 atau bahkan lebih) menghasilkan lampiran terkait dengan indeks yang serupa. Dalam praktiknya, Anda sering harus memberikan anotasi untuk persamaan semantik yang berguna dalam tugas Anda. Di Gensim, ukuran jendela default adalah 5 (dua kata kiri dan kanan, di samping kata input itu sendiri).



Jumlah sampel negatif adalah faktor lain dalam proses pembelajaran. Dokumen asli merekomendasikan 5-20. Ia juga mengatakan bahwa 2-5 sampel tampaknya cukup ketika Anda memiliki dataset yang cukup besar. Dalam Gensim, nilai default adalah 5 pola negatif.

Kesimpulan


"Jika perilakumu melebihi standarmu, maka kau adalah orang yang hidup, bukan automaton" - Dewa-Kaisar Dune

Saya harap Anda sekarang memahami embedding kata-kata dan esensi dari algoritma word2vec. Saya juga berharap bahwa sekarang Anda akan lebih memahami artikel-artikel yang menyebutkan konsep "melewatkan-gram dengan pengambilan sampel negatif" (SGNS), seperti dalam sistem rekomendasi yang disebutkan di atas.

Referensi dan Bacaan Lebih Lanjut


Source: https://habr.com/ru/post/id446530/


All Articles