Pernahkah Anda bertanya-tanya bagaimana situs web masih mengetahui apa yang Anda maksud meskipun Anda salah mengeja kata di bilah pencarian? Jika demikian, artikel ini untuk Anda! Kita akan membahas konsep, matematika, dan contoh panduan langkah demi langkah tentang cara penghitungan persamaan antar kata di banyak situs web melalui metode kesamaan kosinus.

Dan jangan khawatir jika konsep trigonometri tampak menakutkan bagi Anda saat ini. Bagian ini akan memandu Anda memahami intuisi setiap konsep yang relevan, mulai dari makna kosinus hingga logika perkalian titik. Tidak diperlukan pengetahuan sebelumnya.

Kata-kata dalam ruang vektor

Dalam artikel saya sebelumnya, kami membahas bagaimana model bahasa AI mengubah kata menjadi angka melalui metode penyematan kata. Keluaran dari proses ini berupa matriks berukuran besar dimana setiap baris berisi sebuah kata dan setiap kolom berisi nilai dimensi kata tertentu. Dalam artikel tersebut, kami juga membahas bagaimana BERT (model yang mendukung ChatGPT) menciptakan 768 dimensi untuk setiap kata dengan jaringan saraf transformator.

Namun jika Anda ingat, sebelum kita mempelajari BERT, kami menggunakan contoh yang lebih sederhana untuk mengilustrasikan konsep penyematan kata. Kami akan kembali ke contoh sederhana untuk artikel ini:

Dalam contoh ini, kita memilih tiga kata, 'Salju', 'Ski', dan 'Rafael', dan kita mendapatkan tiga kemungkinan fitur dari kata-kata ini, memberikan setiap fitur nilai 0 atau 1 tergantung pada apakah kata-kata tersebut termasuk dalam kata tersebut atau tidak. hadir dalam kata-kata kita. Karena kita hanya berurusan dengan tiga fitur, dan bukan 768, kita dapat memplot setiap fitur dalam sumbu 3-D dan menghasilkan representasi linier dari setiap kata — dengan kata lain, kita dapat merepresentasikan kata-kata dalam ruang vektor.

Kini setelah kita dapat merepresentasikan kata sebagai vektor, kita dapat mulai menerapkan metode kesamaan kosinus untuk mengidentifikasi seberapa dekat atau jauh jaraknya satu sama lain — dan dengan demikian, gunakan angka tersebut dalam beberapa cara yang berguna.

Tapi tunggu dulu, apa itu cosinus?

Jujur saja - Saya rasa saya belum memahami arti sebenarnya dari fungsi kosinus saat pertama kali mempelajarinya di SMA. Mungkin saya terlalu sibuk mengerjakan lebih banyak kelas daripada yang seharusnya, atau menjadi remaja yang tidak dapat menyesuaikan diri, atau saya tidak tahu — mungkin hal itu tidak dijelaskan dengan baik! Faktanya adalah, baru lama kemudian saya benar-benar memahami fungsi kosinus.

Fungsi kosinus memberitahu kita proporsi suatu garis yang dapat dikaitkan dengan komponen horizontalnya. Izinkan saya mengilustrasikannya dengan soal fisika yang sederhana namun sangat tidak praktis:

Bayangkan Anda sedang mendorong sebuah batu besar ke puncak bukit. Itu batu yang berat, jadi Anda harus mengerahkan banyak tenaga! Sebagian gaya tersebut terjadi melalui gerakan kaki Anda, saat Anda bergerak secara horizontal,dan sebagian lagi terjadi vertikalsaat Anda mendorong ke atas. Dengan membagi gaya Anda menjadi kedua komponen, kita dapat memodelkan soal ini secara tiba-tiba dengan sebuah segitiga!

Pada contoh di atas, kosinus sudut antara garis c, yang melambangkan gaya resultan kita, dan garis a, yang melambangkan gerak kaki kita, dapat memberi tahu kita seberapa besar gaya yang dihasilkan. gaya c dapat dikaitkan dengan komponen horizontalnya a — dengan kata lain, seberapa besar gaya pada batu tersebut dapat dijelaskan oleh gerak kaki kita.

Misalkan kita mengukur gerak kaki kita bernilai 4 dan misalkan kita mengukur gaya resultan bernilai 5. Kosinus sudut antara keduanya adalah 4 dibagi 5, atau 0,8. Hal ini menunjukkan bahwa 80% kekuatan yang kita hasilkan berasal dari gerak kaki kita.

Jika Anda tidak familiar dengan salah satu notasi di atas, ini mungkin sedikit membingungkan. Namun saya berharap gambaran besarnya jelas - setelah kita memiliki vektor, kita dapat membentuk segitiga, dan kita dapat menggunakan sifat trigonometri untuk membuat kesimpulan yang kuat tentang apa yang coba diwakilkan oleh vektor.

Cara lain untuk menghitung kosinus

Contoh yang ditunjukkan di atas melibatkan segitiga siku-siku — segitiga yang sudutnya 90 derajat. Namun saat kita berurusan dengan segitiga yang lebih kompleks, perhitungannya akan terlihat sedikit berbeda. Meskipun intuisi tentang kosinus tetap sama — yaitu mewakili kontribusi horizontal terhadap vektor resultan — kita memerlukan cara berbeda untuk menghitungnya. Sekali lagi, izinkan saya mengilustrasikan rumus baru ini dengan soal fisika aneh lainnya - soal di mana Anda melempar bola pantai, namun angin kencang datang dan mendorong bola sedikit ke belakang dari tempat Anda ingin melemparnya.

Dalam hal ini, gaya resultan kita tampaknya jelas lebih kecil daripada komponen horizontalnya —tetapi jika dilihat lebih dekat, ternyata bukan itu masalahnya. Gaya resultan mempertimbangkan komponen horizontal lemparan yang diwakili oleh garis a, namun juga komponen horizontal angin yang bertiup ke arah berlawanan. Kemiripan kosinus masih mewakili proporsi horizontal terhadap gaya, namun kita tidak bisa lagi hanya menganggap garis asebagai representasi visual dari komponen horizontal. Sebagiannya juga terletak pada komponen horizontal garis c. Kabar baiknya adalah ada rumus umum fungsi kosinus yang bisa digunakan untuk semua jenis segitiga. Jika Anda tertarik untuk mengetahui rumusnya secara mendalam, tautan "di sini" ini cocok untuk Anda! Untuk mempersingkat bagian ini, saya cukup mendeklarasikan persamaan di bawah ini beserta solusi masalahnya.

Seperti yang dapat kita lihat, 0,95 atau 95% gaya resultan masih dapat dijelaskan oleh komponen horizontal lemparan dan hembusan angin. Ini adalah ilustrasi yang bagus tentang betapa pentingnya mempertimbangkan arah ketika berhadapan dengan vektor.

Rafa, saya mengerti kosinus sekarang— tapi apa itu kesamaan kosinus?

Kesamaan kosinus adalah metode yang digunakan untuk membandingkan hubungan vektor satu sama lain dengan melihat kosinus sudut yang dibuatnya. Dengan kata lain, dengan menghitung kosinus sudut antara dua vektor, kita menghitung kesamaan kosinusnya. Tidak ada trik di sini - itulah definisi kesamaan kosinus.

Kesamaan kosinus antara dua vektor masih mencoba menjawab pertanyaan tentang atribusi horizontal. Hal ini karena meskipun pada awalnya tidak ada vektor yang tampak horizontal, kita selalu dapat memutar bidang acuan untuk membuat salah satu vektor tersebut menjadi horizontal secara artifisial.

Pada titik ini, wajar jika Anda bertanya - apa masalahnya? Jika kata-kata dapat diartikan sebagai garis-garis yang membentuk sebuah segitiga, apa hebatnya kemiripan kosinusnya? Dan jawabannya adalah kesamaan kosinus juga bisa digunakan untuk soal yang tidak dimulai dengan segitiga.

Di makalah sebelumnya, kita membahas tentang bagaimana BERT, model yang mendukung ChatGPT, menggunakan 768 dimensi untuk setiap kata-katanya. Itu berarti setiap kata memiliki nilai vektor 768 — terlalu banyak untuk diplot dalam kotak dan diharapkan menghasilkan segitiga. Masalah besar tentang kesamaan kosinus adalah adanya cara ketiga untuk menghitungnya - cara yang dapat digunakan untuk semua dimensi.

Cara pasti untuk menghitung kesamaan kosinus

Persamaan yang menggeneralisasi kemiripan kosinus untuk sejumlah dimensi mempertimbangkan dua elemen berbeda — perkalian titik antara vektor multidimensi, dan besaran (yaitu, panjang) setiap vektor. Secara matematis kita dapat merepresentasikannya sebagai berikut:

Perkalian titik adalah sebuah konsep dalam aljabar linier yang menggambarkan efek perkalian suatu garis terhadap garis lainnya dalam arah yang sama. Untuk menghitung perkalian titik, kita harus memecah garis menjadi komponen-komponennya, mengalikan nilai-nilai dalam setiap komponen, lalu menjumlahkannya. Saya membuat infografis tiga langkah berikut untuk membantu kami memvisualisasikannya sedikit lebih baik.

Salah satu ilustrasi menakjubkan dari perkalian titik dapat ditemukan di game balap seperti Mario Kart. Dan di sini saya memberikan penghargaan penuh kepada orang-orang di Penjelasan Lebih Baik yang telah memberikan contoh ini. Di Mario Kart, sering kali ada 'peningkat kecepatan' di darat. Tergantung pada sudut Anda tiba pada penambah kecepatan, 'peningkatan' akan berubah. Cara terbaik untuk memaksimalkan 'boost' adalah dengan datang dari belakang ke arah yang ditunjuk oleh booster tersebut. Namun semakin miring kita tiba, semakin sedikit 'dorongan' yang kita dapatkan. Bayangkan perkalian titik sebagai nilai yang dihasilkan oleh peningkatan tersebut — atau seberapa besar peningkatan tersebut mempercepat mobil ke arah yang sudah dituju.

Bagian kedua dari persamaan cosine-similaritas kita adalah perkalian antara panjang vektor. Pada contoh sebelumnya, kita menyertakan panjang garis, namun dalam soal data yang melibatkan kata, kita hanya akan memiliki nomor untuk fitur setiap kata —atau koordinat dalam ruang. Untungnya, ada cara untuk menghitung panjang vektor dengan sejumlah koordinat berapa pun. Untuk menghitung panjang, disebut juga magnitudo, kita mengkuadratkan setiap koordinat, lalu menjumlahkannya, dan terakhir, mengambil akar kuadrat dari bilangan tersebut.

Sebagai contoh, kita dapat menerapkan rumus pada tiga kata 'salju', 'ski', dan 'Rafael' dan mendapatkan nilai panjang vektornya sebagai berikut:

Penghitungan langkah demi langkah yang dipandu kesamaan kosinus untuk enam dimensi

Jika Anda sudah berhasil sejauh ini, selamat — kita akan mencapai bagian terbaiknya. Sekarang mari kita menghitung kemiripan kosinus dari tiga kata, yang masing-masing memiliki vektor enam dimensi sehingga kita tidak dapat memplot nilainya dalam ruang 3-D dan membentuk segitiga yang rapi. Ingat — dalam banyak kasus penggunaan ilmu data, kami memiliki ratusan kemungkinan dimensi, jadi bahkan pada enam dimensi, kami masih merepresentasikan masalahnya dengan cara yang cukup sederhana!

Langkah 1: Buat matriks representasi numerik (yaitu penyematan kata)

Pada contoh di bawah ini, kami terus menggunakan tiga kata, mengkodekan setiap properti kata yang dipilih dengan 0 atau 1 bergantung pada ada atau tidaknya properti tersebut. Ingatlah bahwa dalam contoh yang lebih canggih, nilai-nilai tersebut kemungkinan besar akan berkelanjutan dan mungkin tidak memiliki makna yang melekat pada diri kita. Namun dalam kasus kami, kami akan tetap menggunakan angka mudah dan properti masuk akal untuk memastikan pemahaman konseptual penuh.

Langkah 2: Hitung perkalian titik dari setiap vektor kata

Untuk menghitung perkalian titik antara dua kata, kita memecah vektor kata menjadi enam dimensinya, mengalikan nilai kata untuk setiap dimensi, lalu menjumlahkannya. Berikut adalah contoh kode warna untuk perkalian titik antara 'salju' dan 'ski':

Menghitung perkalian titik untuk ketiga kata tersebut, kita sampai pada tabel nilai berikut. Tampaknya ‘ski’ dan ‘salju’ memang saling mendorong ke arah yang sama seperti halnya ‘skiing’ dan ‘skating’. Tampaknya tidak ada 'dorongan maju' antara 'salju' dan 'seluncur es'.

Langkah 3: Hitung panjang vektor kata

Meskipun kita tidak dapat memvisualisasikan sebuah vektor dalam enam dimensi, perhitungan matematika panjang vektor juga dapat dilakukan. Dengan menggunakan persamaan sebelumnya, kita menemukan nilai berikut untuk panjang vektor kata kita — atau besarannya.

Langkah 4: Hitung kesamaan kosinus

Langkah terakhir hanyalah pembagian sederhana — perkalian titik dari pasangan kata dibagi dengan kedua panjang kata. Dengan melakukan hal ini, kita mendapatkan tabel kesamaan kosinus akhir, yang saya harap, memberi kita hasil yang cukup dapat diprediksi dan diharapkan.

‘Salju’ dan ‘ski’ 78% serupa — dengan menggunakan salah satu elemen sebagai landasan horizontal bagi elemen lainnya, sekitar 78% elemen di salah satu elemen dapat dijelaskan oleh elemen di elemen lainnya. Nilai tersebut mencapai 63% untuk 'ski' dan 'skating', dan nilai 'salju' dan 'skating' tidak memiliki kesamaan.

Meskipun contoh ini terkesan sewenang-wenang, saya harap Anda merasa bahwa proses ini cukup mudah dan sangat ampuh dalam kemampuannya untuk bekerja pada sejumlah dimensi. Kita bisa menerapkan empat langkah yang sama untuk dua belas dimensi, atau dua puluh, atau tujuh ratus enam puluh delapan — dan perhitungannya juga akan berhasil. Siapa yang tahu bahwa mendorong batu ada hubungannya dengan kesamaan kata…

Beberapa nilai kesamaan kosinus utama

Sepanjang artikel ini, kita telah melihat bagaimana kesamaan kosinus secara inheren terkait dengan arah. Ada tiga nilai kunci untuk kesamaan kosinus yang saya ingin Anda ingat khususnya. Untuk setiap nilai kunci, saya menyajikan contoh pasangan kata yang diharapkan dapat membantu memperkuat intuisi mereka.

-1: Ketika kesamaan kosinus bernilai negatif

'Panas' dan 'dingin' biasanya digunakan sebagai dua hal yang bertentangan satu sama lain. Mereka dapat dimodelkan sebagai vektor-vektor yang bergerak berlawanan arah sehingga menghasilkan sudut 180° sempurna di antara keduanya. Kosinus 180°adalah -1 dan oleh karena itu ketika Anda melihat kesamaan kosinus -1, Anda harus menganggap kata-kata yang mendasarinya berlawanan satu sama lain.

0: Ketika kesamaan kosinus netral sempurna

'Piano' dan 'kelapa' biasanya tidak digunakan dalam kalimat yang sama. Mereka dapat dimodelkan sebagai vektor-vektor yang bergerak tegak lurus dengan sudut 90° sempurna di antara vektor-vektor tersebut. Kosinus 90°adalah 0 dan oleh karena itu ketika Anda melihat kesamaan kosinus 0, Anda harus menganggap kata-kata yang mendasarinya tidak berhubungan satu sama lain.

1: Ketika kesamaan kosinus bernilai positif

Sepanjang artikel ini, kami menggunakan kata 'garis' dan 'vektor' secara bergantian karena, dalam konteks kami, pada dasarnya keduanya memiliki arti yang sama. Mereka dapat dimodelkan sebagai vektor-vektor yang bergerak dalam arah yang sama sehingga memiliki sudut di antara keduanya. Kosinus dari adalah 1 dan oleh karena itu ketika Anda melihat kesamaan kosinus 1, Anda harus menganggap kedua kata tersebut sebagai sinonim satu sama lain.

Penerapan praktis kesamaan kosinus

Kami menjelajahi beberapa penerapan teoritis dan nyata dari kesamaan kosinus hari ini dengan contoh-contoh dari fisika dan pemrosesan bahasa alami. Namun kenyataannya kesamaan kosinus dapat digunakan untuk masalah apa pun yang dapat direpresentasikan dengan vektor. Klasifikasi gambar, deteksi anomali, pelabelan dokumen — sebut saja — kesamaan kosinus mungkin digunakan dalam beberapa cara. Kesamaan kosinus dapat diterapkan pada sejumlah dimensi sehingga permasalahan dengan segala kerumitan dapat dibantu dengan lensa trigonometri ini. Dan ya, kesamaan kosinus kemungkinan besar digunakan untuk mengetahui bahwa meskipun saya mengetik dengan buruk, saya tertarik dengan Python pada contoh di bawah ini. Itu karena 'pithon' dan 'python' mungkin memiliki kesamaan kosinus yang sangat tinggi di antara keduanya!

Ringkasan — dan pandangan ke depan

Kesamaan kosinus adalah metode penghitungan jarak yang ampuh dan serbaguna yang harus dikuasai oleh lebih banyak dari kita. Dalam artikel ini, kita membahas makna mendasar dari fungsi kosinus dan tiga cara berbeda untuk menghitung kosinus. Kami juga mempelajari contoh langkah demi langkah penghitungan kesamaan kosinus untuk tiga kata yang dikodekan dalam enam dimensi. Saya harap menurut Anda bacaan ini informatif dan mudah diakses — dan hei, sekarang Anda dapat memberi tahu teman Anda bagaimana mesin pencari menghitung kesamaan antar kata! Saya yakin mereka tidak akan memandang Anda dengan wajah bingung dan meninggalkan Anda untuk anak-anak yang lebih populer. Saya yakin.

Pada bagian berikutnya dari seri ini, kita akan kembali ke topik jaringan saraf dan mengeksplorasi lebih detail bagaimana jaringan tersebut sebenarnya belajar melalui cara penurunan gradien. Kita akan mengeksplorasi beberapa konsep dasar dalam kalkulus dan model saraf, tentu saja dengan penjelasan dan grafik yang intuitif dan menyenangkan! Saya berharap dapat bertemu Anda nanti!

Sumber Daya Tambahan