Kursus Matematika untuk AI · Pelajaran 27 dari 180

Ruang Vektor: Uji Apakah Representasi AI Memenuhi Aturan

Uji vektor nol, ketertutupan penjumlahan, dan perkalian skalar, lalu gunakan embedding ternormalisasi sebagai contoh tandingan yang membedakan himpunan representasi yang berguna dari ruang vektor.

Bagikan artikel ini

Pipeline embedding dapat memaksa setiap vektor keluaran yang bukan nol memiliki panjang 11. Ini memudahkan perhitungan kemiripan, tetapi menimbulkan jebakan halus: keluaran yang dinormalisasi tidak membentuk ruang vektor di bawah penjumlahan vektor dan perkalian skalar biasa. Jumlahkan dua keluaran atau ubah skala salah satunya, dan hasilnya dapat keluar dari himpunan yang diizinkan.

Pelajaran ini menjadikan “ruang vektor” sebagai uji, bukan sekadar label. Setelah mempelajarinya, Anda dapat memeriksa vektor nol, ketertutupan penjumlahan dan perkalian skalar; menyusun satu contoh tandingan yang menentukan saat suatu aturan gagal; serta menjelaskan mengapa embedding ternormalisasi berada di dalam ruang vektor ambient tanpa membentuk ruang vektor itu sendiri.

Hasil belajar: Uji apakah suatu himpunan memenuhi aturan ketertutupan ruang vektor.

Pelajaran 17: Kombinasi linear membentuk vektor baru (dalam bahasa Inggris) memperkenalkan operasi ax+bya\boldsymbol{x}+b\boldsymbol{y}. Pelajaran 26: Grup, gelanggang, dan lapangan menjelaskan operasi yang valid (dalam bahasa Inggris) menunjukkan mengapa suatu himpunan dan operasinya harus dipertimbangkan bersama. Bagian 2.4 dari buku resmi Mathematics for Machine Learning merumuskan kombinasi tersebut sebagai ruang vektor. Uji, contoh tandingan embedding, kode, visual, dan penilaian di bawah ini adalah materi orisinal.

Ruang vektor menjamin kombinasi linear tetap berada di dalamnya

Misalkan VV adalah himpunan yang unsur-unsurnya disebut vektor. Dalam ruang vektor real, tersedia dua operasi:

+:V×V→V,⋅:R×V→V.+:V\times V\to V, \qquad \cdot:\mathbb{R}\times V\to V.

Operasi pertama menjumlahkan dua vektor. Operasi kedua mengalikan vektor dengan bilangan real, atau skalar. Panah yang berujung di VV menyatakan ketertutupan: kedua operasi harus menghasilkan anggota lain dari himpunan yang sama.

Ketertutupan saja belum merupakan definisi lengkap. Penjumlahan vektor juga harus memiliki vektor nol dan invers aditif; penjumlahan harus asosiatif dan komutatif; perkalian skalar harus memenuhi sifat asosiatif yang sesuai; serta aturan distributif dan identitas yang biasa harus berlaku.

Aturan untuk setiap skalar cukup ketat. Himpunan yang tetap tertutup saat dikalikan 22 tetapi gagal untuk −1-1, atau tertutup untuk skalar positif tetapi gagal untuk 00, bukan ruang vektor real.

Operasi warisan menyederhanakan pengujian

Sebagian besar pertanyaan praktis dimulai dengan himpunan kandidat U⊆RnU\subseteq\mathbb{R}^n yang menggunakan penjumlahan dan perkalian skalar biasa yang telah didefinisikan di Rn\mathbb{R}^n. Hukum aljabarnya diwarisi dari ruang ambient. Tugas yang tersisa adalah menentukan apakah hasil operasi pernah keluar dari UU.

Ada ketidaksimetrian penting dalam penggunaan uji ini:

  • Untuk membuktikan UU adalah ruang vektor, argumen ketertutupan harus mencakup setiap input yang diizinkan.
  • Untuk membuktikan UU bukan ruang vektor, satu contoh tandingan yang valid sudah cukup.

Memeriksa tiga vektor yang mudah dipilih tidak membuktikan ketertutupan universal. Menemukan satu pasangan yang jumlahnya keluar dari himpunan langsung membantahnya.

Contoh kerja: kendala yang tetap berlaku dalam kombinasi

Pertimbangkan himpunan

U={[x1x2]∈R2:x1+x2=0}.U=\left\{ \begin{bmatrix}x_1\\x_2\end{bmatrix}\in\mathbb{R}^2: x_1+x_2=0 \right\}.

Setiap vektor di UU berbentuk [t,−t]T[t,-t]^\mathsf{T}. Vektor nol termasuk dalam UU dengan memilih t=0t=0. Sekarang ambil vektor sembarang

u=[p−p],v=[q−q]\boldsymbol{u}=\begin{bmatrix}p\\-p\end{bmatrix}, \qquad \boldsymbol{v}=\begin{bmatrix}q\\-q\end{bmatrix}

and arbitrary scalars a,b∈Ra,b\in\mathbb{R}.

Untuk pemeriksaan numerik, pilih u=[2,−2]T\boldsymbol{u}=[2,-2]^\mathsf{T}, v=[−1,1]T\boldsymbol{v}=[-1,1]^\mathsf{T}, a=3a=3, dan b=−1b=-1:

3u−v=[6−6]+[1−1]=[7−7]∈U.3\boldsymbol{u}-\boldsymbol{v} =\begin{bmatrix}6\\-6\end{bmatrix} +\begin{bmatrix}1\\-1\end{bmatrix} =\begin{bmatrix}7\\-7\end{bmatrix}\in U.

Perhitungan ini menggambarkan aturannya, sedangkan argumen simbolis membuktikannya untuk semua nilai.

Embedding ternormalisasi gagal dalam uji yang sama

Sekarang definisikan himpunan dengan panjang satu

S={x∈Rd:∥x∥2=1}.S=\left\{\boldsymbol{x}\in\mathbb{R}^d: \lVert\boldsymbol{x}\rVert_2=1\right\}.

Ini adalah bola satuan dalam ruang vektor ambient Rd\mathbb{R}^d. Pustaka embedding dapat sengaja mengembalikan vektor dalam himpunan ini. Sebagai contoh, dokumentasi encode Sentence Transformers saat ini menjelaskan opsi normalize_embeddings yang menormalisasi vektor keluaran hingga panjang 11.

Dalam dua dimensi, ambil

e1=[10],e2=[01].\boldsymbol{e}_1=\begin{bmatrix}1\\0\end{bmatrix}, \qquad \boldsymbol{e}_2=\begin{bmatrix}0\\1\end{bmatrix}.

Keduanya memiliki norma Euclidean 11, sehingga berada di SS. Jumlahnya adalah

e1+e2=[11],∥[11]∥2=12+12=2.\boldsymbol{e}_1+\boldsymbol{e}_2 =\begin{bmatrix}1\\1\end{bmatrix}, \qquad \left\lVert\begin{bmatrix}1\\1\end{bmatrix}\right\rVert_2 =\sqrt{1^2+1^2}=\sqrt{2}.

Karena 2≠1\sqrt{2}\ne1, jumlahnya berada di luar SS. Ketertutupan perkalian skalar juga gagal:

2e1=[20],∥2e1∥2=2.2\boldsymbol{e}_1=\begin{bmatrix}2\\0\end{bmatrix}, \qquad \lVert2\boldsymbol{e}_1\rVert_2=2.

Vektor nol menjadi kegagalan ketiga karena normanya 00, bukan 11.

Contoh tandingan ketertutupan statis

Lingkaran satuan tidak tertutup terhadap kombinasi linear biasa

Lingkaran biru memuat semua vektor dua dimensi dengan norma Euclidean 1. Vektor satuan bergaris utuh dan putus-putus bermula di dalam himpunan, sedangkan jumlahnya, vektor yang diperbesar, dan vektor nol tidak memenuhi syarat keanggotaan.

Kegagalan ketertutupan pada lingkaran satuanBidang koordinat menampilkan lingkaran satuan berpusat di nol. Ujung vektor e satu dan e dua berada pada lingkaran. Jumlah keduanya berada di luar lingkaran, dua kali e satu berakhir lebih jauh di luar, dan nol berada di pusat, bukan pada lingkaran.koordinat x₁koordinat x₂S: ‖x‖₂ = 1e₁ = (1, 0)e₂ = (0, 1)e₁ + e₂ = (1, 1)2e₁ = (2, 0)0 = (0, 0)
Lingkaran adalah himpunan yang diizinkan, bukan seluruh bidang ambient. Pola garis, cincin ujung, label, dan tabel yang tepat membuat setiap kegagalan keanggotaan terbaca tanpa mengandalkan warna.
Pemeriksaan keanggotaan tepat yang digambarkan
Uji ketertutupanInput dalam SHasilNorma hasilStatus
Penjumlahane₁ dan e₂e₁ + e₂ = (1, 1)√2Di luar S
Perkalian skalar2 dan e₁2e₁ = (2, 0)2Di luar S
Vektor nolIdentitas aditif yang diwajibkan0 = (0, 0)0Bukan anggota S

Satu baris saja cukup untuk membantah bahwa himpunan ini ruang vektor. Ketiga baris menunjukkan persyaratan yang berbeda, sehingga memperbaiki satu kegagalan tidak memperbaiki kegagalan lainnya.

Visual menggunakan d=2d=2 karena geometrinya muat dalam satu halaman. Contoh tandingan skalar yang sama berlaku di setiap dimensi: jika ∥x∥2=1\lVert\boldsymbol{x}\rVert_2=1, maka ∥2x∥2=2\lVert2\boldsymbol{x}\rVert_2=2. Jadi, embedding yang dinormalisasi satuan di Rd\mathbb{R}^d bukan ruang vektor dengan operasi biasa.

Normalisasi ulang mengubah operasinya

Pipeline yang umum menjumlahkan atau merata-ratakan embedding ternormalisasi, lalu menormalisasi hasilnya lagi. Prosedur ini dapat berguna, tetapi normalisasi terakhir adalah operasi nonlinear baru:

normalize⁡(x+y)=x+y∥x+y∥2,\operatorname{normalize}(\boldsymbol{x}+\boldsymbol{y}) =\frac{\boldsymbol{x}+\boldsymbol{y}} {\lVert\boldsymbol{x}+\boldsymbol{y}\rVert_2},

dengan syarat penyebutnya bukan nol. Jumlah mentah mula-mula keluar dari bola satuan; normalisasi memetakannya kembali. Memetakan hasil kembali ke SS tidak membuat SS tertutup terhadap operasi penjumlahan semula.

Kasus nol penting. Jika y=−x\boldsymbol{y}=-\boldsymbol{x}, then x+y=0\boldsymbol{x}+\boldsymbol{y}=\boldsymbol{0}, dan membaginya dengan norma berarti membagi dengan nol. Implementasi memerlukan kebijakan eksplisit untuk baris nol atau hampir nol.

Dokumentasi linalg.norm NumPy menjelaskan kontrol axis dan keepdims yang digunakan di bawah ini untuk menghitung satu norma per embedding sambil mempertahankan bentuk kolom yang dapat disiarkan (broadcast):

import numpy as np


def normalize_rows(vectors):
    vectors = np.asarray(vectors, dtype=float)
    norms = np.linalg.norm(vectors, axis=1, keepdims=True)
    normalized = np.divide(
        vectors,
        norms,
        out=np.zeros_like(vectors),
        where=norms > 0,
    )
    return normalized


embeddings = np.array([
    [3.0, 4.0],
    [-4.0, 3.0],
    [0.0, 0.0],
])

normalized = normalize_rows(embeddings)
print(normalized)
print(np.linalg.norm(normalized, axis=1))

Keluaran yang dihasilkan adalah

[[ 0.6  0.8]
 [-0.8  0.6]
 [ 0.   0. ]]
[1. 1. 0.]

Dua baris pertama berada pada lingkaran satuan. Baris nol tetap nol karena fungsi ini sengaja menggunakan nol sebagai nilai cadangan teknis. Nilai cadangan itu termasuk dalam R2\mathbb{R}^2 tetapi tidak dalam SS, jadi pemanggil tidak boleh menyatakan bahwa setiap keluaran memiliki norma satu.

Pemeriksaan ketertutupan yang andal meninjau operasi yang sebenarnya

Saat deskripsi model menyebut kumpulan representasi sebagai “ruang”, kenali himpunan dan operasinya sebelum mengasumsikan adanya struktur linear. Embedding mentah dapat berada di Rd\mathbb{R}^d. Embedding ternormalisasi satuan berada pada bola. Vektor probabilitas dengan koordinat nonnegatif yang berjumlah 11 berada dalam himpunan terbatas lain. Masing-masing dapat mendukung algoritma yang berguna, tetapi penjumlahan biasa dan perkalian dengan sembarang skalar real belum tentu mempertahankan hasil di dalam himpunan.

Pelajaran berikutnya membahas subruang: subset terbatas yang lolos uji ketertutupan sehingga mempertahankan struktur linear ambient. Sebelum melanjutkan, gunakan pertanyaan di bawah untuk berlatih membuktikan ketertutupan universal dan menemukan kegagalan yang menentukan.

Periksa pemahaman Anda

Pertanyaan 1

Untuk subset tak kosong dari Rⁿ dengan operasi vektor biasa, tiga pemeriksaan keanggotaan apa yang memastikan bahwa subset itu merupakan ruang vektor?

Tampilkan solusi langkah demi langkah

Pertama, periksa apakah vektor nol termasuk dalam himpunan. Kedua, pilih x\boldsymbol{x} dan y\boldsymbol{y} sembarang di himpunan, lalu buktikan bahwa x+y\boldsymbol{x}+\boldsymbol{y} tetap berada di dalamnya. Ketiga, pilih skalar real aa dan x\boldsymbol{x} sembarang di himpunan, lalu buktikan bahwa axa\boldsymbol{x} tetap berada di dalamnya. Hukum ruang vektor lainnya diwarisi dari Rn\mathbb{R}^n.

Pertanyaan 2

Tunjukkan bahwa U = {(t, −t): t ∈ R} tertutup terhadap kombinasi linear a u + b v.

Tampilkan solusi langkah demi langkah

Ambil u=(p,−p)\boldsymbol{u}=(p,-p) dan v=(q,−q)\boldsymbol{v}=(q,-q) sembarang di UU, dengan aa dan bb real sembarang. Maka

au+bv=(ap+bq,−ap−bq).a\boldsymbol{u}+b\boldsymbol{v} =(ap+bq,-ap-bq).

Tetapkan t=ap+bqt=ap+bq. Hasilnya adalah (t,−t)(t,-t), sesuai dengan bentuk definisi UU. Karena input dan skalarnya sembarang, ini membuktikan ketertutupan dan bukan sekadar memeriksa satu contoh.

Pertanyaan 3

Gunakan e₁ = (1, 0) dan e₂ = (0, 1) untuk membantah ketertutupan penjumlahan vektor ternormalisasi satuan.

Tampilkan solusi langkah demi langkah

Kedua input memiliki norma 11, sehingga keduanya termasuk dalam himpunan ternormalisasi satuan. Jumlahnya (1,1)(1,1) dengan norma 12+12=2\sqrt{1^2+1^2}=\sqrt{2}, bukan 11. Jadi dua anggota yang valid menghasilkan keluaran di luar himpunan. Satu pasangan seperti ini membantah ketertutupan penjumlahan.

Pertanyaan 4

Apakah mengalikan setiap vektor satuan dengan −1 membantah ketertutupan skalar? Jika tidak, pilih skalar yang membantahnya.

Tampilkan solusi langkah demi langkah

Tidak. Jika ∥x∥2=1\lVert\boldsymbol{x}\rVert_2=1, maka ∥−x∥2=1\lVert-\boldsymbol{x}\rVert_2=1, sehingga skalar −1-1 mempertahankan setiap vektor satuan pada bola. Namun, ketertutupan skalar harus berlaku untuk setiap skalar real. Dengan memilih a=2a=2, diperoleh ∥2x∥2=2\lVert2\boldsymbol{x}\rVert_2=2, sehingga 2x2\boldsymbol{x} berada di luar bola satuan dan membantah ketertutupan.

Pertanyaan 5

Mengapa normalisasi baris harus menangani vektor nol secara eksplisit?

Tampilkan solusi langkah demi langkah

Rumus biasa membagi x\boldsymbol{x} dengan ∥x∥2\lVert\boldsymbol{x}\rVert_2. Untuk x=0\boldsymbol{x}=\boldsymbol{0}, normanya 00, sehingga rumus meminta pembagian dengan nol dan tidak terdefinisi. Kode harus mendeteksi kasus ini dan memilih kebijakan yang terdokumentasi, misalnya mengembalikan nol, memunculkan galat, atau menyaring baris tersebut. Mengembalikan nol praktis dalam beberapa pipeline, tetapi hasilnya tidak ternormalisasi satuan.

Pertanyaan 6

Sebuah pipeline merata-ratakan dua embedding satuan lalu menormalisasi rata-ratanya. Mengapa hal itu tidak membuktikan bola satuan adalah ruang vektor?

Tampilkan solusi langkah demi langkah

Pertama, hitung rata-rata biasa: m=(x+y)/2\boldsymbol{m}=(\boldsymbol{x}+\boldsymbol{y})/2. Normanya tidak harus 11, sehingga kombinasi linear ini dapat keluar dari bola. Pipeline lalu menerapkan pemetaan normalisasi terpisah m/∥m∥2\boldsymbol{m}/\lVert\boldsymbol{m}\rVert_2 untuk mengembalikannya ke bola. Uji ketertutupan memeriksa penjumlahan dan perkalian skalar asli; menambahkan langkah perbaikan mengubah operasi yang sedang dikaji.

Pertanyaan 7

Kuadran nonnegatif Q = {(x₁, x₂): x₁ ≥ 0 dan x₂ ≥ 0} memuat nol dan tertutup terhadap penjumlahan. Apakah Q merupakan ruang vektor real?

Tampilkan solusi langkah demi langkah

Bukan. Pilih x=(1,0)\boldsymbol{x}=(1,0) yang termasuk dalam QQ dan skalar real a=−1a=-1. Maka ax=(−1,0)a\boldsymbol{x}=(-1,0), dengan koordinat pertama negatif, sehingga hasilnya berada di luar QQ. Himpunan ini gagal memenuhi ketertutupan skalar meskipun memuat nol dan tertutup terhadap penjumlahan.

Sumber

  1. Mathematics for Machine Learning companion website
  2. Mathematics for Machine Learning book PDF
  3. NumPy documentation: numpy.linalg.norm
  4. Sentence Transformers documentation: SentenceTransformer.encode