Kursus Matematika untuk AI · Pelajaran 26 dari 180

Group, Ring, dan Field: Mengapa Operasi AI Membutuhkan Aturan

Pelajari bagaimana closure, invers, dan distributivitas menentukan operasi tensor yang sah, lalu uji gagasan tersebut dengan NumPy.

Bagikan artikel ini

Model AI dapat menjumlahkan dua vektor, menskalakan matriks bobot, dan mengalikan satu batch melalui sebuah layer karena angka dalam tensor tersebut mematuhi kumpulan aturan yang berguna. Aturan itu mudah dianggap begitu saja. Aturan tersebut juga menjadi alasan derivasi linear dapat disusun ulang tanpa mengubah maknanya.

Tujuan pembelajaran: Bedakan asumsi closure, invers, dan distributivitas pada tingkat intuitif, lalu gunakan ketiganya untuk menjelaskan mengapa operasi tensor umum dimodelkan di atas field bilangan real.

Prasyaratnya adalah Lesson 10: Reading a derivation line by line, tempat langkah aljabar pertama yang salah menjadi petunjuk debugging. Di sini, pertanyaannya sedikit lebih awal: langkah aljabar mana yang memang sah sejak awal? Situs pendamping resmi Mathematics for Machine Learning memetakan pelajaran ini ke Bagian 2.4 dari book PDF. Definisi, contoh, kode, visual, dan interpretasi AI di bawah ini bersifat orisinal.

Sebelum melakukan operasi, tanyakan di mana hasilnya berada

Operasi lebih dari sekadar simbol seperti ++ atau ×\times. Operasi juga membuat janji tentang input dan outputnya. Jika SS adalah suatu himpunan dan ⊙\mathbin{\odot} adalah sebuah operasi, closure berarti

⊙:S×S→S.\mathbin{\odot}: S\times S\to S.

Panah itu menyatakan bahwa dua anggota SS masuk dan anggota SS lainnya keluar. Jika hasilnya dapat keluar dari SS, ekspresi yang bermula di SS tidak lagi sepenuhnya berada di dalam sistem tersebut.

Sebagai contoh, bilangan bulat tak negatif

N0={0,1,2,3,…}\mathbb{N}_0=\{0,1,2,3,\ldots\}

tertutup terhadap penjumlahan: 4+7=114+7=11 masih tak negatif. Namun, himpunan ini tidak tertutup terhadap pengurangan: 4−7=−34-7=-3 keluar dari himpunan. Closure selalu relatif terhadap operasi tertentu; himpunan yang sama dapat tertutup untuk satu operasi dan tidak untuk operasi lainnya.

Peta validitas operasi

Setiap struktur menambahkan jaminan

Baca dari kiri ke kanan: field mempertahankan semua jaminan yang ditunjukkan ring dan menambahkan satu aturan tentang pembagian dengan skalar tak nol.

Group, ring, dan field menambahkan jaminan operasi Tiga kartu yang terhubung menunjukkan bahwa group memiliki satu operasi dengan closure, asosiativitas, elemen identitas, dan invers. Ring menambahkan operasi kedua dan distributivitas. Field menambahkan invers perkalian untuk setiap elemen tak nol.lebih banyak jaminan aljabarGroupsatu operasi ⊙✓ closure: x ⊙ y tetap di G✓ asosiativitas✓ elemen identitas✓ invers untuk setiap xAnda dapat menggabungkan dan membatalkan.Ringpenjumlahan + perkalian✓ penjumlahan membentuk group✓ perkalian bersifat tertutup✓ perkalian bersifat asosiatif✓ hukum distributifPembagian masih bisa gagal.Fieldring dengan pembagian✓ semua jaminan ring✓ 1 adalah identitas perkalian✓ setiap x tak nol memiliki x⁻¹Skalar real berada di sini.
Struktur aljabar adalah kontrak: setiap jaminan tambahan membuat lebih banyak transformasi dan penyusunan ulang aman digunakan.
Padanan semantik peta validitas operasi
StrukturOperasiJaminanKonsekuensi praktis
GroupSatu operasi, ⊙Closure, asosiativitas, identitas, inversGabungkan dan batalkan elemen di bawah ⊙.
RingPenjumlahan dan perkalianPenjumlahan adalah group; perkalian distributif terhadap penjumlahanKembangkan dan susun ulang aritmetika, tetapi pembagian tidak otomatis berlaku.
FieldPenjumlahan dan perkalianRing yang setiap elemen tak nolnya memiliki invers perkalianSkalar tak nol dapat dibagi keluar dari kombinasi linear.

Peta ini adalah janji ringkas tentang apa yang diberikan oleh setiap nama. Peta ini tidak mengatakan bahwa setiap himpunan dengan simbol yang familier otomatis merupakan group, ring, atau field. Kita tetap harus memeriksa aturan yang relevan.

Group menjaga satu operasi tetap dapat dinavigasi

Bilangan bulat dengan penjumlahan, (Z,+)(\mathbb{Z},+), membentuk group. Identitasnya adalah 00, dan invers dari 77 adalah −7-7 karena 7+(−7)=07+(-7)=0. Bilangan bulat tak negatif dengan penjumlahan bukan group: himpunan itu memiliki identitas, tetapi invers dari 77 seharusnya −7-7, yang tidak berada di N0\mathbb{N}_0.

Bilangan real dengan perkalian, (R,×)(\mathbb{R},\times), juga bukan group karena 00 tidak memiliki invers perkalian. Jika nol dihapus, hasilnya (R∖{0},×)(\mathbb{R}\setminus\{0\},\times) adalah group Abelian: perkalian asosiatif dan komutatif, 11 adalah identitas, dan setiap bilangan real tak nol memiliki kebalikan.

Jadi, invers menjawab pertanyaan konkret: dapatkah operasi ini dibatalkan sambil tetap berada dalam himpunan yang sama? Itu berguna dalam transformasi, tetapi berlaku untuk satu operasi pada satu waktu. Group terhadap penjumlahan tidak otomatis mengizinkan pembagian.

Ring menambahkan operasi kedua

Ring menggabungkan penjumlahan dan perkalian. Dalam konvensi yang dipakai di sini, ring memiliki identitas perkalian 11 dan mengikuti aturan berikut:

  • elemennya membentuk group Abelian di bawah penjumlahan;
  • perkalian tertutup dan asosiatif;
  • perkalian distributif terhadap penjumlahan:
a(b+c)=ab+ac,(a+b)c=ac+bc.a(b+c)=ab+ac, \qquad (a+b)c=ac+bc.

Bilangan bulat Z\mathbb{Z} adalah ring di bawah penjumlahan dan perkalian biasa. Misalnya, perkalian distributif terhadap penjumlahan karena

3(4+(−2))=3⋅2=63(4+(-2)) = 3\cdot 2 = 6

dan

3⋅4+3⋅(−2)=12−6=6.3\cdot4 + 3\cdot(-2)=12-6=6.

Namun Z\mathbb{Z} bukan field. Bilangan 22 tidak memiliki invers perkalian di dalam bilangan bulat: persamaan 2q=12q=1 akan membutuhkan q=1/2q=1/2, yang bukan bilangan bulat. Ring mengizinkan penjumlahan, perkalian, dan distributivitas; ring tidak menjanjikan bahwa setiap elemen tak nol dapat dibagi keluar.

Field membuat aljabar skalar lengkap

Field adalah ring komutatif yang setiap elemennya yang tak nol memiliki invers perkalian. Bilangan rasional Q\mathbb{Q} dan bilangan real R\mathbb{R} adalah field. Bilangan bulat bukan.

Kata “field” mengacu pada skalar, bukan bentuk tensor. Vektor dalam Rn\mathbb{R}^n memiliki nn koordinat real; matriks dalam Rm×n\mathbb{R}^{m\times n} memiliki mnmn koordinat real. Entri keduanya berasal dari suatu field walaupun vektor dan matriks itu sendiri adalah jenis objek yang berbeda.

Perbedaan ini penting ketika derivasi memindahkan skalar melewati penjumlahan atau membagi dengan koefisien tak nol. Di dalam field, langkah-langkah itu memiliki dukungan aljabar yang diperlukan. Di dalam ring, sebagian sah dan sebagian lainnya mungkin tidak.

Contoh kerja: verifikasi aturan dengan angka kecil

Gunakan dua tes kecil. Pertama, penjumlahan modulo 44 memiliki elemen {0,1,2,3}\{0,1,2,3\}. Hasil 3+2=53+2=5 direpresentasikan sebagai 11 setelah berputar kembali. Identitasnya adalah 00, dan invers aditifnya adalah

0−1=0,1−1=3,2−1=2,3−1=1,0^{-1}=0,\qquad 1^{-1}=3,\qquad 2^{-1}=2,\qquad 3^{-1}=1,

di mana superskrip berarti invers di bawah penjumlahan modular. Kedua, periksa identitas vektor-real yang diandalkan oleh layer linear. Misalkan

x=[2−1],y=[13],λ=1.5.x=\begin{bmatrix}2\\-1\end{bmatrix}, \qquad y=\begin{bmatrix}1\\3\end{bmatrix}, \qquad \lambda=1.5.

Maka

λ(x+y)=1.5[32]=[4.53],\lambda(x+y) =1.5\begin{bmatrix}3\\2\end{bmatrix} =\begin{bmatrix}4.5\\3\end{bmatrix},

sedangkan

λx+λy=[3−1.5]+[1.54.5]=[4.53].\lambda x+\lambda y =\begin{bmatrix}3\\-1.5\end{bmatrix} +\begin{bmatrix}1.5\\4.5\end{bmatrix} =\begin{bmatrix}4.5\\3\end{bmatrix}.

Kedua jalur memberikan hasil yang sama karena perkalian skalar distributif terhadap penjumlahan vektor. Identitas itu bukan kebetulan yang terikat pada nilai-nilai ini; identitas tersebut adalah salah satu aturan yang membuat Rn\mathbb{R}^n menjadi ruang vektor di atas field R\mathbb{R}.

Mengapa operasi tensor mengasumsikan sebuah field

Sebagian besar perhitungan jaringan saraf menggunakan vektor, matriks, dan tensor berdimensi lebih tinggi yang entrinya merupakan pendekatan floating-point terhadap bilangan real. Sebagai contoh, dense layer berbentuk

y=Wx+b,W∈Rm×n,x∈Rn,b,y∈Rm.y=Wx+b, \qquad W\in\mathbb{R}^{m\times n},\quad x\in\mathbb{R}^{n},\quad b,y\in\mathbb{R}^{m}.

Perkalian matriks-vektor berkembang menjadi penjumlahan dan perkalian skalar real. Penambahan bias kemudian menggunakan struktur aditif yang sama. Karena skalar dimodelkan sebagai elemen R\mathbb{R}, aturan pengelompokan ulang dan distributivitas yang biasa menjelaskan mengapa implementasi ekuivalen menghasilkan hasil matematis yang sama.

Itulah sebabnya pemeriksaan bentuk dan pemeriksaan aljabar adalah pertanyaan yang berbeda:

  • Kompatibilitas bentuk: dimensi dalam WW dan xx cocok, sehingga setiap dot product memiliki jumlah suku yang benar.
  • Validitas skalar: entri menggunakan sistem aritmetika dengan aturan penjumlahan, perkalian, dan kombinasi skalar yang diharapkan.

PyTorch memperlihatkan kedua lapisan kontrak tersebut. Tensor membawa dtype, device, dan layout, sedangkan torch.matmul mengubah perilaku menurut apakah inputnya berupa vektor, matriks, atau matriks ber-batch; lihat dokumentasi Tensor Attributes dan referensi torch.matmul. Aturan bentuk dari library tidak menggantikan model field. Aturan tersebut mengimplementasikan operasi tensor tertentu yang aritmetika skalarnya biasanya dimaksudkan untuk mendekati aritmetika real.

Inilah alasan aljabar sistem training dapat membentuk kombinasi linear fitur, bobot, dan update. Kalkulus menambahkan lapisan lain: sebuah operasi juga harus terdiferensiasi, atau memiliki subgradien maupun aturan backward yang terdefinisi, agar automatic differentiation dapat menggunakannya. Field membuat aritmetika forward koheren; field tidak menjamin setiap fungsi terdiferensiasi.

Kasus batas: float mesin hanya meniru field real

Bilangan real membentuk field dalam matematika. Dtype komputer yang terbatas adalah himpunan pola bit yang dibatasi dan dibulatkan, sehingga tidak dapat memenuhi setiap aturan bilangan real secara tepat. Tiga dampak praktis mengikutinya:

  1. Pembulatan: nilai seperti 0.1 biasanya tidak memiliki representasi biner yang tepat, sehingga dua jalur yang secara matematis sama dapat berbeda pada bit terakhirnya.
  2. Overflow: mengalikan dua nilai float32 yang besar dapat menghasilkan inf, sebuah nilai di luar model bilangan real biasa yang dipakai dalam derivasi.
  3. Aritmetika pengecualian yang tidak valid: ekspresi seperti inf - inf menghasilkan nan, sehingga bahkan penyusunan ulang yang familier perlu diperiksa secara numerik.

Hal ini bukan sanggahan terhadap teorema bahwa R\mathbb{R} adalah field. Ini adalah peringatan bahwa float32 merupakan pendekatan terhadap R\mathbb{R}, dengan rentang terbatas dan perilaku pembulatan yang ditentukan oleh implementasi. Dalam praktik, gunakan toleransi yang sesuai, pantau nilai non-finite, dan perlakukan aturan field sebagai kontrak matematis yang didekati oleh implementasi.

Ada sumber kebingungan umum lain dalam kode array. Di NumPy, x * y berarti perkalian elementwise, sedangkan A @ x berarti perkalian matriks. Keduanya dapat menjadi operasi yang valid, tetapi memiliki makna matematis dan persyaratan bentuk yang berbeda. Broadcasting yang berhasil bukan bukti bahwa operasi tersebut sesuai dengan aljabar yang dimaksudkan oleh model.

Audit aljabar kecil untuk kode model

Saat derivasi atau ekspresi tensor terlihat mencurigakan, audit dalam urutan berikut:

  1. Sebutkan himpunannya. Apakah nilainya bilangan real, bilangan bulat, residu modular, probabilitas, atau yang lain?
  2. Sebutkan setiap operasi. Bedakan penjumlahan, perkalian skalar, perkalian elementwise, dan perkalian matriks.
  3. Periksa closure. Apakah setiap hasil tetap berada di himpunan dan bentuk yang dimaksudkan?
  4. Periksa jaminan yang diperlukan. Apakah digunakan invers, langkah distributif, atau pertukaran komutatif? Identifikasi aturan yang melegitimasinya.
  5. Periksa perilaku mesin. Cari pembulatan, overflow, nan, inf, dan perbandingan yang sensitif terhadap toleransi.

Audit ini mengubah “rumus seharusnya bekerja” menjadi klaim yang dapat diuji. Pelajaran berikutnya memakai gagasan yang sama untuk menentukan apakah sekumpulan representasi merupakan ruang vektor. Di sana, closure terhadap penjumlahan vektor dan perkalian skalar akan menjadi uji utama.

Uji pemahaman

Pertanyaan 1

Mengapa closure selalu dinyatakan relatif terhadap operasi tertentu?

Tampilkan solusi langkah demi langkah

Closure menanyakan apakah hasil dari satu operasi yang disebutkan tetap berada di dalam himpunan. Sebagai contoh, N0\mathbb{N}_0 tertutup terhadap penjumlahan karena 4+7=114+7=11 tetap berada di dalam himpunan, tetapi tidak tertutup terhadap pengurangan karena 4−7=−34-7=-3 keluar. Himpunannya tidak berubah; operasinya yang berbeda.

Pertanyaan 2

Apakah (N₀, +) membentuk group? Identifikasi aturan group pertama yang gagal.

Tampilkan solusi langkah demi langkah

Himpunan tersebut tertutup terhadap penjumlahan, asosiatif, dan memiliki identitas 00. Masalahnya adalah aturan invers: invers dari 77 di bawah penjumlahan adalah −7-7, tetapi −7∉N0-7\notin\mathbb{N}_0. Karena itu struktur tersebut bukan group, walaupun beberapa aturan group lainnya terpenuhi.

Pertanyaan 3

Mengapa Z adalah ring tetapi bukan field di bawah penjumlahan dan perkalian biasa?

Tampilkan solusi langkah demi langkah

Pertama, Z\mathbb{Z} adalah group aditif: setiap bilangan bulat memiliki lawan bilangan bulat, dan penjumlahan asosiatif dengan identitas 00. Perkalian bilangan bulat tertutup dan asosiatif, memiliki identitas 11, serta distributif terhadap penjumlahan, sehingga aturan ring terpenuhi. Field juga mengharuskan setiap bilangan bulat tak nol memiliki kebalikan bilangan bulat. Karena 2−1=1/2∉Z2^{-1}=1/2\notin\mathbb{Z}, syarat field gagal.

Pertanyaan 4

Dalam aritmetika modulo 5, apa invers perkalian dari 4, dan bagaimana cara memverifikasinya?

Tampilkan solusi langkah demi langkah

Uji residu tak nol sampai sebuah hasil kali kongruen dengan 11. Karena 4⋅4=164\cdot4=16 dan 16≡1(mod5)16\equiv1\pmod 5, invers dari 4 modulo 5 adalah 4. Verifikasinya adalah hasil kali 4⋅44\cdot4 lalu mengurangi hasilnya berdasarkan modulus.

Pertanyaan 5

Untuk x = [2, -1]ᵀ, y = [1, 3]ᵀ, dan λ = 1.5, hitung λ(x + y) dan λx + λy.

Tampilkan solusi langkah demi langkah

Jumlahkan terlebih dahulu: x+y=[3,2]Tx+y=[3,2]^{\mathsf T}. Penskalakan memberikan λ(x+y)=1.5[3,2]T=[4.5,3]T\lambda(x+y)=1.5[3,2]^{\mathsf T}=[4.5,3]^{\mathsf T}. Secara terpisah, λx=[3,−1.5]T\lambda x=[3,-1.5]^{\mathsf T} dan λy=[1.5,4.5]T\lambda y=[1.5,4.5]^{\mathsf T}. Menjumlahkan kedua vektor itu juga menghasilkan [4.5,3]T[4.5,3]^{\mathsf T}, yang memverifikasi distributivitas untuk contoh ini.

Pertanyaan 6

Program NumPy menggunakan A * x ketika derivasi membutuhkan A @ x. Apa yang harus diperiksa sebelum menerima hasilnya?

Tampilkan solusi langkah demi langkah

Periksa operasi yang dimaksudkan dan bentuknya. Di NumPy, * mengalikan entri satu per satu, mungkin dengan broadcasting, sedangkan @ melakukan perkalian matriks dan membutuhkan dimensi dalam yang kompatibel. Karena itu, hasil yang berhasil melalui broadcasting dapat benar secara numerik tetapi salah secara semantik. Bandingkan kode dengan persamaan model dan periksa apakah bentuk output sesuai dengan vektor atau matriks hasil derivasi.

Pertanyaan 7

Mengapa identitas tensor bernilai real dapat berbeda pada bit terakhir meskipun aljabarnya valid di atas R?

Tampilkan solusi langkah demi langkah

Derivasi memperlakukan entri sebagai bilangan real yang eksak, tetapi dtype floating point mesin menyimpan pendekatan yang dibatasi dan dibulatkan. Nilai desimal seperti 0.1 mungkin sudah tidak eksak sejak awal, dan urutan evaluasi yang berbeda dapat membulatkan pada langkah yang berbeda. Identitasnya tetap valid secara matematis; implementasi sebaiknya membandingkan hasil dengan toleransi yang mempertimbangkan skala, memantau nan dan inf, serta tidak menganggap perbedaan pada level bit sebagai kegagalan aljabar.

Sumber

  1. Mathematics for Machine Learning companion website
  2. Mathematics for Machine Learning book PDF
  3. NumPy documentation: numpy.allclose
  4. PyTorch documentation: Tensor Attributes
  5. PyTorch documentation: torch.matmul