Kursus Matematika untuk AI · Pelajaran 32 dari 180

Dimensi Menghitung Arah-Arah yang Independen

Bedakan jumlah koordinat embedding dari jumlah sampel, lalu pelajari mengapa bentuk matriks saja tidak memberi tahu berapa banyak arah independen yang direntang vektornya.

Bagikan artikel ini

Satu batch embedding dapat memiliki empat baris dan ratusan koordinat di setiap baris. Angka pertama menunjukkan banyaknya masukan yang dienkode; angka kedua menunjukkan lebar koordinat setiap keluaran. Masing-masing angka itu, jika dilihat sendiri, tidak memberi tahu berapa banyak arah independen yang benar-benar digunakan oleh vektor-vektor yang diamati.

Dalam pelajaran ini, kita akan membaca jumlah-jumlah itu secara terpisah, menghubungkan dimensi dengan banyaknya vektor dalam basis, dan melihat mengapa dua array dengan bentuk yang sama dapat merentang ruang dengan dimensi berbeda. Pembedaan ini berguna saat membaca API embedding, memperkirakan apa yang dapat diketahui dari sebuah batch, atau menjelaskan representasi tanpa mencampuradukkan contoh yang tersimpan dengan ruang yang menampungnya.

Pelajaran sebelumnya menunjukkan bagaimana basis memberikan deskripsi koordinat untuk setiap vektor. Pelajaran 31: Basis memberi sistem koordinat yang ringkas menetapkan gagasan penting yang kita perlukan di sini: basis merentang ruang tanpa arah yang mubazir. Situs pendamping resmi Mathematics for Machine Learning membahas dimensi dalam Bagian 2.6 pada PDF buku. Kumpulan data kecil, kode, visual, dan penilaian dalam pelajaran ini adalah karya orisinal.

Basis memberi dimensi sebuah hitungan

Ingat bahwa basis adalah himpunan vektor yang bebas linear dan merentang ruang vektor. Jika setiap vektor dalam ruang VV dapat dijelaskan menggunakan basis BB, maka dimensi VV adalah banyaknya vektor dalam basis itu:

dim⁡(V)=∣B∣.\dim(V)=|B|.

Notasi ∣B∣|B| berarti “banyaknya elemen dalam himpunan BB.” Notasi itu tidak menghitung banyaknya entri untuk menuliskan satu vektor basis. Setiap basis bagi ruang berdimensi hingga memiliki jumlah vektor yang sama, meskipun vektor-vektor basisnya dapat berbeda. Hitungan inilah yang menjadikan dimensi sebagai sifat ruang, bukan sifat satu sistem koordinat tertentu.

Setiap vektor di atas memiliki tiga koordinat, tetapi itu bukan definisi dimensi. Hal yang menentukan adalah ketiga vektor tersebut membentuk basis: bersama-sama mereka menghasilkan setiap vektor di R3\mathbb{R}^3, dan tidak ada yang merupakan kombinasi linear dari dua vektor lainnya. Basis lain dapat menunjuk ke arah yang berbeda dan tetap memiliki tepat tiga vektor.

Empat sampel tetap dapat berada dalam ruang berdimensi tiga

Misalkan sebuah encoder menghasilkan empat vektor di R3\mathbb{R}^3:

x1=e1,x2=e2,x3=e3,x4=e1+e2+e3.x_1=e_1,\qquad x_2=e_2,\qquad x_3=e_3,\qquad x_4=e_1+e_2+e_3.

Simpan setiap vektor sebagai satu baris matriks:

Xfull=[100010001111]∈R4×3.X_{\text{full}}= \begin{bmatrix} 1&0&0\\ 0&1&0\\ 0&0&1\\ 1&1&1 \end{bmatrix}\in\mathbb{R}^{4\times3}.

Bentuknya adalah (4,3)(4,3): empat baris dan tiga kolom. Di sini, baris adalah sampel dan kolom memuat tiga koordinat setiap sampel. Tiga baris pertama merupakan basis standar, sehingga keempat sampel merentang seluruh R3\mathbb{R}^3. Baris keempat menambah satu sampel, tetapi bukan arah independen baru, karena x4=x1+x2+x3x_4=x_1+x_2+x_3. Ruang vektornya berdimensi tiga; batch-nya memiliki empat contoh.

Sekarang bandingkan dengan batch ini:

Xline=[100200−100300]∈R4×3.X_{\text{line}}= \begin{bmatrix} 1&0&0\\ 2&0&0\\ -1&0&0\\ 3&0&0 \end{bmatrix}\in\mathbb{R}^{4\times3}.

Bentuknya sama, yaitu (4,3)(4,3), tetapi setiap baris merupakan kelipatan e1=(1,0,0)e_1=(1,0,0). Satu vektor, e1e_1, merentang keempat sampel, sehingga rentang mereka adalah sebuah garis berdimensi satu. Ruang koordinat ambiennya tetap R3\mathbb{R}^3; sampel-sampel tertentu ini hanya menempati subruang berdimensi satu.

Dimensi embedding dan bentuk batch

Bentuk empat-kali-tiga yang sama dapat merentang tiga arah atau satu arah

Kedua batch berisi empat sampel dengan masing-masing tiga koordinat. Tabel koordinat menunjukkan nilai yang tepat; diagram merangkum jumlah arah independen yang digunakan baris-barisnya.

Tiga arah independen

Bentuk: 4 sampel × 3 koordinat

Tiga baris pertama adalah basis standar ruang tiga dimensi. Baris keempat merupakan jumlah ketiganya, sehingga rentang sampel berdimensi tiga.
SampelKoordinat 1Koordinat 2Koordinat 3
x₁100
x₂010
x₃001
x₄111
Arah independen yang digunakan dua batch dengan bentuk samaTiga baris pertama adalah basis standar ruang tiga dimensi. Baris keempat merupakan jumlah ketiganya, sehingga rentang sampel berdimensi tiga.0e₁e₂e₃
Tiga baris pertama adalah basis standar ruang tiga dimensi. Baris keempat merupakan jumlah ketiganya, sehingga rentang sampel berdimensi tiga.

Dimensi rentang sampel3 arah

Satu arah independen

Bentuk: 4 sampel × 3 koordinat

Setiap baris merupakan kelipatan arah koordinat pertama. Jadi, empat sampel hanya merentang sebuah garis yang berdimensi satu.
SampelKoordinat 1Koordinat 2Koordinat 3
x₁100
x₂200
x₃−100
x₄300
Arah independen yang digunakan dua batch dengan bentuk samaSetiap baris merupakan kelipatan arah koordinat pertama. Jadi, empat sampel hanya merentang sebuah garis yang berdimensi satu.x₃x₁x₂x₄−1123e₁
Setiap baris merupakan kelipatan arah koordinat pertama. Jadi, empat sampel hanya merentang sebuah garis yang berdimensi satu.

Dimensi rentang sampel1 arah

Baris menghitung masukan, kolom menghitung koordinat yang disimpan, dan vektor basis menghitung arah independen. Tabel menunjukkan data yang tepat; sketsa arah kecil hanya bersifat skematis.

Bentuk memberi tahu cara sebuah array disimpan. Bentuk tidak mengungkap apakah baris-barisnya independen; nilai dan hubungan di antaranya menentukan dimensi rentangnya.

Diagram tersebut memisahkan tiga pertanyaan: berapa banyak masukan yang dienkode, berapa banyak koordinat pada setiap keluaran, dan berapa banyak arah yang direntang oleh keluaran tertentu itu. Kedua array berbentuk sama, tetapi hanya batch pertama yang menjangkau semua arah di R3\mathbb{R}^3.

NumPy melaporkan bentuk, bukan basis

Properti ndarray.shape NumPy adalah tuple yang memuat panjang setiap sumbu array. Untuk matriks dua dimensi yang disimpan sebagai NN baris dengan masing-masing dd koordinat, tuple itu adalah (N, d). Bentuk memberi tahu bagaimana nilai-nilai disusun. Untuk mengetahui dimensi sebuah rentang, kita juga harus menalar apakah beberapa baris dapat dibentuk dari baris lainnya.

Berikut contoh sintetis yang langsung dikodekan dengan NumPy:

import numpy as np

full = np.array([
    [1.0, 0.0, 0.0],
    [0.0, 1.0, 0.0],
    [0.0, 0.0, 1.0],
    [1.0, 1.0, 1.0],
])

line = np.array([
    [1.0, 0.0, 0.0],
    [2.0, 0.0, 0.0],
    [-1.0, 0.0, 0.0],
    [3.0, 0.0, 0.0],
])

print(full.shape, line.shape)
print(np.allclose(full[3], full[0] + full[1] + full[2]))
print(np.allclose(
    line,
    np.array([1.0, 2.0, -1.0, 3.0])[:, None]
    * np.array([1.0, 0.0, 0.0]),
))

Keluaran:

(4, 3) (4, 3)
True
True

Baris pertama menegaskan bahwa kedua matriks memiliki empat baris dan tiga koordinat per baris. True pertama memverifikasi bahwa sampel terakhir pada full adalah jumlah ketiga baris basis. Hasil kedua memverifikasi bahwa setiap sampel line merupakan kelipatan e1e_1 seperti yang dinyatakan. Hubungan itu mendasari dimensi rentangnya: tiga untuk full dan satu untuk line.

Dokumentasi bentuk NumPy mendefinisikan bentuk sebagai tuple dimensi array. Ini adalah deskripsi penyimpanan, bukan jaminan bahwa semua koordinat berubah secara independen. Pemeriksaan singkat len(full.shape) menghasilkan dua karena full memiliki dua sumbu array. Angka itu juga berbeda dari dimensi tiga pada ruang embedding-nya.

Sumbu batch bukan sumbu embedding

Pembedaan ini juga muncul dalam kode AI nyata. Dokumentasi penggunaan Sentence Transformers mengodekan tiga kalimat dengan all-MiniLM-L6-v2 dan melaporkan array embedding berbentuk [3, 384]. Panjang pertama berkaitan dengan tiga kalimat yang diberikan; angka kedua adalah lebar koordinat keluaran. API model menyediakan get_embedding_dimension() untuk lebar keluaran, dan metode encode-nya mengembalikan embedding untuk masukan yang diberikan.

Untuk satu juta dokumen tersimpan dengan encoder yang sama, korpus dapat memiliki satu juta baris, sementara setiap baris tetap selebar 384 angka. Memperbesar korpus menambah jumlah vektor; itu tidak mengubah ruang embedding menjadi berdimensi satu juta. Sebaliknya, empat keluaran di R384\mathbb{R}^{384} tidak dapat merentang semua 384 dimensi, sebab empat vektor hanya dapat menyediakan paling banyak empat arah independen. Rentangnya mungkin lebih kecil jika beberapa keluaran mengulang arah atau merupakan kombinasi linear vektor lainnya.

Ada satu batas lain yang perlu diingat: lebar keluaran menjelaskan model dan konfigurasi yang dipilih, bukan sifat universal teksnya. Sentence Transformers mengizinkan dimensi pemotongan keluaran ditentukan dalam encode; jika konfigurasi itu diubah, lebar koordinat yang dikembalikan juga berubah. API encode mendokumentasikan opsi truncate_dim. Vektor-vektor itu tetap perlu dibandingkan dalam ruang koordinat yang kompatibel. Dimensi yang lebih besar saja tidak menjamin embedding mempertahankan lebih banyak makna yang berguna; representasinya perlu dievaluasi untuk tugas yang dituju.

Dimensi menghitung arah independen pada suatu basis. Bentuk menghitung panjang sumbu array, sedangkan batch menghitung sampel. Setelah kita tidak lagi menyebut jumlah-jumlah itu dengan label yang sama, pertanyaan berikutnya menjadi lebih mudah diajukan: berapa banyak arah independen yang dimiliki baris-baris sebenarnya? Pelajaran 33 memperkenalkan rank matriks untuk menghitung dimensi efektif itu secara sistematis.

Periksa pemahamanmu

Pertanyaan 1

Sebuah basis B untuk ruang vektor berisi lima vektor. Berapa dimensi ruang itu, dan mengapa jumlah koordinat yang tertulis di dalam satu vektor basis tidak menentukannya?

Tampilkan solusi langkah demi langkah

Ruang tersebut berdimensi lima karena dimensi didefinisikan sebagai jumlah vektor dalam basis: dim⁡(V)=∣B∣=5\dim(V)=|B|=5. Daftar koordinat menjelaskan satu vektor relatif terhadap suatu sistem koordinat. Entri-entrinya bukan vektor basis yang terpisah dalam VV, jadi menghitungnya menjawab pertanyaan lain.

Pertanyaan 2

Sebuah encoder menghasilkan array berbentuk (7, 12), dan setiap baris adalah satu embedding. Berapa jumlah sampelnya, berapa koordinat setiap embedding, dan berapa dimensi ruang koordinat ambiennya?

Tampilkan solusi langkah demi langkah

Entri bentuk pertama menunjukkan tujuh baris, jadi ada tujuh sampel. Entri kedua menunjukkan dua belas koordinat pada setiap baris. Jika semuanya adalah vektor padat biasa pada koordinat keluaran encoder, ruang ambiennya adalah R12\mathbb{R}^{12} yang berdimensi 12. Ketujuh sampel tidak mengubah dimensi ruang koordinat tersebut.

Pertanyaan 3

Untuk x₁ = (1, 0, 0), x₂ = (0, 1, 0), x₃ = (0, 0, 1), dan x₄ = (1, 1, 1), berapa banyak sampel yang ada dan berapa dimensi rentangnya? Tunjukkan hubungan ketergantungan yang kamu gunakan.

Tampilkan solusi langkah demi langkah

Ada empat sampel. Tiga yang pertama adalah vektor basis standar di R3\mathbb{R}^3, jadi ketiganya independen dan merentang ruang berdimensi tiga. Vektor keempat memenuhi x4=x1+x2+x3x_4=x_1+x_2+x_3, sehingga tidak menambahkan arah baru. Rentangnya berdimensi tiga, bukan empat.

Pertanyaan 4

Empat baris berbentuk (c, 0, 0), dengan c bernilai 1, 2, −1, dan 3. Berapa dimensi rentangnya dan basis apa yang dapat kamu berikan?

Tampilkan solusi langkah demi langkah

Setiap baris sama dengan c(1,0,0)c(1,0,0). Jadi, keempat vektor berada pada garis {t(1,0,0):t∈R}\{t(1,0,0):t\in\mathbb{R}\}. Vektor tak nol (1,0,0)(1,0,0) merentang garis tersebut, dan himpunan satu elemen {(1,0,0)}\{(1,0,0)\} adalah sebuah basis. Rentangnya berdimensi satu.

Pertanyaan 5

Dua matriks data sama-sama berbentuk (4, 3). Apakah rentang baris keduanya dapat memiliki dimensi berbeda? Berikan penjelasan konkret dengan menggunakan dua contoh dalam pelajaran ini.

Tampilkan solusi langkah demi langkah

Ya. Pada full, tiga baris pertama adalah tiga vektor basis standar, sehingga baris-baris itu merentang R3\mathbb{R}^3 dan rentang barisnya berdimensi tiga. Pada line, keempat baris merupakan kelipatan (1,0,0)(1,0,0), sehingga merentang garis dengan dimensi satu. Bentuk mencatat jumlah baris dan kolom; bentuk tidak menyimpan hubungan linear antara nilai-nilai baris.

Pertanyaan 6

Jika N vektor berada di ℝᵈ, jelaskan mengapa dimensi r dari rentangnya tidak dapat melebihi N maupun d.

Tampilkan solusi langkah demi langkah

Ke-NN vektor itu sendiri membangkitkan rentangnya. Setelah vektor yang mubazir dihilangkan, tersisa paling banyak NN vektor basis yang independen, sehingga r≤Nr\leq N. Rentang tersebut juga merupakan subruang dari Rd\mathbb{R}^d, yang berdimensi dd, jadi r≤dr\leq d. Menggabungkan kedua batas itu menghasilkan r≤min⁡(N,d)r\leq\min(N,d).

Pertanyaan 7

Sentence Transformers mendokumentasikan bentuk keluaran [3, 384] untuk tiga kalimat yang dienkode. Angka mana yang menyatakan jumlah sampel, mana yang menyatakan lebar embedding, dan dapatkah ketiga keluaran itu merentang seluruh ℝ³⁸⁴? Jelaskan.

Tampilkan solusi langkah demi langkah

Ada tiga sampel kalimat dan setiap vektor keluaran memiliki 384 koordinat. Ruang embedding ambiennya adalah R384\mathbb{R}^{384}. Tiga vektor paling banyak dapat merentang tiga arah independen, jadi tidak dapat merentang seluruh 384 dimensi. Rentangnya dapat lebih kecil dari tiga jika beberapa keluaran saling bergantung.

Pertanyaan 8

Sebuah array NumPy X berbentuk (5, 9). Mengapa len(X.shape) sama dengan 2 tanpa berarti embedding-nya berdimensi dua?

Tampilkan solusi langkah demi langkah

X.shape memiliki satu entri untuk setiap sumbu array: lima baris dan sembilan kolom. Jadi, array tersebut memiliki dua sumbu dan len(X.shape) menghitung kedua sumbu itu. Jika setiap baris adalah embedding dengan sembilan koordinat, ruang embedding ambiennya adalah R9\mathbb {R}^9 dan berdimensi sembilan. Sumbu array dan arah basis ruang vektor adalah hitungan yang berbeda.

Sumber

  1. Mathematics for Machine Learning companion website
  2. Mathematics for Machine Learning book PDF
  3. Sentence Transformers usage documentation
  4. Sentence Transformers model API documentation
  5. NumPy ndarray.shape documentation